@po-ui/ng-templates 19.32.0 → 19.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/po-ui-ng-templates.mjs +85 -14
- package/fesm2022/po-ui-ng-templates.mjs.map +1 -1
- package/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.component.d.ts +14 -0
- package/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.component.d.ts +14 -2
- package/lib/components/po-page-dynamic-search/po-page-dynamic-search-base.component.d.ts +14 -0
- package/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.d.ts +14 -0
- package/lib/components/po-page-job-scheduler/po-page-job-scheduler-base.component.d.ts +14 -0
- package/package.json +4 -4
- package/po-ui-ng-templates-19.34.0.tgz +0 -0
- package/schematics/ng-add/index.js +1 -1
- package/po-ui-ng-templates-19.32.0.tgz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"po-ui-ng-templates.mjs","sources":["../../../projects/templates/src/lib/components/enums/po-page-components-size.enum.ts","../../../projects/templates/src/lib/utils/util.ts","../../../projects/templates/src/lib/components/po-modal-password-recovery/enums/po-modal-password-recovery-modal-content.enum.ts","../../../projects/templates/src/lib/components/po-modal-password-recovery/enums/po-modal-password-recovery-type.enum.ts","../../../projects/templates/src/lib/components/po-modal-password-recovery/literals/i18n/po-modal-password-recovery-literals.ts","../../../projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery-base.component.ts","../../../projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery.service.ts","../../../projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery-error-message/po-modal-password-recovery-error-message.component.ts","../../../projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery-error-message/po-modal-password-recovery-error-message.component.html","../../../projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery.component.ts","../../../projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery.component.html","../../../projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery.module.ts","../../../projects/templates/src/lib/components/po-page-background/po-page-background.component.ts","../../../projects/templates/src/lib/components/po-page-background/po-page-background.component.html","../../../projects/templates/src/lib/components/po-page-background/po-page-background.module.ts","../../../projects/templates/src/lib/components/po-page-blocked-user/enums/po-page-blocked-user-reason.enum.ts","../../../projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user-base.component.ts","../../../projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user-contacts/po-page-blocked-user-contacts.component.ts","../../../projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user-contacts/po-page-blocked-user-contacts.component.html","../../../projects/templates/src/lib/components/po-page-blocked-user/literals/i18n/po-page-blocked-user-literals.ts","../../../projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user-reason/po-page-blocked-user-reason.component.ts","../../../projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user-reason/po-page-blocked-user-reason.component.html","../../../projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user.component.ts","../../../projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user.component.html","../../../projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user.module.ts","../../../projects/templates/src/lib/components/po-page-change-password/literals/i18n/po-page-change-password-literals.ts","../../../projects/templates/src/lib/components/po-page-change-password/po-page-change-password-base.component.ts","../../../projects/templates/src/lib/components/po-page-change-password/po-page-change-password.service.ts","../../../projects/templates/src/lib/components/po-page-change-password/po-page-change-password.component.ts","../../../projects/templates/src/lib/components/po-page-change-password/po-page-change-password.component.html","../../../projects/templates/src/lib/components/po-page-change-password/po-page-change-password.module.ts","../../../projects/templates/src/lib/services/po-page-dynamic/po-page-dynamic.service.ts","../../../projects/templates/src/lib/services/po-page-customization/po-page-customization.service.ts","../../../projects/templates/src/lib/components/po-page-dynamic-detail/po-page-dynamic-detail-actions.service.ts","../../../projects/templates/src/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.component.ts","../../../projects/templates/src/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.component.html","../../../projects/templates/src/lib/services/po-page-dynamic/po-page-dynamic.module.ts","../../../projects/templates/src/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.module.ts","../../../projects/templates/src/lib/components/po-page-dynamic-edit/po-page-dynamic-edit-actions.service.ts","../../../projects/templates/src/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.component.ts","../../../projects/templates/src/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.component.html","../../../projects/templates/src/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.module.ts","../../../projects/templates/src/lib/services/po-page-customization/po-page-customization.module.ts","../../../projects/templates/src/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter-base.component.ts","../../../projects/templates/src/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter.component.ts","../../../projects/templates/src/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter.component.html","../../../projects/templates/src/lib/components/po-page-dynamic-search/po-page-dynamic-search-base.component.ts","../../../projects/templates/src/lib/components/po-page-dynamic-search/po-page-dynamic-search.component.ts","../../../projects/templates/src/lib/components/po-page-dynamic-search/po-page-dynamic-search.component.html","../../../projects/templates/src/lib/components/po-page-dynamic-search/po-page-dynamic-search.module.ts","../../../projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-list-base.component.ts","../../../projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table-actions.service.ts","../../../projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table-literals.ts","../../../projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.ts","../../../projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.html","../../../projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table.module.ts","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-internal.ts","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.service.ts","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-base.component.ts","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-literals.ts","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-lookup.service.ts","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-job-scheduler-parameters-template/po-job-scheduler-parameters-template.directive.ts","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-job-scheduler-summary-template/po-job-scheduler-summary-template.directive.ts","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-execution/po-page-job-scheduler-execution.component.ts","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-execution/po-page-job-scheduler-execution.component.html","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-page-job-scheduler-parameters.component.ts","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-page-job-scheduler-parameters.component.html","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.ts","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.html","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.ts","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.html","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.module.ts","../../../projects/templates/src/lib/components/po-page-login/enums/po-page-login-authentication-type.enum.ts","../../../projects/templates/src/lib/components/po-page-login/po-page-login.service.ts","../../../projects/templates/src/lib/components/po-page-login/po-page-login-base.component.ts","../../../projects/templates/src/lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.ts","../../../projects/templates/src/lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.html","../../../projects/templates/src/lib/components/po-page-login/po-page-login.component.ts","../../../projects/templates/src/lib/components/po-page-login/po-page-login.component.html","../../../projects/templates/src/lib/components/po-page-login/po-page-login.module.ts","../../../projects/templates/src/lib/components/components.module.ts","../../../projects/templates/src/lib/services/services.module.ts","../../../projects/templates/src/lib/po-templates.module.ts","../../../projects/templates/src/po-ui-ng-templates.ts"],"sourcesContent":["/**\n * @description\n *\n * Tamanhos da propriedade `p-components-size` para componentes de formulário no template. A medida `small` está\n * disponível apenas para acessibilidade AA.\n */\nexport enum PoPageComponentsSize {\n /** Aplica a medida `small` do componente. */\n Small = 'small',\n\n /** Aplica a medida `medium` do componente. */\n Medium = 'medium'\n}\n","import { poLocaleDefault, poLocales, PoThemeA11yEnum, PoThemeService } from '@po-ui/ng-components';\nimport { PoPageComponentsSize } from '../components/enums/po-page-components-size.enum';\n\n/**\n * Retorna o idioma atual do navegador\n */\nexport function getBrowserLanguage(): string {\n // navigator.userLanguage is the value for IE10\n return navigator.language || navigator['userLanguage'];\n}\n\n/**\n * Retorna o idioma do navegador, com somente as duas primeiras letras. Por exemplo: \"pt\" ou \"es\".\n *\n * Caso o valor retornado pelo navegador não estiver dentro dos idiomas suportados pelo PO,\n * será retornado a linguagem padrão (poLocaleDefault).\n */\nexport function getShortBrowserLanguage(): string {\n const language = (getBrowserLanguage() || poLocaleDefault).toLowerCase().substring(0, 2);\n\n if (!poLocales.includes(language)) {\n return poLocaleDefault;\n }\n\n return language;\n}\n\nexport function convertToBoolean(val: any): boolean {\n if (typeof val === 'string') {\n val = val.toLowerCase().trim();\n return val === 'true' || val === 'on' || val === '';\n }\n\n if (typeof val === 'number') {\n return val === 1;\n }\n\n return !!val;\n}\n\nexport function convertToInt(value: any, valueDefault?: any): number {\n const validNumber = parseInt(value, 10);\n const validDefaultValue = parseInt(valueDefault, 10);\n const defaultValue = validDefaultValue || validDefaultValue === 0 ? validDefaultValue : undefined;\n\n return validNumber || validNumber === 0 ? validNumber : defaultValue;\n}\n\nexport function isTypeof(object: any, type: any) {\n return typeof object === type;\n}\n\n/**\n *\n * @param fn Função que será executada dentro do contexto. Podendo ser o nome da função\n * ou a referência da mesma.\n *\n * @param context Contexto do qual a função será executada.\n */\nexport function callFunction(fn: any, context: any, param?): void {\n if (isTypeof(fn, 'function')) {\n fn.call(context, param);\n } else {\n context[fn](param);\n }\n}\n\nexport function convertIsoToDate(value: string, start: boolean, end: boolean) {\n if (value) {\n const day = parseInt(value.substring(8, 10), 10);\n const month = parseInt(value.substring(5, 7), 10);\n const year = parseInt(value.substring(0, 4), 10);\n if (start) {\n const date = new Date(year, month - 1, day, 0, 0, 0);\n\n setYearFrom0To100(date, year);\n\n return date;\n } else if (end) {\n const date = new Date(year, month - 1, day, 23, 59, 59);\n\n setYearFrom0To100(date, year);\n\n return date;\n } else {\n const milliseconds = Date.parse(value);\n const timezone = new Date().getTimezoneOffset() * 60000;\n return new Date(milliseconds + timezone);\n }\n }\n}\n\nexport function convertDateToISOExtended(date: Date, time?: string) {\n if (date) {\n const getMonth = date.getMonth() + 1;\n const day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();\n const month = getMonth < 10 ? '0' + getMonth : getMonth;\n const year = formatYear(date.getFullYear());\n\n const dateString = date.toString();\n\n if (time) {\n return year + '-' + month + '-' + day + time;\n } else {\n return (\n year +\n '-' +\n month +\n '-' +\n day +\n 'T' +\n dateString.substring(16, 24) +\n dateString.substring(28, 31) +\n ':' +\n dateString.substring(31, 33)\n );\n }\n } else {\n return null;\n }\n}\n\n/**\n * Transforma o ano em uma string no formato yyyy e caso o ano seja menor que 1000 preenche com zeros a esquerda.\n *\n * @param year Ano\n */\nexport function formatYear(year: number) {\n if (year >= 1000) {\n return year.toString();\n }\n\n if (year > 99 && year < 1000) {\n return `0${year}`;\n }\n\n if (year > 9 && year < 100) {\n return `00${year}`;\n }\n\n if (year >= 0 && year < 10) {\n return `000${year}`;\n }\n}\n\n/**\n * @deprecated use getDefaultSizeFn\n *\n * Retorna o tamanho padrão dos componentes conforme o nível de acessibilidade.\n */\nexport function getDefaultSize(poThemeService: PoThemeService): string {\n return poThemeService.getA11yDefaultSize() === 'small' ? PoPageComponentsSize.Small : PoPageComponentsSize.Medium;\n}\n\n/**\n * Retorna o tamanho padrão dos componentes conforme o nível de acessibilidade.\n */\nexport function getDefaultSizeFn(): string {\n return getA11yDefaultSize() === 'small' ? PoPageComponentsSize.Small : PoPageComponentsSize.Medium;\n}\n\nexport function isEquals(value, comparedValue) {\n return JSON.stringify(value) === JSON.stringify(comparedValue);\n}\n\n/**\n * Caso o ano original da data seja entre 0 e 100 atribui esse valor ao ano, pois o `new Date` do javascript transforma o ano para 190X.\n *\n * @param date Data\n * @param year Ano original\n */\nexport function setYearFrom0To100(date: Date, year: number) {\n if (year >= 0 && year < 100) {\n date.setFullYear(year);\n }\n}\n\nexport function sortOptionsByProperty(options: Array<any>, property: string) {\n options.sort((optionA, optionB) => {\n optionA = optionA[property].toString().toLowerCase();\n optionB = optionB[property].toString().toLowerCase();\n\n if (optionA < optionB) {\n return -1;\n }\n if (optionA > optionB) {\n return 1;\n }\n return 0;\n });\n}\n\nexport function removeDuplicatedOptions(list: Array<any>) {\n for (let i = 0; i < list.length; i++) {\n if (i === 0) {\n continue;\n }\n\n if (list.findIndex(op => op.value === list[i].value) !== i) {\n list.splice(i, 1);\n i--;\n }\n }\n}\n\nexport function removeUndefinedAndNullOptions(list: Array<any>) {\n for (let i = 0; i < list.length; i++) {\n if (list[i].value === undefined || list[i].value === null) {\n list.splice(i, 1);\n i--;\n }\n }\n}\n\nexport function validValue(value: any) {\n return (value !== null && value !== undefined && value !== '') || value === false;\n}\n\nexport function isExternalLink(url): boolean {\n return url ? url.startsWith('http') : false;\n}\n\nexport function openExternalLink(url): void {\n window.open(url, '_blank');\n}\n\nexport function getFormattedLink(link: string): string {\n let formattedLink = '';\n // Retira todos os pontos no começo da URL.\n if (link) {\n formattedLink = link.replace(/^(\\.)+/g, '');\n }\n // Verifica se foi utilizado uma rota que não comece com barra.\n if (!formattedLink.startsWith('/')) {\n formattedLink = '/'.concat(formattedLink);\n }\n return formattedLink;\n}\n\n/**\n * Método responsável por ordenar dois valores.\n *\n * @param leftSide Primeiro valor a ser comparado.\n * @param rightSide Segundo valor a ser comparado.\n * @param ascending Determina se será em ordem ascendente ou descendente.\n */\nexport function sortValues(leftSide: string, rightSide: string, ascending: boolean = true): number {\n if (ascending) {\n if (leftSide < rightSide) {\n return -1;\n } else if (leftSide > rightSide) {\n return 1;\n }\n } else if (ascending === false) {\n if (leftSide < rightSide) {\n return 1;\n } else if (leftSide > rightSide) {\n return -1;\n }\n }\n return 0;\n}\n\nexport function validateDateRange(date: Date, dateStart: Date, dateEnd: Date) {\n if (dateStart && dateEnd) {\n return date >= dateStart && date <= dateEnd;\n } else if (dateStart && !dateEnd) {\n return date >= dateStart;\n } else if (!dateStart && dateEnd) {\n return date <= dateEnd;\n } else {\n return true;\n }\n}\n\nexport function capitalizeFirstLetter(text: string): string {\n return `${text.charAt(0).toUpperCase()}${text.slice(1)}`;\n}\n\n/**\n * Mapeia um novo array apenas com as propriedades definidas pelo desenvolvedor baseado em um array de\n * origem.\n *\n * Exemplo:\n *\n * ```\n * const people = [\n * { id: 1, name: 'Fulano', birthdate: '1980-11-01', genre: 'Male', city: 'São Paulo', dependents: 2 },\n * { id: 2, name: 'Beltrano', birthdate: '1997-01-21', genre: 'Female', city: 'Joinville', dependents: 0 },\n * { id: 3, name: 'Siclano', birthdate: '1995-07-15', genre: 'Male', city: 'Joinville', dependents: 0 }\n * ];\n *\n * const properties = ['id', 'name'];\n *\n * const idAndName = mapArrayByProperties(people, properties);\n *\n * console.log(idAndName); // [{ id: 1, name: 'Fulano' }, { id: 2, name: 'Beltrano' }, { id: 3, name: 'Siclano' }]\n * ```\n *\n * Um outro uso para o método é \"parear\" todos os objetos do array com as mesmas propriedades.\n *\n * ```\n * const customers = [\n * { id: 1, name: 'Fulano', city: 'São Paulo', dependents: 2 }, // sem genre\n * { id: 2, name: 'Beltrano', genre: 'Female', city: 'Joinville' }, // sem dependents\n * { id: 3, name: 'Siclano', genre: 'Male', city: 'Joinville', dependents: 0 }\n * ];\n * const properties = ['id', 'name', 'city', 'genre', 'dependents'];\n *\n * const pattern = mapArrayByProperties(customers, properties);\n * console.log(pattern);\n *\n * // [\n * // { id: 1, name: 'Fulano', city: 'São Paulo', genre: undefined, dependents: 2 },\n * // { id: 2, name: 'Beltrano', city: 'Joinville', genre: 'Female', dependents: undefined },\n * // { id: 3, name: 'Siclano', city: 'Joinville', genre: 'Male', dependents: 0 }\n * // ]\n * ```\n *\n * @param items {Array<any>} Array de items original.\n * @param properties {Array<string>} Array de string com a lista de propriedades que devem ser retornadas.\n *\n * @returns Array<any>\n */\nexport function mapArrayByProperties(items: Array<any> = [], properties: Array<string> = []): Array<any> {\n return items.map(item => mapObjectByProperties(item, properties));\n}\n\n/**\n * Mapeia um novo objeto apenas com as propriedades definidas pelo desenvolvedor.\n *\n * Exemplo:\n *\n * ```\n * const person = { id: 1, name: 'Fulano', birthdate: '1980-11-01', genre: 'Male', city: 'São Paulo', dependents: 2 };\n *\n * const properties = ['id', 'name'];\n *\n * const idAndName = mapObjectByProperties(person, properties);\n *\n * console.log(idAndName); // { id: 1, name: 'Fulano' }\n * ```\n *\n * @param object {Array<any>} Array de items original.\n * @param properties {Array<string>} Array de string com a lista de propriedades que devem ser retornadas.\n *\n * @returns Array<any>\n */\nexport function mapObjectByProperties(object: any = {}, properties: Array<string> = []) {\n const getSelectedProperties = (selectedProperties, property) => ({\n ...selectedProperties,\n [property]: object[property]\n });\n\n return properties.reduce(getSelectedProperties, {});\n}\n\n/**\n * Retorna os valores de um objeto dentro de um array.\n *\n * > Simula o Object.values(obj), o mesmo deve ser removido assim que a versão typescrit for atualizada.\n *\n * @param object Objeto de onde será pego os valores.\n */\nexport function valuesFromObject(object: any = {}): Array<any> {\n return Object.keys(object).map(property => object[property]);\n}\n\n/**\n * adiciona 0 no tempo informado, caso menor q 10\n *\n * @param time\n */\nexport function addZero(time: number) {\n if (!time) {\n return '00';\n }\n\n if (time < 10) {\n return `0${time}`;\n }\n\n return time;\n}\n\n/**\n * Remove do objeto as propriedades especificadas.\n *\n * Exemplo:\n *\n * ```\n * key: ['id', 'cpf']\n * newItemValue: { id: '123', cpf: '456', name: 'Test' }\n * Resultado: { name: 'Test' }\n * ```\n *\n * @param keys lista de propriedades para ser removida do objeto.\n * @param newItemValue objeto que se deseja remover as propriedades.\n * @returns objeto sem as propriedades especificadas.\n */\nexport function removeKeysProperties(keys: Array<any>, newItemValue: any) {\n keys.forEach(key => delete newItemValue[key]);\n return newItemValue;\n}\n\n/**\n * Remove objetos duplicados.\n *\n * Exemplo:\n *\n * ```\n * item: [{country: 'japao'}, {country: 'brasil'} , {country: 'china'}]\n * item2: [{country: 'chile'}, {country: 'brasil'}, {country: 'canada'}]\n * key: 'country'\n * Resultado:\n * item2 = [{country: 'chile'}, {country: 'canada'} ]\n * ```\n *\n * @param item lista comparada.\n * @param item2 lista para remover items duplicados.\n * @param key propriedade que será utilizada para realizar a comparação.\n */\nexport function removeDuplicateItems(item, item2, key) {\n const uniqueValues = new Set(item.map(entry => entry[key]));\n item2.splice(0, item2.length, ...item2.filter(entry => !uniqueValues.has(entry[key])));\n}\n\n/**\n * Recebe dois arrays de objetos e remove os itens duplicados utilizando uma propriedade(key) para comparação.\n *\n * Exemplo:\n *\n * ```\n * item: [{country: 'japao'}, {country: 'brasil'} , {country: 'china'}]\n * item2: [{country: 'chile'}, {country: 'brasil'}, {country: 'canada'}]\n * key: '[country]'\n * Resultado do retorno:\n * [{country: 'chile'}, {country: 'canada'}, {country: 'japao'}, {country: 'china'}]\n * ```\n *\n *\n * @param item : primeira lista de itens.\n * @param item2 : segunda lista de itens.\n * @param key : um array de propriedades que vão ser utilizadas para a comparação.\n */\nexport function removeDuplicateItemsWithArrayKey(item, item2, keys) {\n const newKey = keys.length ? keys : ['id'];\n\n const combinedArray = item.concat(item2);\n return combinedArray.filter(\n (obj, index) => index === combinedArray.findIndex(innerObj => newKey.every(key => innerObj[key] === obj[key]))\n );\n}\n\n/**\n * Recebe um array de objetos para ordenação utilizando chave como comparativo e\n * se a order é crescente(true) ou descrescente(false)\n *\n * Exemplo:\n *\n * ```\n * items: [{country: 'japao'}, {country: 'brasil'} , {country: 'china'}]\n * key: 'country'\n * isAscendingOrder: true\n * Resultado do retorno:\n * [{country: 'brasil'}, {country: 'china'} , {country: 'japao'}]\n * ```\n *\n *\n * @param items : lista de itens.\n * @param key : propriedade utilizada na comparação.\n * @param isAscendingOrder : ordenação crescente ou descrescente.\n */\nexport function sortArrayOfObjects(items, key, isAscendingOrder) {\n return items.sort((a, b) => {\n const valueA = a[key];\n const valueB = b[key];\n\n if (typeof valueA === 'number' && typeof valueB === 'number') {\n return isAscendingOrder ? valueA - valueB : valueB - valueA;\n } else {\n const compareResult = valueA.toString().localeCompare(valueB.toString());\n return isAscendingOrder ? compareResult : -compareResult;\n }\n });\n}\n\n/**\n * @deprecated use validateSizeFn\n *\n * Valida e retorna um tamanho permitido para os componentes, considerando a acessibilidade.\n */\nexport function validateSize(value: string, poThemeService: PoThemeService): string {\n if (value && Object.values(PoPageComponentsSize).includes(value as PoPageComponentsSize)) {\n if (value === PoPageComponentsSize.Small && poThemeService.getA11yLevel() !== 'AA') {\n return PoPageComponentsSize.Medium;\n }\n return value;\n }\n return getDefaultSize(poThemeService);\n}\n\n/**\n * Valida e retorna um tamanho permitido para os componentes, considerando a acessibilidade.\n */\nexport function validateSizeFn(value: string): string {\n if (value && Object.values(PoPageComponentsSize).includes(value as PoPageComponentsSize)) {\n if (value === PoPageComponentsSize.Small && getA11yLevel() !== 'AA') {\n return PoPageComponentsSize.Medium;\n }\n return value;\n }\n return getDefaultSizeFn();\n}\n\n/**\n * Retorna a preferência global de tamanho dos componentes.\n *\n * @returns `'small'` ou `'medium'`.\n */\nexport function getA11yDefaultSize(): string {\n const defaultSize = localStorage.getItem('po-default-size');\n const a11yLevel = document.documentElement.getAttribute('data-a11y');\n\n return defaultSize === 'small' && a11yLevel === 'AA' ? 'small' : 'medium';\n}\n\n/**\n * Retorna o nível de acessibilidade configurado no tema.\n * Se não estiver configurado, retorna `AAA` como padrão.\n * @returns {PoThemeA11yEnum} O nível de acessibilidade, que pode ser `AA` ou `AAA`.\n */\nexport function getA11yLevel(): PoThemeA11yEnum {\n const a11yLevel = document.documentElement.getAttribute('data-a11y');\n\n return a11yLevel === 'AA' ? PoThemeA11yEnum.AA : PoThemeA11yEnum.AAA;\n}\n","/**\n * @docsPrivate\n *\n * @description\n *\n * Enum para definição do tipo de conteúdo exibido na modal.\n */\nexport enum PoModalPasswordRecoveryModalContent {\n /** Exibição de modal contendo campo para preenchimento de email ou número de telefone */\n Email = 'email',\n\n /** Exibição de modal contendo campo para inserção de código enviado por SMS */\n SMSCode = 'smsCode',\n\n /** Exibição de modal de confirmação de envio */\n Confirmation = 'confirmation'\n}\n","/**\n * @usedBy PoModalPasswordRecoveryComponent\n *\n * @description\n *\n * *Enum* para especificação do tipo de recuperação de senha.\n */\nexport enum PoModalPasswordRecoveryType {\n /** Possibilita ao usuário optar por envio via email ou SMS */\n All = 'all',\n\n /** Definição para recuperação apenas por email */\n Email = 'email',\n\n /** Definição para recuperação apenas por SMS */\n SMS = 'sms'\n}\n","export const poModalPasswordRecoveryLiterals = {\n en: <any>{\n cancelButton: 'Cancel',\n closeButton: 'Close',\n continueButton: 'Continue',\n email: 'e-mail',\n emailErrorMessagePhrase: 'Invalid e-mail format',\n emailSentConfirmationPhrase: `We have sent the instructions and new password creation link to your e-mail.\n If you did not receive it after a few minutes, check your spam box or click Resend.`,\n emailSentTitle: 'E-mail sent',\n forgotPasswordTitle: 'Forgot your password?',\n insertCode: 'Type the code',\n insertEmail: 'Enter your e-mail',\n insertPhone: 'Enter your mobile number',\n phoneErrorMessagePhrase: 'Invalid phone number',\n prepositionIn: 'in',\n prepositionOr: 'or',\n recoveryPasswordPhrase: 'To recover your password we will send you a {0} with instructions.',\n resendEmailButton: 'Resend',\n resendSmsCodePhrase: 'If the code does not arrive within a few minutes, please send it again.',\n sendAgainPhrase: 'If the code does not arrive within a few minutes',\n sendAgain: 'send again.',\n sendButton: 'Submit',\n sentSmsCodePhrase: 'We sent a code for your mobile phone.',\n sms: 'SMS',\n smsCodeErrorMessagePhrase: 'Invalid code. Please re-enter or contact support',\n supportContact: 'If you do not have access to {0} contact support',\n telephone: 'telephone',\n typeCodeTitle: 'Enter sent code'\n },\n es: <any>{\n cancelButton: 'Cancelar',\n closeButton: 'Cerrar',\n continueButton: 'Continuar',\n email: 'e-mail',\n emailErrorMessagePhrase: 'Formato de correo electrónico no válido',\n emailSentConfirmationPhrase: `Enviamos las instrucciones y enlace de creación de nueva contraseña para su correo electrónico.\n Si no ha recibido después de unos minutos, compruebe su caja de spam o haga clic en Reenviar`,\n emailSentTitle: 'E-mail enviado',\n forgotPasswordTitle: 'Olvidaste tu contraseña?',\n insertCode: 'Introduzca el código',\n insertEmail: 'Introduce tu e-mail',\n insertPhone: 'Introduce tu número de celular',\n phoneErrorMessagePhrase: 'Número de teléfono no válido',\n prepositionIn: 'en',\n prepositionOr: 'u',\n recoveryPasswordPhrase: 'Para recuperar su contraseña vamos a enviar un {0} con instrucciones.',\n resendEmailButton: 'Reenviar',\n resendSmsCodePhrase: 'Si el código no llega dentro de unos minutos, vuelva a enviar.',\n sendAgain: 'envíe de nuevo.',\n sendAgainPhrase: 'Si el código no llega dentro de unos minutos',\n sendButton: 'Enviar',\n sentSmsCodePhrase: 'Enviamos un código para su celular.',\n sms: 'SMS',\n smsCodeErrorMessagePhrase: 'Código no válido. Escriba de nuevo o póngase en contacto con el soporte',\n supportContact: 'Si no tiene acceso a {0} póngase en contacto con el soporte',\n telephone: 'teléfono',\n typeCodeTitle: 'Escribir código enviado'\n },\n pt: <any>{\n cancelButton: 'Cancelar',\n closeButton: 'Fechar',\n continueButton: 'Continuar',\n email: 'e-mail',\n emailErrorMessagePhrase: 'Formato de e-mail inválido',\n emailSentConfirmationPhrase: `Enviamos as instruções e link de criação de nova senha para o seu e-mail.\n Caso não tenha recebido após alguns minutos, verifique sua caixa de spam ou clique em Reenviar.`,\n emailSentTitle: 'E-mail enviado',\n forgotPasswordTitle: 'Esqueceu sua senha?',\n insertCode: 'Digite o código',\n insertEmail: 'Insira seu e-mail',\n insertPhone: 'Insira seu número de celular',\n phoneErrorMessagePhrase: 'Número de telefone inválido',\n prepositionIn: 'em',\n prepositionOr: 'ou',\n recoveryPasswordPhrase: 'Para recuperar sua senha vamos enviar um {0} com instruções.',\n resendEmailButton: 'Reenviar',\n resendSmsCodePhrase: 'Se o código não chegar dentro de alguns minutos envie novamente',\n sendAgain: 'envie novamente.',\n sendAgainPhrase: 'Se o código não chegar dentro de alguns minutos',\n sendButton: 'Enviar',\n sentSmsCodePhrase: 'Enviamos um código para seu celular cadastrado.',\n sms: 'SMS',\n smsCodeErrorMessagePhrase: 'Código inválido. Digite novamente ou contacte o suporte',\n supportContact: 'Se não tiver acesso ao {0} contacte o suporte',\n telephone: 'telefone',\n typeCodeTitle: 'Digitar código enviado'\n },\n ru: <any>{\n cancelButton: 'отменить',\n closeButton: 'близко',\n continueButton: 'близко',\n email: 'по электронной почте',\n emailErrorMessagePhrase: 'Неверный формат электронной почты',\n emailSentConfirmationPhrase: `Мы отправили инструкции и новую ссылку для создания пароля для вашей электронной почты.\nЕсли вы не получили его в течение нескольких минут, установите флажок Спам или нажмите Далее.`,\n emailSentTitle: 'Письмо отправлено',\n forgotPasswordTitle: 'Забыли пароль?',\n insertCode: 'Введите код',\n insertEmail: 'Введите адрес электронной почты',\n insertPhone: 'Введите номер вашего мобильного телефона',\n phoneErrorMessagePhrase: 'Неверный номер телефона',\n prepositionIn: 'в',\n prepositionOr: 'или',\n recoveryPasswordPhrase: 'Для восстановления вашего пароля мы вышлем {0} с инструкциями.',\n resendEmailButton: 'Отправить еще раз',\n resendSmsCodePhrase: 'Если код не приходит через несколько минут, попробуйте еще раз.',\n sendAgain: 'отправить снова.',\n sendAgainPhrase: 'Если код не приходит через несколько минут',\n sendButton: 'послать',\n sentSmsCodePhrase: 'Мы отправляем код на ваш зарегистрированный мобильный телефон.',\n sms: 'SMS',\n smsCodeErrorMessagePhrase: 'Неверный код. Повторите или обратитесь в службу поддержки',\n supportContact: 'Если у вас нет доступа к {0}, обратитесь в службу поддержки',\n telephone: 'телефон',\n typeCodeTitle: 'Введите отправленный код'\n }\n};\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\n\nimport { PoLanguageService, poLocaleDefault } from '@po-ui/ng-components';\n\nimport { getDefaultSizeFn, validateSizeFn } from '../../utils/util';\nimport { PoModalPasswordRecoveryType } from './enums/po-modal-password-recovery-type.enum';\nimport { poModalPasswordRecoveryLiterals } from './literals/i18n/po-modal-password-recovery-literals';\n\nconst PoModalPasswordRecoveryDefaultMaxLength = 15;\nconst PoModalPasswordRecoveryDefaultMinLength = 15;\nconst PoModalPasswordRecoveryDefaultPhone = '(99) 99999-9999';\nconst PoModalPasswordRecoveryTypeDefault: PoModalPasswordRecoveryType = PoModalPasswordRecoveryType.Email;\n\n/**\n * @description\n *\n * O componente `po-modal-password-recovery` é utilizado como template para solicitação de troca de senha.\n *\n * É composto por uma modal que possui três telas, cada uma com as seguintes características:\n *\n * - A primeira possui campos para preenchimento de email ou número de telefone;\n * - Tela com campo para preenchimento de código SMS enviado para o número de telefone enviado;\n * - A terceira se trata de uma confirmação de envio de link para a caixa de email do usuário.\n *\n *\n * A propriedade `p-url-recovery` automatiza a rotina do componente e simplifica o processo\n * para recuperação de senha, bastando definir uma url para requisição dos recursos.\n * Seu detalhamento para uso pode ser visto logo abaixo em *propriedades*.\n * Caso julgue necessário, pode-se também definir manualmente a rotina do componente.\n *\n *\n * Para a modal de digitação de código SMS, é possível definir uma mensagem de erro\n * customizada com a propriedade `p-code-error` e há um link para\n * reenvio de código por SMS. Ao reenviar, o evento `p-code-submit` envia um objeto com o telefone do usuário e a quantidade\n * de vezes em que o usuário fez a solicitação de reenvio.\n *\n * > É indicada a utilização da tela de digitação para envio de código SMS apenas\n * se a opção por envio SMS for disponibilizada para o usuário.\n *\n *\n * A modal de confirmação contém uma ação de reenvio e o evento `p-submit`\n * é quem passa o objeto contendo o email em conjunto com a quantidade de tentativas de reenvio.\n *\n * > A tela de confirmação é indicada para quando o usuário solicitar a troca através do email.\n *\n * > Os textos das modals são pré-definidos, imutáveis e são traduzidos de acordo com o idioma do *browser* (pt, en e es)\n *\n * Para que as imagens sejam exibidas corretamente, é necessário incluir o caminho delas ao projeto. Para isso, edite\n * o *assets* no arquivo **angular.json** da aplicação na seguinte ordem:\n * ```\n * \"assets\": [\n * \"src/assets\",\n * \"src/favicon.ico\",\n * {\n * \"glob\": \"**\\/*\",\n * \"input\": \"node_modules/@po-ui/style/images\",\n * \"output\": \"assets/images\"\n * }\n * ]\n * ```\n */\n@Directive()\nexport abstract class PoModalPasswordRecoveryBaseComponent {\n /**\n * @optional\n *\n * @description\n *\n * Definição de mensagem de erro customizada para quando o usuário passar um código SMS inválido ou errado.\n */\n @Input('p-code-error') codeError: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Endpoint usado pelo template para requisição do recurso. Quando preenchido,\n * o métodos `p-submit` e `p-submit-code` serão ignorados e o componente adquirirá automatização\n * para o processo de solicitação de troca de senha.\n *\n * ### Processos\n * Ao digitar um valor válido no campo de email/telefone e pressionar **enviar**,\n * o componente fará uma requisição `POST` na url especificada nesta propriedade passando o objeto contendo o valor definido pelo usuário.\n *\n * ```\n * body {\n * email: email,\n * retry?: retry\n * }\n * ```\n *\n *\n * #### Recuperação por email\n * Para a recuperação de senha por **email**, o código de resposta HTTP de status esperado é `204`.\n *\n * Em caso de **sucesso**, será exibida a modal de confirmação de e-mail para o usuário.\n *\n *\n * > A ação **Reenviar** na tela de confirmação efetua uma nova requisição\n * passando-se o objeto com incremento para o valor da propriedade **retry**.\n *\n * *Processo finalizado.*\n *\n *\n * #### Recuperação por SMS\n * Se a opção de recuperação for por **SMS**, o código de status de sucesso deve ser `200`.\n * Em caso de **sucesso**, abre-se a modal de digitação de código SMS e a resposta\n * desta requisição deve retornar uma definição de dados abaixo:\n *\n * ```\n * 200:\n * {\n * hash: hash,\n * urlValidationCode?: url\n * }\n * ```\n *\n *\n * - O **hash** será o código de validação da solicitação do SMS para ser enviado juntamente com o código de verificação do SMS;\n * - **urlValidationCode** é a url usada para validação do código enviado por SMS.\n *\n *\n * > Caso não seja passado urlValidationCode, o endpoint usado para validação do código será `<p-url-recovery>/validation`.\n *\n *\n * #### Validação do código SMS\n * Ao digitar um valor válido no campo de código SMS e pressionar **continuar**, o componente fará uma requisição `POST` contendo:\n *\n * ```\n * POST /<p-url-recovery>/validation OU /<urlValidationCode>\n * Body {\n * hash: hash,\n * code: code\n * }\n * ```\n *\n *\n * O código de resposta HTTP de status esperado é `200`.\n *\n * Em caso de **erro** na validação do código SMS, a modal se mantém com o campo para digitação\n * de código SMS\n *\n *\n * > Pode-se atribuir a mensagem de erro (message) para o atributo `p-code-error` conforme retorno abaixo:\n *\n * ```\n * 400\n * {\n * error {\n * message: 'Error Message'\n * }\n * }\n * ```\n *\n *\n * Em caso de **sucesso**, espera-se a resposta desta requisição retornando a seguinte definição:\n *\n * ```\n * 200:\n * {\n * token: token,\n * urlChangePassword?: url\n * }\n * ```\n *\n *\n * - **token**: Token de alteração de senha;\n * - **urlChangePassword**: url para o formulário de alteração de senha.\n *\n *\n * O componente está configurado para redirecionar para a url estabelecida em `urlChangePassword`.\n *\n * > Caso não seja passado valor para urlChangePassword,\n * a url usada para validação será a `<p-url-recovery>/changePassword?token=<token>`.\n *\n * *Processo finalizado.*\n */\n @Input('p-url-recovery') urlRecovery?: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Ação contendo como parâmetro o código enviado por SMS e digitado pelo usuário.\n *\n * > Esta propriedade será ignorada se for definido valor para a propriedade `p-url-recovery`.\n */\n @Output('p-code-submit') codeSubmit = new EventEmitter<any>();\n\n /**\n * @optional\n *\n * @description\n *\n * Ação contendo o email como parâmetro e que é executada quando o usuário clica sobres os botões de 'enviar' e 'reenviar' e-mail.\n *\n * > Esta propriedade será ignorada se for definido valor para a propriedade `p-url-recovery`.\n */\n @Output('p-submit') submit = new EventEmitter<any>();\n\n email: string;\n maxLength = PoModalPasswordRecoveryDefaultMaxLength;\n minLength = PoModalPasswordRecoveryDefaultMinLength;\n modalPasswordRecoveryTypeAll: boolean;\n phone: string;\n smsCode: string;\n smsCodeErrorMessage: string;\n\n literals: {\n cancelButton: string;\n closeButton: string;\n continueButton: string;\n email: string;\n emailErrorMessagePhrase: string;\n emailSentConfirmationPhrase: string;\n emailSentTitle: string;\n forgotPasswordTitle: string;\n insertCode: string;\n insertEmail: string;\n insertPhone: string;\n phoneErrorMessagePhrase: string;\n prepositionIn: string;\n prepositionOr: string;\n recoveryPasswordPhrase: string;\n resendEmailButton: string;\n resendSmsCodePhrase: string;\n sendAgain: string;\n sendAgainPhrase: string;\n sendButton: string;\n sms: string;\n smsCode: string;\n smsCodeErrorMessagePhrase: string;\n sentSmsCodePhrase: string;\n supportContact: string;\n telephone: string;\n typeCodeTitle: string;\n } = poModalPasswordRecoveryLiterals[poLocaleDefault];\n\n private _componentsSize?: string;\n private _contactEmail: string;\n private _phoneMask = PoModalPasswordRecoveryDefaultPhone;\n private _type: PoModalPasswordRecoveryType = PoModalPasswordRecoveryTypeDefault;\n\n /**\n * @optional\n *\n * @description\n *\n * Define o tamanho dos componentes de formulário no modal:\n * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n * - `medium`: aplica a medida medium de cada componente.\n *\n * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n *\n * @default `medium`\n */\n @Input('p-components-size') set componentsSize(value: string) {\n this._componentsSize = validateSizeFn(value);\n }\n\n get componentsSize(): string {\n return this._componentsSize ?? getDefaultSizeFn();\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Definição do e-mail que é exibido na mensagem para contato de suporte.\n */\n @Input('p-contact-email') set contactEmail(value: string) {\n this._contactEmail = value;\n\n this.smsCodeErrorMessage = this.concatenateSMSErrorMessage(value);\n }\n\n get contactEmail() {\n return this._contactEmail;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Definição da mascara do campo de telefone.\n *\n * @default `(99) 99999-9999`\n */\n @Input('p-phone-mask') set phoneMask(value: string) {\n this._phoneMask = value || PoModalPasswordRecoveryDefaultPhone;\n this.minLength = this.maxLength = this._phoneMask.length;\n }\n\n get phoneMask() {\n return this._phoneMask;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Define o tipo de recuperação de senha que será exibido.\n *\n * @default `PoModalPasswordRecoveryType.Email`\n *\n */\n @Input('p-type') set type(value: PoModalPasswordRecoveryType) {\n this._type = (<any>Object).values(PoModalPasswordRecoveryType).includes(value)\n ? value\n : PoModalPasswordRecoveryTypeDefault;\n }\n\n get type() {\n return this._type;\n }\n\n constructor(languageService: PoLanguageService) {\n this.literals = {\n ...this.literals,\n ...poModalPasswordRecoveryLiterals[languageService.getShortLanguage()]\n };\n }\n\n private concatenateSMSErrorMessage(value: string) {\n const literalCodeErrorMessage = this.literals.smsCodeErrorMessagePhrase;\n\n return value && value !== ''\n ? `${literalCodeErrorMessage} ${this.literals.prepositionIn} ${value}.`\n : literalCodeErrorMessage;\n }\n\n /**\n * Acão para conclusão de processo e fechamento da modal. Indica-se sua utilização\n * para após o envio e validação do código SMS enviado pelo usuário.\n *\n * > Nas modals em que há a ação de 'cancelar' dispensa-se o uso desta ação pois o componente já trata o fechamento da modal.\n */\n abstract completed(): void;\n\n /**\n * Abre a modal de preenchimento de email ou número de telefone para solicitação de troca de senha.\n */\n abstract open(): void;\n\n /**\n * Abre a modal de confirmação de envio de email.\n */\n abstract openConfirmation(): void;\n\n /**\n * Abre a modal de preenchimento do código SMS enviado ao usuário.\n */\n abstract openSmsCode(): void;\n}\n","import { HttpClient, HttpParams, HttpResponse } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { PoModalPasswordRecovery } from './interfaces/po-modal-password-recovery.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PoModalPasswordRecoveryService {\n private http = inject(HttpClient);\n\n post(\n urlRecovery: string,\n item: PoModalPasswordRecovery,\n params?: HttpParams | { [param: string]: string | Array<string> }\n ): Observable<HttpResponse<object>> {\n return this.http.post<any>(urlRecovery, item, { observe: 'response', params: params });\n }\n}\n","import { Component, Input } from '@angular/core';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente utilizado para exibição da mensagem customizada de erro em um campo de formulário.\n */\n@Component({\n selector: 'po-modal-password-recovery-error-message',\n templateUrl: './po-modal-password-recovery-error-message.component.html',\n standalone: false\n})\nexport class PoModalPasswordRecoveryErrorMessageComponent {\n /** Texto exibido na mensagem de erro. */\n @Input('p-text') text: string;\n}\n","<div class=\"po-field-container-bottom-text-error po-field-container-error-item\">\n <po-icon p-icon=\"ICON_EXCLAMATION\"></po-icon>\n <span class=\"po-field-container-error-text\">{{ text }}</span>\n</div>\n","import { Component, OnDestroy, ViewChild, inject } from '@angular/core';\nimport { AbstractControl, NgForm } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\n\nimport {\n PoI18nPipe,\n PoLanguageService,\n PoModalAction,\n PoModalComponent,\n PoRadioGroupOption\n} from '@po-ui/ng-components';\n\nimport { isExternalLink } from '../../utils/util';\n\nimport { PoModalPasswordRecoveryModalContent } from './enums/po-modal-password-recovery-modal-content.enum';\nimport { PoModalPasswordRecoveryType } from './enums/po-modal-password-recovery-type.enum';\nimport { PoModalPasswordRecovery } from './interfaces/po-modal-password-recovery.interface';\nimport { PoModalPasswordRecoveryBaseComponent } from './po-modal-password-recovery-base.component';\nimport { PoModalPasswordRecoveryService } from './po-modal-password-recovery.service';\n\n/**\n * @docsExtends PoModalPasswordRecoveryBaseComponent\n *\n * @example\n *\n * <example name=\"po-modal-password-recovery-basic\" title=\"PO Modal Password Recovery Basic\">\n * <file name=\"sample-po-modal-password-recovery-basic/sample-po-modal-password-recovery-basic.component.html\"> </file>\n * <file name=\"sample-po-modal-password-recovery-basic/sample-po-modal-password-recovery-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-modal-password-recovery-labs\" title=\"PO Modal Password Recovery Labs\">\n * <file name=\"sample-po-modal-password-recovery-labs/sample-po-modal-password-recovery-labs.component.html\"> </file>\n * <file name=\"sample-po-modal-password-recovery-labs/sample-po-modal-password-recovery-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-modal-password-recovery-request\" title=\"PO Modal Password Recovery Request\">\n * <file name=\"sample-po-modal-password-recovery-request/sample-po-modal-password-recovery-request.component.html\"> </file>\n * <file name=\"sample-po-modal-password-recovery-request/sample-po-modal-password-recovery-request.component.ts\"> </file>\n * </example>\n */\n\n@Component({\n selector: 'po-modal-password-recovery',\n templateUrl: './po-modal-password-recovery.component.html',\n standalone: false\n})\nexport class PoModalPasswordRecoveryComponent extends PoModalPasswordRecoveryBaseComponent implements OnDestroy {\n private readonly router = inject(Router);\n private readonly poI18nPipe = inject(PoI18nPipe);\n private readonly poModalPasswordRecoveryService = inject(PoModalPasswordRecoveryService);\n\n @ViewChild('emailForm') emailForm: NgForm;\n\n @ViewChild('recoveryModal', { static: true }) recoveryModalElement: PoModalComponent;\n\n @ViewChild('smsCodeForm') smsCodeForm: NgForm;\n\n chosenTypeFormOption: string = PoModalPasswordRecoveryType.Email;\n codeMask: string = '9 9 9 9 9 9';\n control: AbstractControl;\n emailModal: boolean = true;\n emailModalPhrases = { firstPhrase: null as string, secondPhrase: null as string };\n endpoint: string = '.';\n invalidCode: boolean = false;\n invalidEmail: boolean = false;\n modalTitle: string;\n modalType: PoModalPasswordRecoveryModalContent = PoModalPasswordRecoveryModalContent.Email;\n showCustomCodeError: boolean;\n smsCodeErrorMessagePhrase: string;\n submittedCodeValue = {} as PoModalPasswordRecovery;\n submittedContactValue = {} as PoModalPasswordRecovery;\n\n primaryAction: PoModalAction = { label: undefined, action: () => {} };\n\n secondaryAction: PoModalAction = { label: undefined, action: () => {} };\n\n typeFormOptions: Array<PoRadioGroupOption> = [\n { label: 'e-mail', value: PoModalPasswordRecoveryType.Email },\n { label: 'SMS', value: PoModalPasswordRecoveryType.SMS }\n ];\n\n private passwordRecoverySubscription: Subscription;\n private smsBodyResponse;\n private smsCodeSubscription: Subscription;\n\n constructor() {\n const poLanguageService = inject(PoLanguageService);\n\n super(poLanguageService);\n }\n\n ngOnDestroy() {\n if (this.passwordRecoverySubscription) {\n this.passwordRecoverySubscription.unsubscribe();\n }\n\n if (this.smsCodeSubscription) {\n this.smsCodeSubscription.unsubscribe();\n }\n }\n\n completed() {\n this.cancelAction();\n }\n\n formModelChangesCheck(form: NgForm) {\n const invalidForm = form.invalid;\n this.invalidEmail = invalidForm && form.dirty;\n this.primaryAction.disabled = invalidForm;\n\n if (this.modalType === PoModalPasswordRecoveryModalContent.SMSCode) {\n const codeError: boolean = this.codeError !== undefined && this.codeError !== '';\n this.showCustomCodeError = codeError && form.pristine;\n }\n }\n\n getInputType(type) {\n this.type = type;\n this.pipeModalPhrases();\n setTimeout(() => {\n this.control = this.emailForm.controls[type];\n this.formModelChangesCheck(this.emailForm);\n this.resetFormFields(this.control);\n });\n }\n\n open() {\n const control = this.checkFormType(this.type);\n this.control = this.emailForm.controls[control];\n this.setEmailModalPhrasesAndActions();\n this.formModelChangesCheck(this.emailForm);\n this.recoveryModalElement.open();\n }\n\n openConfirmation() {\n this.modalTitle = this.literals.emailSentTitle;\n this.modalType = PoModalPasswordRecoveryModalContent.Confirmation;\n this.setActions(\n this.cancelAction,\n this.literals.closeButton,\n this.submitAction,\n this.literals.resendEmailButton,\n this.componentsSize,\n false\n );\n }\n\n openSmsCode() {\n this.modalTitle = this.literals.typeCodeTitle;\n this.modalType = PoModalPasswordRecoveryModalContent.SMSCode;\n this.setActions(\n this.submitSmsCodeAction,\n this.literals.continueButton,\n this.cancelAction,\n this.literals.cancelButton,\n this.componentsSize,\n true\n );\n\n setTimeout(() => {\n this.control = this.smsCodeForm.controls['sms'];\n this.formModelChangesCheck(this.smsCodeForm);\n });\n }\n\n resendSmsCode() {\n this.incrementRetryAttempts();\n if (this.urlRecovery) {\n this.submitActionRequest(this.submittedContactValue, this.type);\n } else {\n this.submit.emit(this.submittedContactValue);\n }\n }\n\n private assignSmsResponse(responseObj) {\n this.smsBodyResponse = Object.assign({}, { hash: responseObj.hash });\n if (responseObj.urlValidationCode) {\n this.smsBodyResponse = Object.assign(this.smsBodyResponse, { urlValidationCode: responseObj.urlValidationCode });\n }\n }\n\n private cancelAction() {\n this.resetFormFields(this.control);\n this.submittedContactValue = {};\n\n this.chosenTypeFormOption = PoModalPasswordRecoveryType.Email;\n this.modalType = PoModalPasswordRecoveryModalContent.Email;\n this.type = this.modalPasswordRecoveryTypeAll ? PoModalPasswordRecoveryType.All : this.type;\n this.recoveryModalElement.close();\n }\n\n private checkFormType(type: PoModalPasswordRecoveryType) {\n return type !== PoModalPasswordRecoveryType.All ? type : PoModalPasswordRecoveryType.Email;\n }\n\n private formReset(control: AbstractControl) {\n control.markAsPristine();\n control.markAsUntouched();\n control.updateValueAndValidity();\n }\n\n private getEmitValue(type: PoModalPasswordRecoveryType) {\n return type === PoModalPasswordRecoveryType.SMS ? this.phone : this.email;\n }\n\n private incrementRetryAttempts() {\n this.submittedContactValue.retry = this.submittedContactValue.retry + 1 || 1;\n }\n\n private openExternalLink(url, queryParam) {\n window.open(`${url}?token=${queryParam}`, '_self');\n }\n\n private openInternalLink(url, endpoint, queryParam) {\n this.router.navigate([`${url}/${endpoint}`], { queryParams: { token: queryParam } });\n }\n\n private pipeModalPhrases() {\n if (this.type === PoModalPasswordRecoveryType.SMS) {\n this.emailModalPhrases.firstPhrase = this.setPipeArguments(\n this.literals.recoveryPasswordPhrase,\n this.literals.sms\n );\n this.emailModalPhrases.secondPhrase = this.setPipeArguments(\n this.literals.supportContact,\n this.literals.telephone\n );\n } else {\n this.emailModalPhrases.firstPhrase = this.setPipeArguments(\n this.literals.recoveryPasswordPhrase,\n this.literals.email\n );\n this.emailModalPhrases.secondPhrase = this.setPipeArguments(this.literals.supportContact, this.literals.email);\n }\n }\n\n private redirectToChangePassword(recoveryToken: PoModalPasswordRecovery) {\n const urlChangePassword = recoveryToken.urlChangePassword;\n if (urlChangePassword) {\n isExternalLink(urlChangePassword)\n ? this.openExternalLink(urlChangePassword, recoveryToken.token)\n : this.openInternalLink(this.urlRecovery, urlChangePassword, recoveryToken.token);\n } else {\n const changePasswordEndpoint = 'changePassword';\n this.openInternalLink(this.urlRecovery, changePasswordEndpoint, recoveryToken.token);\n }\n }\n\n private resetFormFields(control) {\n this.formReset(control);\n this.email = undefined;\n this.phone = undefined;\n this.smsCode = undefined;\n }\n\n private setActions(primaryAction, primarylabel, secondaryAction, secondaryLabel, componentsSize, disabled) {\n this.primaryAction.action = () => primaryAction.call(this);\n this.primaryAction.label = primarylabel;\n this.secondaryAction.action = () => secondaryAction.call(this);\n this.secondaryAction.label = secondaryLabel;\n this.componentsSize = componentsSize;\n this.primaryAction.disabled = disabled;\n }\n\n private setEmailModalPhrasesAndActions() {\n this.modalTitle = this.literals.forgotPasswordTitle;\n this.pipeModalPhrases();\n this.modalPasswordRecoveryTypeAll = this.type === PoModalPasswordRecoveryType.All;\n this.setActions(\n this.submitAction,\n this.literals.sendButton,\n this.cancelAction,\n this.literals.cancelButton,\n this.componentsSize,\n true\n );\n }\n\n private setRequestEndpoint(urlValidationCode?: string) {\n const endpoint = urlValidationCode || 'validation';\n\n return `${this.urlRecovery}/${endpoint}`;\n }\n\n private setPipeArguments(literalAttr: string, arg: string) {\n return this.poI18nPipe.transform(literalAttr, arg);\n }\n\n private submitAction() {\n this.modalType === PoModalPasswordRecoveryModalContent.Confirmation\n ? this.incrementRetryAttempts()\n : this.formReset(this.control);\n this.submittedContactValue[this.checkFormType(this.type)] = this.getEmitValue(this.type);\n if (this.urlRecovery) {\n this.submitActionRequest(this.submittedContactValue, this.type);\n } else {\n this.submit.emit(this.submittedContactValue);\n }\n }\n\n private submitActionRequest(data: PoModalPasswordRecovery, modalType: PoModalPasswordRecoveryType) {\n const params = modalType === PoModalPasswordRecoveryType.SMS ? { type: 'sms' } : undefined;\n\n this.passwordRecoverySubscription = this.poModalPasswordRecoveryService\n .post(this.urlRecovery, data, params)\n .subscribe(response => {\n if (\n (modalType === PoModalPasswordRecoveryType.Email || modalType === PoModalPasswordRecoveryType.All) &&\n response.status === 204\n ) {\n this.openConfirmation();\n } else if (modalType === PoModalPasswordRecoveryType.SMS && response.status === 200) {\n this.assignSmsResponse(response.body);\n this.openSmsCode();\n }\n });\n }\n\n private submitSmsCodeAction() {\n this.submittedCodeValue.code = this.smsCode;\n\n if (this.urlRecovery) {\n this.submittedCodeValue = Object.assign(this.submittedCodeValue, { hash: this.smsBodyResponse.hash });\n this.submitSmsCodeRequest(this.submittedCodeValue);\n } else {\n this.codeSubmit.emit(this.submittedCodeValue);\n }\n this.resetFormFields(this.control);\n }\n\n private submitSmsCodeRequest(data: PoModalPasswordRecovery) {\n this.smsCodeSubscription = this.poModalPasswordRecoveryService\n .post(this.setRequestEndpoint(this.smsBodyResponse.urlValidationCode), data)\n .subscribe(\n response => {\n const successStatus = response.status === 200;\n if (successStatus) {\n this.completed();\n this.redirectToChangePassword(response.body);\n }\n },\n error => {\n this.codeError = error.error.message;\n this.openSmsCode();\n }\n );\n }\n}\n","<po-modal\n #recoveryModal\n p-hide-close\n p-size=\"auto\"\n [ngSwitch]=\"modalType\"\n [p-components-size]=\"componentsSize\"\n [p-primary-action]=\"primaryAction\"\n [p-secondary-action]=\"secondaryAction\"\n [p-title]=\"modalTitle\"\n>\n <div class=\"po-modal-password-recovery-wrapper\">\n <div *ngSwitchCase=\"'email'\" class=\"po-modal-password-recovery-content po-row\">\n <div class=\"po-modal-password-recovery-text po-md-12 po-mb-1\">\n {{ emailModalPhrases.firstPhrase }}\n </div>\n <div class=\"po-mb-2 po-md-12\">\n <form #emailForm=\"ngForm\">\n <div *ngIf=\"modalPasswordRecoveryTypeAll\">\n <po-radio-group\n name=\"type\"\n [(ngModel)]=\"chosenTypeFormOption\"\n [p-options]=\"typeFormOptions\"\n [p-size]=\"componentsSize\"\n (p-change)=\"getInputType($event)\"\n >\n </po-radio-group>\n </div>\n\n <div class=\"po-mt-1\">\n <po-email\n *ngIf=\"type === 'email' || type === 'all'\"\n name=\"email\"\n [(ngModel)]=\"email\"\n p-required\n [p-label]=\"literals.insertEmail\"\n [p-size]=\"componentsSize\"\n (p-change-model)=\"formModelChangesCheck(emailForm)\"\n >\n </po-email>\n\n <po-input\n *ngIf=\"type === 'sms'\"\n name=\"sms\"\n [(ngModel)]=\"phone\"\n p-icon=\"ICON_TELEPHONE\"\n p-required\n [p-label]=\"literals.insertPhone\"\n [p-mask]=\"phoneMask\"\n [p-maxlength]=\"maxLength\"\n [p-minlength]=\"minLength\"\n [p-size]=\"componentsSize\"\n (p-change-model)=\"formModelChangesCheck(emailForm)\"\n >\n </po-input>\n </div>\n\n <div class=\"po-field-container-bottom po-field-container-error-container\">\n <po-modal-password-recovery-error-message\n *ngIf=\"invalidEmail && control.dirty\"\n [p-text]=\"type === 'sms' ? literals.phoneErrorMessagePhrase : literals.emailErrorMessagePhrase\"\n >\n </po-modal-password-recovery-error-message>\n </div>\n </form>\n </div>\n <div class=\"po-modal-password-recovery-text po-md-12\">\n {{ emailModalPhrases.secondPhrase }}\n <span *ngIf=\"contactEmail\">\n {{ literals.prepositionIn }}\n <a class=\"po-modal-password-recovery-link\" href=\"mailto:{{ contactEmail }}\" target=\"_self\">\n {{ contactEmail }}\n </a>\n </span>\n {{ endpoint }}\n </div>\n </div>\n\n <div #smsCodeModal *ngSwitchCase=\"'smsCode'\" class=\"po-modal-password-recovery-content po-row\">\n <div class=\"po-modal-password-recovery-text po-md-12 po-mb-1\">{{ literals.sentSmsCodePhrase }}</div>\n <div class=\"po-mb-2 po-md-12\">\n <form #smsCodeForm=\"ngForm\">\n <po-input\n name=\"sms\"\n [(ngModel)]=\"smsCode\"\n p-maxlength=\"11\"\n p-minlength=\"11\"\n p-required\n [p-label]=\"literals.insertCode\"\n [p-mask]=\"codeMask\"\n [p-size]=\"componentsSize\"\n (p-change-model)=\"formModelChangesCheck(smsCodeForm)\"\n >\n </po-input>\n <div class=\"po-field-container-bottom po-field-container-error-container\">\n <po-modal-password-recovery-error-message\n *ngIf=\"invalidEmail\"\n [p-text]=\"smsCodeErrorMessage || this.literals.smsCodeErrorMessagePhrase\"\n >\n </po-modal-password-recovery-error-message>\n <po-modal-password-recovery-error-message *ngIf=\"showCustomCodeError\" [p-text]=\"codeError\">\n </po-modal-password-recovery-error-message>\n </div>\n </form>\n </div>\n <div class=\"po-modal-password-recovery-text po-md-12\">\n {{ literals.sendAgainPhrase }}\n <span class=\"po-modal-password-recovery-link\" (click)=\"resendSmsCode()\">{{ literals.sendAgain }}</span>\n </div>\n </div>\n\n <div #confirmationModal *ngSwitchCase=\"'confirmation'\" class=\"po-modal-password-recovery-content po-row\">\n <img class=\"po-modal-password-recovery-user-image po-mb-2\" src=\"./assets/images/email-sent.svg\" />\n <div class=\"po-modal-password-recovery-text\">\n {{ literals.emailSentConfirmationPhrase }}\n </div>\n </div>\n </div>\n</po-modal>\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\n\nimport { PoFieldModule, PoI18nPipe, PoModalModule, PoIconModule } from '@po-ui/ng-components';\n\nimport { PoModalPasswordRecoveryComponent } from './po-modal-password-recovery.component';\nimport { PoModalPasswordRecoveryErrorMessageComponent } from './po-modal-password-recovery-error-message/po-modal-password-recovery-error-message.component';\nimport { PoModalPasswordRecoveryService } from './po-modal-password-recovery.service';\n\n/**\n * @description\n *\n * Módulo do template do po-modal-password-recovery.\n */\n@NgModule({\n imports: [CommonModule, FormsModule, PoFieldModule, PoModalModule, PoIconModule],\n declarations: [PoModalPasswordRecoveryComponent, PoModalPasswordRecoveryErrorMessageComponent],\n exports: [PoModalPasswordRecoveryComponent, PoModalPasswordRecoveryErrorMessageComponent],\n providers: [PoI18nPipe, PoModalPasswordRecoveryService]\n})\nexport class PoModalPasswordRecoveryModule {}\n","import { Component, EventEmitter, Input, OnInit, Output, inject } from '@angular/core';\n\nimport { PoLanguage, poLanguageDefault, PoLanguageService, PoSelectOption } from '@po-ui/ng-components';\n\nimport { convertToBoolean, getDefaultSizeFn, validateSizeFn } from './../../utils/util';\n\n@Component({\n selector: 'po-page-background',\n templateUrl: './po-page-background.component.html',\n standalone: false\n})\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente para definição de cor de fundo e dos logotipos primário e secundário para os templates\n * de `po-page-login` e demais templates de login.\n */\nexport class PoPageBackgroundComponent implements OnInit {\n poLanguageService = inject(PoLanguageService);\n\n /** Insere uma imagem de destaque ao lado direito do container. */\n @Input('p-background') background?: string;\n\n /** Idioma inicial selecionado no combo */\n @Input('p-initial-language') initialSelectLanguage?: string;\n\n /** Designa se o logotipo deve desaparecer em resoluções menores. */\n @Input('p-hide-logo') hideLogo?: boolean;\n\n /** Texto de destaque sobreposto à imagem de destaque. Essa opção é utilizada em conjunto com o atributo `p-background`. */\n @Input('p-highlight-info') highlightInfo?: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Evento disparado ao selecionar alguma opção no seletor de idiomas.\n * Para este evento será passado como parâmetro o valor de idioma selecionado.\n */\n @Output('p-selected-language') selectedLanguage: EventEmitter<string> = new EventEmitter<string>();\n\n selectedLanguageOption: string;\n\n private _componentsSize?: string = undefined;\n private _showSelectLanguage?: boolean = false;\n private _languagesList: Array<PoLanguage>;\n private _selectLanguageOptions: Array<PoSelectOption>;\n\n /**\n * @optional\n *\n * @description\n *\n * Define o tamanho dos componentes de formulário no template:\n * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n * - `medium`: aplica a medida medium de cada componente.\n *\n * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n *\n * @default `medium`\n */\n @Input('p-components-size') set componentsSize(value: string) {\n this._componentsSize = validateSizeFn(value);\n }\n\n get componentsSize(): string {\n return this._componentsSize ?? getDefaultSizeFn();\n }\n\n /** Lista de idiomas para o combo box */\n @Input('p-languages') set languagesList(value: Array<PoLanguage>) {\n this._languagesList = value;\n this.setLanguageOptions();\n }\n\n get languagesList(): Array<PoLanguage> {\n if (this._languagesList?.length) {\n return this._languagesList;\n }\n return poLanguageDefault;\n }\n\n /** Caminho para a logomarca localizada na parte superior. */\n @Input('p-logo') logo?: string;\n\n /** Texto alternativo para a logomarca. */\n @Input('p-logo-alt') logoAlt?: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Caminho para a logomarca localizada no rodapé.\n */\n @Input('p-secondary-logo') secondaryLogo: string;\n\n /** Define se o seletor de idiomas deve ser exibido. */\n @Input('p-show-select-language') set showSelectLanguage(showSelectLanguage: boolean) {\n this._showSelectLanguage = convertToBoolean(showSelectLanguage);\n }\n get showSelectLanguage() {\n return this._showSelectLanguage;\n }\n\n ngOnInit() {\n this.selectedLanguageOption = this.initialSelectLanguage || this.poLanguageService.getShortLanguage();\n }\n\n onChangeLanguage() {\n this.selectedLanguage.emit(this.selectedLanguageOption);\n }\n\n get selectLanguageOptions(): Array<PoSelectOption> {\n return this._selectLanguageOptions;\n }\n\n private setLanguageOptions() {\n this._selectLanguageOptions = this.languagesList.map<PoSelectOption>(language => ({\n label: language.description,\n value: language.language\n }));\n }\n}\n","<div class=\"po-page-login-container\">\n <div class=\"po-page-login-panel\">\n <div class=\"po-page-background-main-logo\" [class.po-page-background-hide-logo]=\"hideLogo\">\n @if (logo) {\n <po-logo\n p-class=\"po-page-background-main-logo-image\"\n [p-link]=\"false\"\n [p-logo]=\"logo\"\n [p-logo-alt]=\"logoAlt\"\n ></po-logo>\n }\n </div>\n\n <div class=\"po-page-login-body\">\n <div class=\"po-page-login-panel-content\">\n <ng-content></ng-content>\n </div>\n </div>\n <div class=\"po-page-background-footer po-sm-12\">\n <po-divider class=\"po-page-background-footer-mobile-only\"></po-divider>\n\n <div class=\"po-page-background-footer-content\">\n @if (showSelectLanguage) {\n <div class=\"po-page-background-footer-select\">\n <po-select\n name=\"selectedLanguageOption\"\n [(ngModel)]=\"selectedLanguageOption\"\n [p-options]=\"selectLanguageOptions\"\n [p-size]=\"componentsSize\"\n (p-change)=\"onChangeLanguage()\"\n ></po-select>\n </div>\n }\n\n <div\n class=\"po-page-background-secondary-logo\"\n [ngClass]=\"\n showSelectLanguage\n ? 'po-page-background-secondary-logo-right'\n : 'po-page-background-secondary-logo-centered'\n \"\n >\n @if (secondaryLogo) {\n <po-logo\n p-class=\"po-page-background-secondary-logo-image\"\n [p-link]=\"false\"\n [p-logo]=\"secondaryLogo\"\n p-logo-alt=\"secondary-logomarca\"\n ></po-logo>\n }\n </div>\n </div>\n </div>\n </div>\n\n @if (background) {\n <div\n [ngClass]=\"background ? 'po-page-login-highlight-image' : 'po-page-login-highlight-image-off'\"\n [style.background-image]=\"'url(' + background + ')'\"\n >\n <div class=\"po-page-login-highlight-text\">\n <div class=\"po-font-display\">{{ highlightInfo }}</div>\n </div>\n </div>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { PoDividerModule, PoFieldModule, PoLogoModule } from '@po-ui/ng-components';\n\nimport { PoPageBackgroundComponent } from './po-page-background.component';\n\n/**\n * @description\n *\n * Módulo do template do po-page-background.\n */\n@NgModule({\n imports: [CommonModule, FormsModule, RouterModule, PoDividerModule, PoFieldModule, PoLogoModule],\n declarations: [PoPageBackgroundComponent],\n exports: [PoPageBackgroundComponent]\n})\nexport class PoPageBackgroundModule {}\n","/**\n * @usedBy PoPageBlockedUserComponent\n *\n * @description\n *\n * *Enum* para os tipos de motivo de bloqueio de usuário. As informações modificam conforme o motivo selecionado pelo desenvolvedor.\n */\nexport enum PoPageBlockedUserReason {\n /** Sem definição; a tela exibirá conteúdo de bloqueio genérico. */\n None = 'none',\n\n /** Definição para tentativas de acesso esgotadas. */\n ExceededAttempts = 'exceededAttempts',\n\n /** Definição para senha expirada. */\n ExpiredPassword = 'expiredPassword'\n}\n","import { Directive, Input } from '@angular/core';\n\nimport { getDefaultSizeFn, validateSizeFn } from '../../utils/util';\nimport { PoPageBlockedUserReason } from './enums/po-page-blocked-user-reason.enum';\nimport { PoPageBlockedUserReasonParams } from './interfaces/po-page-blocked-user-reason-params.interface';\n\nconst PoPageBlockedUserReasonDefault: PoPageBlockedUserReason = PoPageBlockedUserReason.None;\nconst PoPageBlockedUserParamsDefault: PoPageBlockedUserReasonParams = { attempts: 5, days: 90, hours: 24 };\n\n/**\n * @description\n *\n * O componente `po-page-blocked-user` é utilizado como template para tela de bloqueio de usuário.\n * É possível definir entre três tipos de telas para alertar o usuário sobre um eventual bloqueio de login.\n *\n * Cada modelo de bloqueio possui uma imagem e texto adequados à situação.\n * Os textos das telas são pré-definidos e imutáveis, porém,\n * é possível estipular parâmetros como dias, horas e tentativas de acesso esgotadas.\n *\n * Por fim, há propriedades para adição de telefone e/ou email para contato e também a definição para a url de retorno.\n *\n * Para que as imagens sejam exibidas corretamente, é necessário incluir o caminho delas ao projeto. Para isso, edite\n * o *assets* no arquivo **angular.json** da aplicação na seguinte ordem:\n * ```\n * \"assets\": [\n * \"src/assets\",\n * \"src/favicon.ico\",\n * {\n * \"glob\": \"**\\/*\",\n * \"input\": \"node_modules/@po-ui/style/images\",\n * \"output\": \"assets/images\"\n * }\n * ]\n * ```\n *\n * _______________\n *\n * #### Praticidade\n * O `po-page-blocked-user`, assim como suas propriedades, pode também ser transmitido diretamente pelas configuraçãos de rota e,\n * desta maneira, dispensa-se qualquer menção e/ou importação no restante da aplicação. O exemplo abaixo exemplifica\n * a forma dinâmica com a qual o template pode ser gerado se navegasse para uma rota denominada como `/access-denied`:\n *\n *\n * ```\n * import { PoPageBlockedUserComponent, PoPageBlockedUserReason } from '@po-ui/ng-templates';\n *\n * ...\n * const routes: Routes = [\n * {\n * path: 'access-denied', component: PoPageBlockedUserComponent, data: {\n * contactEmail: 'dev.po@po-ui.com',\n * contactPhone: '0800 1234 000',\n * reason: PoPageBlockedUserReason.ExpiredPassword,\n * urlBack: '/home'\n * }\n * }\n * ...\n * ];\n *\n * @NgModule({\n * imports: [RouterModule.forRoot(routes)],\n * exports: [RouterModule]\n * })\n * export class AppRoutingModule { }\n * ```\n *\n * > É essencial que siga a nomenclatura dos atributos exemplificados acima para sua efetiva funcionalidade.\n *\n */\n@Directive()\nexport class PoPageBlockedUserBaseComponent {\n /**\n * @optional\n *\n * @description\n *\n * Valor para o email de contato que deve ser exibido. A ação está de acordo com o protocolo MAILTO e é possível definir\n * tanto rotas internas quanto externas.\n */\n @Input('p-contact-email') contactEmail: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Valor para o telefone de contato que deve ser exibido. A ação está de acordo com o protocolo TEL.\n *\n * > A propriedade não contem tratamento de máscara, fica a critério do desenvolvedor defini-la.\n */\n @Input('p-contact-phone') contactPhone: string;\n\n /** Caminho para a logomarca localizada na parte superior, caso não seja definida ou seja inválida assume a logo padrão do PO UI. */\n @Input('p-logo') logo?: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Caminho para a logomarca localizada no rodapé.\n */\n @Input('p-secondary-logo') secondaryLogo?: string;\n\n private _componentsSize?: string = undefined;\n private _params: PoPageBlockedUserReasonParams = { ...PoPageBlockedUserParamsDefault };\n private _reason: PoPageBlockedUserReason = PoPageBlockedUserReason.None;\n private _urlBack: string = '/';\n\n /**\n * @optional\n *\n * @description\n *\n * Define o tamanho dos componentes de formulário no template:\n * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n * - `medium`: aplica a medida medium de cada componente.\n *\n * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n *\n * @default `medium`\n */\n @Input('p-components-size') set componentsSize(value: string) {\n this._componentsSize = validateSizeFn(value);\n }\n\n get componentsSize(): string {\n return this._componentsSize ?? getDefaultSizeFn();\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Designação de valores usados para a customização da mensagem de bloqueio.\n * Confira abaixo os valores pré-definidos.\n *\n * ```\n * const customLiterals: PoPageBlockedUserReasonParams = {\n * attempts: 5,\n * days: 90,\n * hours: 24\n * };\n * ```\n *\n * > Salientamos a importância e atenção para configuração desses valores conforme definidos no projeto.\n *\n * > Veja os parâmetros customizáveis na interface `PoPageBlockedUserReasonParams`.\n *\n */\n @Input('p-params') set params(value: PoPageBlockedUserReasonParams) {\n if (value instanceof Object) {\n const keys = Object.keys(value);\n const newParams = { ...PoPageBlockedUserParamsDefault };\n\n keys.forEach(key => {\n newParams[key] = value[key];\n });\n\n this._params = newParams;\n } else {\n this._params = { ...PoPageBlockedUserParamsDefault };\n }\n }\n\n get params() {\n return this._params;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Definição de motivo de bloqueio de usuário. As informações modificam conforme o motivo selecionado.\n *\n * > Veja os valores válidos no *enum* `PoPageBlockedUserReason`.\n *\n * @default `PoPageBlockedUserReason.None`\n */\n @Input('p-reason') set reason(value: PoPageBlockedUserReason) {\n this._reason = (<any>Object).values(PoPageBlockedUserReason).includes(value)\n ? value\n : PoPageBlockedUserReasonDefault;\n }\n\n get reason() {\n return this._reason;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * URL para a ação de retorno da página.\n *\n * @default `/`\n */\n @Input('p-url-back') set urlBack(url: string) {\n this._urlBack = url;\n }\n\n get urlBack() {\n return this._urlBack;\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n ViewChild,\n inject\n} from '@angular/core';\n\nconst poPageBlockedUserContactItemMargin = 16;\n\n@Component({\n selector: 'po-page-blocked-user-contacts',\n templateUrl: './po-page-blocked-user-contacts.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class PoPageBlockedUserContactsComponent {\n private changeDetector = inject(ChangeDetectorRef);\n\n @ViewChild('contactGroup', { static: true }) contactGroup: ElementRef;\n\n @ViewChild('mailItem', { static: true }) mailItem: ElementRef;\n\n @ViewChild('phoneItem', { static: true }) phoneItem: ElementRef;\n\n overflowItem: boolean = true;\n\n private _email: string;\n private _phone: string;\n\n @Input('p-email') set email(value: string) {\n this._email = value;\n\n this.checkContactItemWidth();\n }\n\n get email() {\n return this._email;\n }\n\n @Input('p-phone') set phone(value: string) {\n this._phone = value;\n\n this.checkContactItemWidth();\n }\n\n get phone() {\n return this._phone;\n }\n\n private checkContactItemWidth() {\n this.overflowItem = true;\n\n if (this.phone && this.email) {\n this.changeDetector.detectChanges();\n\n const phoneWidth = this.phoneItem.nativeElement.offsetWidth;\n const mailWidth = this.mailItem.nativeElement.offsetWidth;\n const contactGroupHalfWidth =\n this.contactGroup.nativeElement.offsetWidth / 2 - poPageBlockedUserContactItemMargin;\n\n this.overflowItem =\n phoneWidth > contactGroupHalfWidth || mailWidth > contactGroupHalfWidth - poPageBlockedUserContactItemMargin;\n }\n }\n}\n","<div #contactGroup class=\"po-page-blocked-user-contact-group po-row po-mb-3\">\n <div\n class=\"po-page-blocked-user-contact-item\"\n [class.po-invisible]=\"!phone\"\n [ngClass]=\"overflowItem ? 'po-md-12' : 'po-md-6'\"\n >\n <a\n class=\"po-page-blocked-user-link po-clickable\"\n [class.po-page-blocked-user-contact-content-inline]=\"overflowItem\"\n href=\"tel:{{ phone }}\"\n target=\"_self\"\n >\n <div class=\"po-page-blocked-user-contact-group-item\">\n <po-icon class=\"po-page-blocked-user-contact-icon po-pr-1\" p-icon=\"ICON_TELEPHONE\"></po-icon>\n <div #phoneItem class=\"po-page-blocked-user-contact-text po-font-text\">{{ phone }}</div>\n </div>\n </a>\n </div>\n <div\n class=\"po-page-blocked-user-contact-item po-page-blocked-user-contact-mail\"\n [class.po-invisible]=\"!email\"\n [ngClass]=\"overflowItem ? 'po-md-12' : 'po-md-6'\"\n >\n <a\n class=\"po-page-blocked-user-link po-clickable\"\n [class.po-page-blocked-user-contact-content-inline]=\"overflowItem\"\n href=\"mailto:{{ email }}\"\n target=\"_self\"\n >\n <div class=\"po-page-blocked-user-contact-group-item\">\n <po-icon class=\"po-page-blocked-user-contact-icon po-pr-1\" p-icon=\"ICON_MAIL\"></po-icon>\n <div #mailItem class=\"po-page-blocked-user-contact-text po-font-text\">{{ email }}</div>\n </div>\n </a>\n </div>\n</div>\n","export const poPageBlockedUserLiterals = {\n none: {\n pt: {\n title: 'Opa!',\n firstPhrase: 'Tivemos que bloquear essa tela temporariamente.',\n secondPhrase: 'Mas não se preocupe! Basta fazer seu login novamente.'\n },\n en: {\n title: 'Oops!',\n firstPhrase: 'We had to temporarily block this screen.',\n secondPhrase: 'But do not worry! Just sign in again.'\n },\n es: {\n title: 'Opa!',\n firstPhrase: 'Tuvimos que bloquear esta pantalla temporalmente.',\n secondPhrase: '¡Pero no se preocupe! Sólo tienes que iniciar sesión de nuevo.'\n },\n ru: {\n title: 'Ой!',\n firstPhrase: 'Нам пришлось временно заблокировать этот раздел.',\n secondPhrase: 'Но не волнуйтесь! Просто войдите в систему еще раз.'\n }\n },\n exceededAttempts: {\n pt: {\n title: 'Opa!',\n firstPhrase: `Para sua segurança, após {0} tentativa(s) de senha seu usuário fica bloqueado e não pode ser acessado em {1} hora(s) :( `,\n secondPhrase: 'Isso é para evitar que hackers invadam sua conta.',\n thirdPhrase:\n 'Mas não se preocupe! Se você for o dono da conta e apenas esqueceu sua senha, basta entrar em contato com o suporte.'\n },\n en: {\n title: 'Oops!',\n firstPhrase: `For your security, after {0} attempt(s) of password\n your user gets blocked and can not be accessed in {1} hour(s) :(`,\n secondPhrase: 'This is to prevent hackers from hacking into your account.',\n thirdPhrase:\n 'But do not worry! If you are the owner of the account and just forgot your password, just contact support.'\n },\n es: {\n title: 'Opa!',\n firstPhrase: `Para su seguridad, después de {0} intento(s) de contraseña\n su usuario queda bloqueado y no puede ser accedido en {1} hora(s) :(`,\n secondPhrase: 'Esto es para evitar que los hackers invadan su cuenta.',\n thirdPhrase: `¡Pero no se preocupe! Si usted es el dueño de la cuenta\n y acaba de olvidar su contraseña, simplemente póngase en contacto con el soporte.`\n },\n ru: {\n title: 'Ой!',\n firstPhrase:\n 'Для вашей безопасности, после {0} попыток ввода пароля\\r\\nваш пользователь блокируется и не сможет авторизоваться в течение {1} часа(ов) :(',\n secondPhrase: 'Это делается для того, чтобы хакеры не могли взломать ваш аккаунт.',\n thirdPhrase:\n 'Но не волнуйтесь! Если вы являетесь владельцем учетной записи и просто забыли свой пароль, обратитесь в службу поддержки.'\n }\n },\n expiredPassword: {\n pt: {\n title: 'Opa! Sua senha expirou',\n firstPhrase: `A cada {0} dia(s) é preciso criar uma nova senha por questão de segurança. Após esses {0} dia(s) seu acesso é bloqueado :(`,\n secondPhrase: 'Mas não se preocupe! Basta entrar em contato com o administrador do sistema.'\n },\n en: {\n title: 'Oops! Your Password has expired',\n firstPhrase: `Every {0} day(s) you need to create a new password for security reasons.\n After these {0} day(s) your access is blocked :(`,\n secondPhrase: 'But do not worry! Just contact your system administrator.'\n },\n es: {\n title: 'Opa! Su contraseña ha caducado',\n firstPhrase: `Cada {0} día(s) es necesario crear una nueva contraseña por razones de seguridad.\n Después de estos {0} día(s) su acceso está bloqueado :(`,\n secondPhrase: '¡Pero no se preocupe! Sólo tienes que ponerse en contacto con el administrador del sistema.'\n },\n ru: {\n title: 'Ой! Срок действия вашего пароля истек',\n firstPhrase:\n 'Каждые {0} дней вам необходимо создавать новый пароль в целях безопасности.\\r\\nПосле {0} дней ваш доступ будет заблокирован :(',\n secondPhrase: 'Но не волнуйтесь! Просто обратитесь к своему системному администратору.'\n }\n }\n};\n","import { ChangeDetectorRef, Component, Input, OnChanges, OnInit, SimpleChanges, inject } from '@angular/core';\n\nimport { PoLanguageService, poLocaleDefault } from '@po-ui/ng-components';\n\nimport { poPageBlockedUserLiterals } from './../literals/i18n/po-page-blocked-user-literals';\nimport { PoPageBlockedUserReason } from '../enums/po-page-blocked-user-reason.enum';\nimport { PoPageBlockedUserReasonParams } from '../interfaces/po-page-blocked-user-reason-params.interface';\n\n@Component({\n selector: 'po-page-blocked-user-reason',\n templateUrl: './po-page-blocked-user-reason.component.html',\n standalone: false\n})\nexport class PoPageBlockedUserReasonComponent implements OnChanges, OnInit {\n private changeDetector = inject(ChangeDetectorRef);\n\n @Input('p-params') params: PoPageBlockedUserReasonParams;\n\n @Input('p-reason') reason: PoPageBlockedUserReason;\n\n literalParams;\n literals: { title: string; firstPhrase: string; secondPhrase: string; thirdPhrase: string };\n\n private language: string;\n\n constructor() {\n const languageService = inject(PoLanguageService);\n\n this.language = languageService.getShortLanguage();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.reason || changes.params) {\n this.getLiterals();\n }\n }\n\n ngOnInit() {\n this.getLiterals();\n }\n\n getImageByReasonType() {\n let reasonImage;\n\n switch (this.reason) {\n case 'none': {\n reasonImage = 'big-lock';\n break;\n }\n case 'exceededAttempts': {\n reasonImage = 'blocked-user';\n break;\n }\n case 'expiredPassword': {\n reasonImage = 'expired';\n break;\n }\n }\n return `./assets/images/${reasonImage}.svg`;\n }\n\n getParams() {\n this.literalParams =\n this.reason === 'expiredPassword'\n ? [this.params.days, this.params.days]\n : [this.params.attempts, this.params.hours];\n }\n\n private getLiterals() {\n this.getParams();\n\n this.literals = {\n ...poPageBlockedUserLiterals[this.reason][poLocaleDefault],\n ...poPageBlockedUserLiterals[this.reason][this.language]\n };\n\n this.changeDetector.detectChanges();\n }\n}\n","<div class=\"po-page-blocked-user-reason-content\">\n <img class=\"po-page-blocked-user-image po-mb-3\" [src]=\"getImageByReasonType()\" />\n <div class=\"po-page-blocked-user-header po-mb-md-3 po-row\">\n <div class=\"po-md-12\">{{ literals?.title }}</div>\n </div>\n <div class=\"po-page-blocked-user-text po-font-text po-row\">\n <div class=\"po-mb-sm-2 po-mb-md-3 po-md-12 po-page-blocked-user-text-bold\">\n {{ literals?.firstPhrase | poI18n: literalParams }}\n </div>\n <div class=\"po-mb-sm-2 po-mb-md-3 po-md-12\">{{ literals?.secondPhrase }}</div>\n @if (literals?.thirdPhrase) {\n <div class=\"po-mb-sm-2 po-mb-md-3 po-md-12\">{{ literals?.thirdPhrase }}</div>\n }\n </div>\n</div>\n","import { Component, OnInit, inject } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { PoLanguageService, poLocaleDefault } from '@po-ui/ng-components';\n\nimport { isExternalLink } from '../../utils/util';\n\nimport { PoPageBlockedUserBaseComponent } from './po-page-blocked-user-base.component';\n\nexport const poPageBlockedUserButtonLiterals: object = {\n en: <any>{\n primaryButton: 'Back to home screen'\n },\n es: <any>{\n primaryButton: 'Volver al inicio'\n },\n pt: <any>{\n primaryButton: 'Voltar para o início'\n },\n ru: <any>{\n primaryButton: 'Перейти к началу страницы'\n }\n};\n\n/**\n * @docsExtends PoPageBlockedUserBaseComponent\n *\n * @example\n *\n * <example name=\"po-page-blocked-user-basic\" title=\"PO Page Blocked User Basic\">\n * <file name=\"sample-po-page-blocked-user-basic/sample-po-page-blocked-user-basic.component.html\"> </file>\n * <file name=\"sample-po-page-blocked-user-basic/sample-po-page-blocked-user-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-blocked-user-labs\" title=\"PO Page Blocked User Labs\">\n * <file name=\"sample-po-page-blocked-user-labs/sample-po-page-blocked-user-labs.component.html\"> </file>\n * <file name=\"sample-po-page-blocked-user-labs/sample-po-page-blocked-user-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-blocked-user-exceeded-attempts\" title=\"PO Page Blocked User Exceeded Attempts\">\n * <file name=\"sample-po-page-blocked-user-exceeded-attempts/sample-po-page-blocked-user-exceeded-attempts.component.html\"> </file>\n * <file name=\"sample-po-page-blocked-user-exceeded-attempts/sample-po-page-blocked-user-exceeded-attempts.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-blocked-user-expired-password\" title=\"PO Page Blocked User Expired Password\">\n * <file name=\"sample-po-page-blocked-user-expired-password/sample-po-page-blocked-user-expired-password.component.html\"> </file>\n * <file name=\"sample-po-page-blocked-user-expired-password/sample-po-page-blocked-user-expired-password.component.ts\"> </file>\n * </example>\n */\n\n@Component({\n selector: 'po-page-blocked-user',\n templateUrl: './po-page-blocked-user.component.html',\n standalone: false\n})\nexport class PoPageBlockedUserComponent extends PoPageBlockedUserBaseComponent implements OnInit {\n private activatedRoute = inject(ActivatedRoute);\n private router = inject(Router);\n\n literals;\n\n constructor() {\n const languageService = inject(PoLanguageService);\n\n super();\n\n const language = languageService.getShortLanguage();\n\n this.literals = {\n ...poPageBlockedUserButtonLiterals[poLocaleDefault],\n ...poPageBlockedUserButtonLiterals[language]\n };\n }\n\n ngOnInit() {\n this.checkingForRouteMetadata(this.activatedRoute.snapshot.data);\n }\n\n navigateTo(url: string) {\n isExternalLink(url) ? window.open(url) : this.router.navigate([url || '/']);\n }\n\n private checkingForMetadataProperty(object, property) {\n if (Object.prototype.hasOwnProperty.call(object, property)) {\n return object[property];\n }\n }\n\n private checkingForRouteMetadata(data) {\n if (Object.keys(data).length !== 0) {\n this.contactEmail = this.checkingForMetadataProperty(data, 'contactEmail') || this.contactEmail;\n this.contactPhone = this.checkingForMetadataProperty(data, 'contactPhone') || this.contactPhone;\n this.reason = this.checkingForMetadataProperty(data, 'reason') || this.reason;\n this.urlBack = this.checkingForMetadataProperty(data, 'urlBack') || this.urlBack;\n }\n }\n}\n","<div class=\"po-page-blocked-user-wrapper\">\n <div class=\"po-page-background-wrap\">\n <po-page-background\n [p-hide-logo]=\"true\"\n [p-logo]=\"logo\"\n [p-secondary-logo]=\"secondaryLogo\"\n [p-components-size]=\"componentsSize\"\n >\n <po-page-blocked-user-reason [p-params]=\"params\" [p-reason]=\"reason\"> </po-page-blocked-user-reason>\n\n <div class=\"po-page-blocked-user-mobile-bottom-alignment\">\n <po-page-blocked-user-contacts [p-email]=\"contactEmail\" [p-phone]=\"contactPhone\">\n </po-page-blocked-user-contacts>\n\n <div class=\"po-row\">\n <po-button\n class=\"po-lg-12 po-sm-12 po-page-blocked-user-button\"\n p-kind=\"primary\"\n [p-label]=\"literals?.primaryButton\"\n [p-size]=\"componentsSize\"\n (p-click)=\"navigateTo(urlBack)\"\n >\n </po-button>\n </div>\n </div>\n </po-page-background>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { PoModule } from '@po-ui/ng-components';\n\nimport { PoPageBackgroundModule } from '../po-page-background/index';\nimport { PoPageBlockedUserComponent } from './po-page-blocked-user.component';\nimport { PoPageBlockedUserContactsComponent } from './po-page-blocked-user-contacts/po-page-blocked-user-contacts.component';\nimport { PoPageBlockedUserReasonComponent } from './po-page-blocked-user-reason/po-page-blocked-user-reason.component';\n\n/**\n * @description\n *\n * Módulo do template do po-page-blocked-user.\n */\n@NgModule({\n imports: [CommonModule, RouterModule, PoModule, PoPageBackgroundModule],\n declarations: [PoPageBlockedUserComponent, PoPageBlockedUserContactsComponent, PoPageBlockedUserReasonComponent],\n exports: [PoPageBlockedUserComponent, PoPageBlockedUserContactsComponent, PoPageBlockedUserReasonComponent]\n})\nexport class PoPageBlockedUserModule {}\n","export const poPageChangePasswordLiterals = {\n en: <any>{\n backButton: 'Back',\n confirmPassword: 'Confirm password',\n createNewPassword: 'Create new password',\n createNewPasswordPhrase: 'Protect your account with a personal password created by you',\n currentPassword: 'Current password',\n enterSystemButton: 'Enter the system',\n forgotPassword: 'Forgot your password?',\n newPassword: 'New password',\n passwordSuccessfullyCreated: 'Password successfully created!',\n passwordSuccessfullyUpdated: 'Password successfully updated!',\n requirements: 'Password requirements',\n safetyTips: 'Safety tips!',\n safetyTipsFirst: 'is used in other accounts;',\n safetyTipsPhrase: 'Avoid a password that:',\n safetyTipsSecond: 'has personal information like your name, nickname or family names;',\n safetyTipsThird: 'that uses obvious sequences like \"123\" or obvious words like \"password\";',\n saveButton: 'Save'\n },\n es: <any>{\n backButton: 'Volver',\n confirmPassword: 'Confirmar seña',\n createNewPassword: 'Crear nueva contraseña',\n createNewPasswordPhrase: 'Proteger su cuenta con una contraseña personal creada por usted',\n currentPassword: 'Contraseña actual',\n enterSystemButton: 'Entrar en el sistema',\n forgotPassword: '¿Olvidaste tu contraseña?',\n newPassword: 'Nueva contraseña',\n passwordSuccessfullyCreated: 'Contraseña creada correctamente!',\n passwordSuccessfullyUpdated: 'Contraseña correctamente actualizada!',\n requirements: 'Requisitos de contraseña',\n safetyTips: 'Consejos de seguridad!',\n safetyTipsFirst: 'se utilice en otras cuentas;',\n safetyTipsPhrase: 'Evite una contraseña que:',\n safetyTipsSecond: 'utiliza información personal como su nombre, apellido o nombre de familia;',\n safetyTipsThird: 'utilice secuencias muy obvias como \"1234\" o \"abcd\" o palabras obvias como \"contraseña\";',\n saveButton: 'Guardar'\n },\n pt: <any>{\n backButton: 'Voltar',\n confirmPassword: 'Confirmar senha',\n createNewPassword: 'Criar nova senha',\n createNewPasswordPhrase: 'Proteja sua conta com uma senha pessoal criada por você',\n currentPassword: 'Senha atual',\n enterSystemButton: 'Entrar no sistema',\n forgotPassword: 'Esqueceu sua senha?',\n newPassword: 'Nova senha',\n passwordSuccessfullyCreated: 'Senha criada com sucesso!',\n passwordSuccessfullyUpdated: 'Senha alterada com sucesso!',\n requirements: 'Requisitos de senha',\n safetyTips: 'Dicas de segurança!',\n safetyTipsFirst: 'seja usada em outras contas;',\n safetyTipsPhrase: 'Evite uma senha que:',\n safetyTipsSecond: 'usa informações pessoais como seu nome, apelido ou nome de familiares;',\n safetyTipsThird: 'use sequências muito óbvias como \"1234\" ou \"abcd\" ou palavras óbvias como “senha”;',\n saveButton: 'Salvar'\n },\n ru: <any>{\n backButton: 'возвращение',\n confirmPassword: 'Подтвердите пароль',\n createNewPassword: 'Создать новый пароль',\n createNewPasswordPhrase: 'Защитите свой аккаунт с помощью личного пароля.',\n currentPassword: 'Текущий пароль',\n enterSystemButton: 'Вход в систему',\n forgotPassword: 'Забыли пароль?',\n newPassword: 'Новый пароль',\n passwordSuccessfullyCreated: 'Пароль успешно создан!',\n passwordSuccessfullyUpdated: 'Пароль успешно изменен!',\n requirements: 'Требования к паролю',\n safetyTips: 'Советы по безопасности!',\n safetyTipsFirst: 'использоваться на других счетах;',\n safetyTipsPhrase: 'Избегайте пароля, который:',\n safetyTipsSecond: 'использует личную информацию, такую как ваше имя, фамилию или фамилию;',\n safetyTipsThird:\n 'используйте очень очевидные строки, такие как \"1234\" или \"abcd\", или такие очевидные слова, как \"пароль\";',\n saveButton: 'экономить'\n }\n};\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\n\nimport { PoModalAction } from '@po-ui/ng-components';\n\nimport { convertToBoolean, getDefaultSizeFn, isExternalLink, isTypeof, validateSizeFn } from '../../utils/util';\n\nimport { PoPageChangePasswordRecovery } from './interfaces/po-page-change-password-recovery.interface';\nimport { PoPageChangePasswordRequirement } from './interfaces/po-page-change-password-requirement.interface';\n\n/**\n * @description\n *\n * O componente `po-page-change-password` é utilizado como template para tela de cadastro ou alteração de senha.\n *\n * Apresenta dicas e regras para senhas mais seguras e também possibilidade de personalizar o redirecionamento para as telas\n * 'esqueceu a senha', 'voltar' e 'entrar no sistema'. Os textos das telas são pré-definidos e imutáveis.\n *\n * A propriedade `p-url-new-password` automatiza a rotina do template e simplifica o processo de cadastro/alteração de senha, bastando\n * definir uma url para POST das informações digitadas pelo usuário. A flexibilidade e praticidade podem chegar a um nível em que o\n * desenvolvimento da aplicação no *client side* é desprovida de qualquer código-fonte relacionado à rotina de cadastro/alteração de senha.\n * Seu detalhamento para uso pode ser visto logo abaixo em *propriedades*.\n * Caso julgue necessário, pode-se também definir manualmente a rotina do componente.\n *\n * Para que as imagens sejam exibidas corretamente, é necessário incluir o caminho delas ao projeto. Para isso, edite\n * o *assets* no arquivo **angular.json** da aplicação na seguinte ordem:\n * ```\n * \"assets\": [\n * \"src/assets\",\n * \"src/favicon.ico\",\n * {\n * \"glob\": \"**\\/*\",\n * \"input\": \"node_modules/@po-ui/style/images\",\n * \"output\": \"assets/images\"\n * }\n * ]\n * ```\n */\n@Directive()\nexport abstract class PoPageChangePasswordBaseComponent {\n /**\n * @optional\n *\n * @description\n *\n * Caminho para a logomarca localizada na parte superior.\n *\n * > Caso seja indefinida o espaço se mantém preservado porém vazio.\n */\n @Input('p-logo') logo?: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Caminho para a logomarca localizada no rodapé.\n */\n @Input('p-secondary-logo') secondaryLogo?: string;\n\n /**\n * Token para solicitação de troca/recuperação de senha.\n *\n * > Esta propriedade será ignorada caso exista um token como parâmetro na URL inicial do template.\n */\n @Input('p-token') token?: string;\n\n /**\n * @optional\n *\n * @description\n *\n * URL para a ação de retorno da página.\n *\n * > O botão `Voltar` aparece apenas para telas de alteração de senha, ou seja, só aparece se a propriedade `p-hide-current-password` for\n * falsa.\n *\n * @default `/`\n */\n @Input('p-url-back') urlBack: string = '/';\n\n /**\n * Endpoint usado pelo template para realizar um POST. Quando preenchido, o método `p-submit` será ignorado e o componente adquirirá\n * automatização para o processo de cadastro/troca de senha.\n *\n * ### Processo\n * Ao digitar um valor válido nos campos de senha e pressionar **salvar**,\n * o componente fará uma requisição `POST` na url especificada nesta propriedade passando o objeto contendo os valores definidos pelo\n * usuário.\n *\n * ```\n * body {\n * token?: token,\n * oldPassword?: oldPassword,\n * newPassword: newPassword\n * }\n * ```\n *\n * O código de resposta HTTP de status esperado é `204`.\n *\n * Em caso de **sucesso**, será exibida a modal de confirmação de senha alterada.\n *\n * > O token será informado pela propriedade `p-token`do componente ou por um *query parameter* na URL do template.\n *\n * *Processo finalizado.*\n *\n * _______________\n *\n * #### Praticidade\n * As informações do serviço de autenticação também podem ser transmitidas diretamente pelas configuraçãos de rota e, desta maneira,\n * dispensa-se qualquer menção e/ou importação do componente `po-page-change-password` no restante da aplicação. O exemplo abaixo\n * exemplifica a forma dinâmica com a qual o template de tela de troca de senha pode ser gerado ao navegar para rota `/change-password`, e\n * também como ele se comunica com o serviço para efetuação do processo de troca de senha do usuário e solicitação de nova senha.\n * Basta definir nas configurações de rota:\n *\n *\n * ```\n * import { PoModalPasswordRecoveryType, PoPageChangePasswordComponent } from '@po-ui/ng-templates';\n *\n * ...\n * const routes: Routes = [\n * {\n * path: 'change-password', component: PoPageChangePasswordComponent, data: {\n * serviceApi: 'https://po-ui.io/sample/api/new-password',\n * recovery: {\n * url: 'https://po-ui.io/sample/api/users',\n * type: PoModalPasswordRecoveryType.All,\n * contactMail: 'dev.po@po-ui.com',\n * phoneMask: '9-999-999-9999'\n * }\n * }\n * }\n * ...\n * ];\n *\n * @NgModule({\n * imports: [RouterModule.forRoot(routes)],\n * exports: [RouterModule]\n * })\n * export class AppRoutingModule { }\n * ```\n *\n *\n * O metadado `serviceApi` deve ser a **url** para requisição dos recursos de troca de senha. E `recovery` é a interface\n * `PoPageChangePasswordRecovery` responsável pelas especificações contidas na modal de recuperação de senha.\n *\n * > É essencial que siga a nomenclatura dos atributos exemplificados acima para sua efetiva funcionalidade.\n *\n */\n @Input('p-url-new-password') urlNewPassword?: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Função executada ao submeter o form pelo botão salvar.\n *\n * Caso definida essa função, a modal de confirmação não aparece, mas pode ser chamada pelo\n * método `openConfirmation`. Exemplo:\n *\n * ```\n * @ViewChild(PoPageChangePasswordComponent) changePassword: PoPageChangePasswordComponent;\n *\n * onSubmit() {\n * this.changePassword.openConfirmation();\n * }\n *\n * ```\n * > Esta propriedade será ignorada se for definido valor para a propriedade `p-url-new-password`.\n */\n @Output('p-submit') submit: EventEmitter<any> = new EventEmitter();\n\n confirmPassword: string;\n currentPassword: string;\n modalAction: PoModalAction;\n newPassword: string;\n recoveryUrlType: string;\n showRequirements: boolean;\n\n protected validatorChange: any;\n\n private _componentsSize?: string = undefined;\n private _hideCurrentPassword: boolean = false;\n private _recovery: string | PoPageChangePasswordRecovery | Function;\n private _requirements: Array<PoPageChangePasswordRequirement> = [];\n private _urlHome: string = '/';\n\n /**\n * @optional\n *\n * @description\n *\n * Define o tamanho dos componentes de formulário no template:\n * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n * - `medium`: aplica a medida medium de cada componente.\n *\n * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n *\n * @default `medium`\n */\n @Input('p-components-size') set componentsSize(value: string) {\n this._componentsSize = validateSizeFn(value);\n }\n\n get componentsSize(): string {\n return this._componentsSize ?? getDefaultSizeFn();\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Esconde o campo `Senha atual` para que o template seja para criação de senha.\n *\n * @default `false`\n */\n @Input('p-hide-current-password') set hideCurrentPassword(value: boolean) {\n this._hideCurrentPassword = convertToBoolean(value);\n }\n\n get hideCurrentPassword(): boolean {\n return this._hideCurrentPassword;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * URL para a ação do link `Esqueceu a senha`.\n *\n * A propriedade aceita os seguintes tipos:\n *\n * - **String**: informe uma url externa ou uma rota válida;\n * - **Function**: pode-se customizar a ação. Para esta possilidade basta atribuir:\n * ```\n * <po-page-change-password>\n * [recovery]=\"this.myFunc.bind(this)\";\n * </po-page-change-password>\n * ```\n *\n * - **PoPageChangePasswordRecovery**: cria-se vínculo automático com o template **po-modal-password-recovery**.\n * O objeto deve conter a **url** para requisição dos recursos e pode-se definir o **tipo** de modal para recuperação de senha,\n * **email** para contato e **máscara** do campo de telefone.\n *\n * > Caso não tenha valor o link `Esqueceu a senha` desaparece.\n */\n @Input('p-recovery') set recovery(value: string | Function | PoPageChangePasswordRecovery) {\n this._recovery = value;\n\n if (isTypeof(value, 'string')) {\n this.recoveryUrlType = isExternalLink(value) ? 'externalLink' : 'internalLink';\n }\n }\n\n get recovery() {\n return this._recovery;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Lista de regras para criação e alteração de senha.\n */\n @Input('p-requirements') set requirements(value: Array<PoPageChangePasswordRequirement>) {\n this._requirements = value || [];\n this.showRequirements = this._requirements.length > 0;\n }\n get requirements() {\n return this._requirements;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * URL para a ação do botão `Entrar no sistema` da modal de confirmação que aparece após salvar a senha ou se chamada pelo método\n * `openConfirmation`.\n *\n * @default `/`\n */\n @Input('p-url-home') set urlHome(value: string) {\n this._urlHome = value;\n this.modalAction.action = this.navigateTo.bind(this, this.urlHome);\n }\n get urlHome() {\n return this._urlHome;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Define a propriedade nativa `autocomplete` do campo como `off`.\n *\n * > No input de senha(`po-password`) será definido como `new-password`.\n *\n * @default `true`\n */\n @Input('p-no-autocomplete-password') noAutocompletePassword: boolean = true;\n\n abstract navigateTo(url: string): void;\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { HttpClient, HttpResponse } from '@angular/common/http';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PoPageChangePasswordService {\n private http = inject(HttpClient);\n\n post(url: string, item: any): Observable<HttpResponse<object>> {\n return this.http.post<any>(url, item, { observe: 'response' });\n }\n}\n","import {\n AfterViewInit,\n Component,\n ComponentRef,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewContainerRef,\n inject\n} from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { Subscription } from 'rxjs';\n\nimport {\n PoComponentInjectorService,\n PoLanguageService,\n PoModalAction,\n PoModalComponent,\n poLocaleDefault\n} from '@po-ui/ng-components';\n\nimport { isExternalLink, isTypeof } from '../../utils/util';\n\nimport { PoModalPasswordRecoveryType } from '../po-modal-password-recovery/enums/po-modal-password-recovery-type.enum';\nimport { PoModalPasswordRecoveryComponent } from '../po-modal-password-recovery/po-modal-password-recovery.component';\nimport { PoPageChangePasswordRecovery } from './interfaces/po-page-change-password-recovery.interface';\nimport { PoPageChangePasswordRequirement } from './interfaces/po-page-change-password-requirement.interface';\nimport { PoPageChangePassword } from './interfaces/po-page-change-password.interface';\nimport { poPageChangePasswordLiterals } from './literals/i18n/po-page-change-password-literals';\nimport { PoPageChangePasswordBaseComponent } from './po-page-change-password-base.component';\nimport { PoPageChangePasswordService } from './po-page-change-password.service';\n\n/**\n * @docsExtends PoPageChangePasswordBaseComponent\n *\n * @example\n *\n * <example name=\"po-page-change-password-basic\" title=\"PO Page Change Password Basic\">\n * <file name=\"sample-po-page-change-password-basic/sample-po-page-change-password-basic.component.html\"> </file>\n * <file name=\"sample-po-page-change-password-basic/sample-po-page-change-password-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-change-password-labs\" title=\"PO Page Change Password Labs\">\n * <file name=\"sample-po-page-change-password-labs/sample-po-page-change-password-labs.component.html\"> </file>\n * <file name=\"sample-po-page-change-password-labs/sample-po-page-change-password-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-change-password-modify\" title=\"PO Page Change Password Modify\">\n * <file name=\"sample-po-page-change-password-modify/sample-po-page-change-password-modify.component.html\"> </file>\n * <file name=\"sample-po-page-change-password-modify/sample-po-page-change-password-modify.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-change-password-create\" title=\"PO Page Change Password Create\">\n * <file name=\"sample-po-page-change-password-create/sample-po-page-change-password-create.component.html\"> </file>\n * <file name=\"sample-po-page-change-password-create/sample-po-page-change-password-create.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-change-password-request\" title=\"PO Page Change Password Request\">\n * <file name=\"sample-po-page-change-password-request/sample-po-page-change-password-request.component.html\"> </file>\n * <file name=\"sample-po-page-change-password-request/sample-po-page-change-password-request.component.ts\"> </file>\n * </example>\n */\n@Component({\n selector: 'po-page-change-password',\n templateUrl: './po-page-change-password.component.html',\n standalone: false\n})\nexport class PoPageChangePasswordComponent\n extends PoPageChangePasswordBaseComponent\n implements AfterViewInit, OnDestroy, OnInit\n{\n private activatedRoute = inject(ActivatedRoute);\n private route = inject(ActivatedRoute);\n private router = inject(Router);\n private service = inject(PoPageChangePasswordService);\n private poComponentInjector = inject(PoComponentInjectorService);\n\n @ViewChild(PoModalComponent, { static: true }) modal: PoModalComponent;\n @ViewChild('pageChangePassword', { read: ViewContainerRef, static: true }) pageChangePassword: ViewContainerRef;\n @ViewChild('passwordForm', { read: NgForm, static: true }) passwordForm: NgForm;\n\n literals: {\n backButton: string;\n confirmPassword: string;\n createNewPassword: string;\n createNewPasswordPhrase: string;\n currentPassword: string;\n enterSystemButton: string;\n forgotPassword: string;\n newPassword: string;\n passwordSuccessfullyCreated: string;\n passwordSuccessfullyUpdated: string;\n requirements: string;\n safetyTips: string;\n safetyTipsPhrase: string;\n safetyTipsFirst: string;\n safetyTipsSecond: string;\n safetyTipsThird: string;\n saveButton: string;\n } = poPageChangePasswordLiterals[poLocaleDefault];\n\n modalAction: PoModalAction = {\n action: this.navigateTo.bind(this, this.urlHome),\n label: this.literals.enterSystemButton\n };\n\n private newPasswordSubscription: Subscription;\n private componentRef: ComponentRef<any> = null;\n\n constructor() {\n const languageService = inject(PoLanguageService);\n\n super();\n\n const language = languageService.getShortLanguage();\n\n this.literals = {\n ...poPageChangePasswordLiterals[poLocaleDefault],\n ...poPageChangePasswordLiterals[language]\n };\n }\n\n ngAfterViewInit() {\n if (this.urlNewPassword) {\n this.subscribeToTokenParameter();\n }\n }\n\n ngOnDestroy() {\n if (this.newPasswordSubscription) {\n this.newPasswordSubscription.unsubscribe();\n }\n }\n\n ngOnInit() {\n this.checkingForRouteMetadata(this.activatedRoute.snapshot.data);\n }\n\n navigateTo(url: string) {\n isExternalLink(url) ? window.open(url) : this.router.navigate([url || '/']);\n }\n\n onForgotPasswordClick(recovery): void {\n if (isTypeof(recovery, 'function')) {\n recovery();\n } else {\n this.createModalPasswordRecoveryComponent(recovery);\n }\n }\n\n onLoginSubmit(): void {\n const form = this.getLoginForm();\n\n if (this.urlNewPassword) {\n this.postUrlNewPassword(form);\n } else if (this.submit && this.submit.observers.length) {\n this.emitSubmit(form);\n }\n }\n\n /**\n * Abre uma modal de confirmação com texto, imagem e botão que redireciona para o link definido na propriedade `p-url-home`\u001c\n */\n openConfirmation() {\n this.modal.open();\n }\n\n validatePassword() {\n const controls = this.passwordForm.form.controls;\n const controlConfirmPassword = controls['confirmPassword'];\n const controlNewPassword = controls['newPassword'];\n\n if (!this.newPassword) {\n this.setFormErrors({ 'required': true }, [controlNewPassword]);\n } else if (!this.confirmPassword) {\n this.setFormErrors({ 'required': true }, [controlConfirmPassword]);\n } else if (this.newPassword && this.confirmPassword && this.newPassword !== this.confirmPassword) {\n this.setFormErrors({ 'equalPassword': true }, [controlNewPassword, controlConfirmPassword]);\n } else {\n this.setFormErrors(null, [controlConfirmPassword, controlNewPassword]);\n }\n\n if (\n this.requirements.length &&\n this.requirements.find(requirement => this.validateRequirement(requirement) === false)\n ) {\n this.setFormErrors({ 'requirement': true }, [controlNewPassword]);\n }\n }\n\n validateRequirement(requirement: PoPageChangePasswordRequirement) {\n return typeof requirement.status === 'function' ? requirement.status(this.newPassword) : requirement.status;\n }\n\n private checkingForMetadataProperty(object, property) {\n if (Object.prototype.hasOwnProperty.call(object, property)) {\n return object[property];\n }\n }\n\n private checkingForRouteMetadata(data) {\n if (Object.keys(data).length !== 0) {\n this.urlNewPassword = this.checkingForMetadataProperty(data, 'serviceApi') || this.urlNewPassword;\n this.recovery = this.checkingForMetadataProperty(data, 'recovery') || this.recovery;\n this.hideCurrentPassword =\n this.checkingForMetadataProperty(data, 'hideCurrentPassword') || this.hideCurrentPassword;\n }\n }\n\n private createModalPasswordRecoveryComponent(recovery: PoPageChangePasswordRecovery) {\n if (this.componentRef) {\n this.poComponentInjector.destroyComponentInApplication(this.componentRef);\n }\n\n this.componentRef = this.poComponentInjector.createComponentInApplication(PoModalPasswordRecoveryComponent);\n this.componentRef.instance.recovery = recovery.url;\n this.componentRef.instance.contactEmail = recovery.contactMail;\n this.componentRef.instance.phoneMask = recovery.phoneMask;\n this.componentRef.instance.type = recovery.type || PoModalPasswordRecoveryType.Email;\n this.componentRef.changeDetectorRef.detectChanges();\n setTimeout(() => {\n this.componentRef.instance.open();\n });\n }\n\n private emitSubmit(form: PoPageChangePassword) {\n this.submit.emit(form);\n }\n\n private getLoginForm(): PoPageChangePassword {\n return {\n currentPassword: this.currentPassword,\n newPassword: this.newPassword\n };\n }\n\n private postUrlNewPassword(form: PoPageChangePassword) {\n form['token'] = this.token;\n\n this.service.post(this.urlNewPassword, form).subscribe(response => {\n if (response.status === 204) {\n this.openConfirmation();\n }\n });\n }\n\n private setFormErrors(error: any, controls?: Array<any>) {\n controls.forEach(control => {\n control.setErrors(error);\n });\n }\n\n private subscribeToTokenParameter() {\n this.route.queryParams.subscribe(params => {\n const token = params['token'];\n\n if (token) {\n this.token = token;\n }\n });\n }\n}\n","<div class=\"po-page-change-password-wrapper\" #pageChangePassword>\n <div class=\"po-page-change-password-container\">\n <po-page-background\n class=\"po-page-change-password\"\n [p-components-size]=\"componentsSize\"\n [p-logo]=\"logo\"\n [p-secondary-logo]=\"secondaryLogo\"\n >\n <div class=\"po-page-blocked-user-header po-row\">\n <div class=\"po-md-12\">{{ literals.createNewPassword }}</div>\n <div class=\"po-md-12 po-text-center po-font-text\">\n {{ literals.createNewPasswordPhrase }}\n </div>\n </div>\n\n <form #passwordForm=\"ngForm\">\n <div class=\"po-row po-mt-3 po-mt-sm-1\">\n <div class=\"po-md-6\" [ngClass]=\"{ 'po-offset-md-3 po-offset-lg-3 po-offset-xl-3': !showRequirements }\">\n @if (!hideCurrentPassword) {\n <div>\n <po-password\n name=\"currentPassword\"\n [(ngModel)]=\"currentPassword\"\n p-required\n [p-label]=\"literals.currentPassword\"\n [p-no-autocomplete]=\"noAutocompletePassword\"\n [p-size]=\"componentsSize\"\n >\n </po-password>\n </div>\n }\n @if (!hideCurrentPassword && recovery) {\n <div class=\"po-text-center po-mb-sm-1 po-mb-2\">\n @if (recoveryUrlType === 'internalLink') {\n <a class=\"po-font-text-bold po-page-change-password-forgot-password\" [routerLink]=\"recovery\">\n {{ literals.forgotPassword }}\n </a>\n }\n @if (recoveryUrlType === 'externalLink') {\n <a class=\"po-font-text-bold po-page-change-password-forgot-password\" [href]=\"recovery\">\n {{ literals.forgotPassword }}\n </a>\n }\n @if (!recoveryUrlType) {\n <a\n class=\"po-font-text-bold po-page-change-password-forgot-password po-clickable\"\n (click)=\"onForgotPasswordClick(recovery)\"\n >\n {{ literals.forgotPassword }}\n </a>\n }\n </div>\n }\n <div>\n <po-password\n name=\"newPassword\"\n [(ngModel)]=\"newPassword\"\n p-required\n [p-label]=\"literals.newPassword\"\n (p-change-model)=\"validatePassword()\"\n [p-no-autocomplete]=\"noAutocompletePassword\"\n [p-size]=\"componentsSize\"\n >\n </po-password>\n </div>\n <div>\n <po-password\n name=\"confirmPassword\"\n [(ngModel)]=\"confirmPassword\"\n p-required\n [p-label]=\"literals.confirmPassword\"\n (p-change-model)=\"validatePassword()\"\n [p-no-autocomplete]=\"noAutocompletePassword\"\n [p-size]=\"componentsSize\"\n >\n </po-password>\n </div>\n </div>\n @if (showRequirements) {\n <div class=\"po-md-6 po-page-change-password-required-container\">\n <po-container>\n <ul class=\"po-page-change-password-required-list\">\n <li class=\"po-page-change-password-required-item\">\n <p class=\"po-mb-1 po-font-text-bold po-page-change-password-required-title\">\n {{ literals?.requirements }}\n </p>\n </li>\n @for (requirement of requirements; track requirement) {\n <li class=\"po-page-change-password-required-item\">\n <po-icon\n class=\"po-icon po-page-change-password-required-icon\"\n [p-icon]=\"\n validateRequirement(requirement)\n ? 'ICON_OK po-page-change-password-required-ok'\n : 'ICON_MINUS po-page-change-password-required-minus'\n \"\n >\n </po-icon>\n <p class=\"po-page-change-password-required-text po-font-text\">\n {{ requirement.requirement }}\n </p>\n </li>\n }\n </ul>\n </po-container>\n </div>\n }\n </div>\n </form>\n\n <po-divider class=\"po-sm-12\"></po-divider>\n\n <div class=\"po-page-change-password-tips po-row\">\n <div class=\"po-md-2 po-mr-3\">\n <img\n class=\"po-page-change-password-lock-image po-mb-3\"\n alt=\"Blocked user image\"\n src=\"./assets/images/big-lock.svg\"\n />\n </div>\n <div class=\"po-md-9 po-page-change-password-tips-text\">\n <div class=\"po-font-text-bold po-pb-1\">{{ literals.safetyTips }}</div>\n <div class=\"po-font-text-small\">\n <div class=\"po-row po-pb-1\">{{ literals.safetyTipsPhrase }}</div>\n <div class=\"po-row po-pb-1\">• {{ literals.safetyTipsFirst }}</div>\n <div class=\"po-row po-pb-1\">• {{ literals.safetyTipsSecond }}</div>\n <div class=\"po-row po-pb-1\">• {{ literals.safetyTipsThird }}</div>\n </div>\n </div>\n </div>\n\n <div class=\"po-page-change-password-buttons po-row\">\n <po-divider class=\"po-sm-12 po-mobile-only\"></po-divider>\n\n @if (!hideCurrentPassword) {\n <po-button\n class=\"po-sm-6 po-mb-sm-1\"\n [p-label]=\"literals.backButton\"\n [p-size]=\"componentsSize\"\n (p-click)=\"navigateTo(urlBack)\"\n >\n </po-button>\n }\n\n <po-button\n [ngClass]=\"hideCurrentPassword ? 'po-md-12' : 'po-sm-6'\"\n p-kind=\"primary\"\n [p-disabled]=\"passwordForm.invalid\"\n [p-label]=\"literals.saveButton\"\n [p-size]=\"componentsSize\"\n (p-click)=\"onLoginSubmit()\"\n >\n </po-button>\n </div>\n </po-page-background>\n </div>\n</div>\n\n<po-modal\n [p-primary-action]=\"modalAction\"\n p-hide-close\n p-size=\"auto\"\n [p-components-size]=\"componentsSize\"\n [p-title]=\"hideCurrentPassword ? literals.passwordSuccessfullyCreated : literals.passwordSuccessfullyUpdated\"\n>\n <div class=\"po-text-center\">\n <img\n alt=\"Blocked user image\"\n class=\"po-page-change-password-lock-image po-mb-3\"\n src=\"./assets/images/success.svg\"\n />\n </div>\n</po-modal>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { PoModule } from '@po-ui/ng-components';\n\nimport { PoPageBackgroundModule } from '../po-page-background/index';\nimport { PoPageChangePasswordComponent } from './po-page-change-password.component';\nimport { PoPageChangePasswordService } from './po-page-change-password.service';\n\n/**\n * @description\n *\n * Módulo do template do po-page-change-password.\n */\n@NgModule({\n imports: [CommonModule, FormsModule, RouterModule, PoModule, PoPageBackgroundModule],\n declarations: [PoPageChangePasswordComponent],\n providers: [PoPageChangePasswordService],\n exports: [PoPageChangePasswordComponent]\n})\nexport class PoPageChangePasswordModule {}\n","import { Injectable, inject } from '@angular/core';\nimport { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from '@angular/common/http';\n\nimport { merge, Observable, of, throwError } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\n\nimport { PoLanguageService, PoNotificationService } from '@po-ui/ng-components';\n\nimport { PoPageDynamicLiterals } from './po-page-dynamic-literals.interface';\n\nexport const poPageDynamicLiterals: { [key: string]: PoPageDynamicLiterals } = {\n en: {\n errorRenderPage: 'Error loading page',\n notPossibleLoadMetadataPage: 'The page metadata could not be loaded'\n },\n es: {\n errorRenderPage: 'Error al cargar la página',\n notPossibleLoadMetadataPage: 'No se pudieron cargar los metadatos de la página.'\n },\n pt: {\n errorRenderPage: 'Erro ao carregar a página',\n notPossibleLoadMetadataPage: 'Não foi possível carregar os metadados da página'\n },\n ru: {\n errorRenderPage: 'Ошибка загрузки страницы',\n notPossibleLoadMetadataPage: 'Не удалось загрузить метаданные страницы'\n }\n};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PoPageDynamicService {\n private http = inject(HttpClient);\n private notification = inject(PoNotificationService);\n\n readonly headers: HttpHeaders = new HttpHeaders({\n 'X-PO-SCREEN-LOCK': 'true'\n });\n\n private endpoint = '/';\n private language: string;\n private metadata: string;\n\n constructor() {\n const languageService = inject(PoLanguageService);\n\n this.language = languageService.getShortLanguage();\n }\n\n configServiceApi(config: { endpoint?: string; metadata?: string } = {}) {\n this.endpoint = config.endpoint;\n this.metadata = config.metadata || this.metadata;\n }\n\n getMetadata<T>(type: string = 'list'): Observable<T> {\n const key = `${this.endpoint}-${type}-metadata`;\n const cache = JSON.parse(localStorage.getItem(key)) || {};\n const metadataUrlBase = this.metadata || `${this.endpoint}/metadata`;\n\n const url = `${metadataUrlBase}?type=${type}&version=${cache.version || ''}`;\n\n return this.http.get<T>(url).pipe(\n map((response: any) => {\n if (response.version !== undefined && response.version === cache.version) {\n return cache;\n }\n\n localStorage.setItem(key, JSON.stringify(response));\n\n return { ...cache, ...response };\n }),\n catchError((error: HttpErrorResponse) => {\n if (Object.keys(cache).length) {\n return of(cache);\n }\n\n const { errorRenderPage, notPossibleLoadMetadataPage } = poPageDynamicLiterals[this.language];\n\n this.notification.warning(notPossibleLoadMetadataPage);\n\n return merge(of({ title: errorRenderPage }), throwError(error));\n })\n );\n }\n\n // Deleta um único recurso\n deleteResource(id?, endpoint?: string): Observable<any> {\n const localEndPoint = this.getLocalEndPoint(endpoint, true);\n const url = id ? `${localEndPoint}/${id}` : localEndPoint;\n return this.http.delete(url, { headers: this.headers });\n }\n\n // Deleta recursos em lote\n deleteResources(ids: Array<any>, endpoint?: string): Observable<any> {\n return this.http.request('delete', `${this.getLocalEndPoint(endpoint)}`, { headers: this.headers, body: ids });\n }\n\n // Busca uma lista de recursos\n getResources(params?: HttpParams, endpoint?: string): Observable<any> {\n return this.http.get(this.getLocalEndPoint(endpoint), { headers: this.headers, params });\n }\n\n // Busca um único recurso\n getResource(id, endpoint?: string): Observable<any> {\n return this.http.get(`${this.getLocalEndPoint(endpoint, true)}/${id}`, { headers: this.headers });\n }\n\n // Cria um recurso\n createResource(resource, endpoint?: string): Observable<any> {\n return this.http.post(`${this.getLocalEndPoint(endpoint)}`, resource, { headers: this.headers });\n }\n\n // Atualiza um recurso\n updateResource(id, resource, endpoint?: string): Observable<any> {\n return this.http.put(`${this.getLocalEndPoint(endpoint, true)}/${id}`, resource, { headers: this.headers });\n }\n\n private getLocalEndPoint(endpoint?: string, checkSingleBar = false) {\n endpoint = endpoint ?? this.endpoint;\n if (checkSingleBar) {\n endpoint = endpoint === '/' ? '' : endpoint;\n }\n return endpoint;\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { Observable, from } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { PoPageDynamicOptionsSchema, PoPageDynamicOptionsProp } from './po-page-dynamic-options.interface';\n\ntype urlOrFunction = string | Function;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PoPageCustomizationService {\n private http = inject(HttpClient);\n\n getCustomOptions<T>(\n origin: urlOrFunction,\n originalOption: T,\n optionSchema: PoPageDynamicOptionsSchema<T>\n ): Observable<T> {\n return this.createObservable<T>(origin).pipe(\n map(newPageOptions => this.mergePageOptions<T>(originalOption, newPageOptions, optionSchema))\n );\n }\n\n changeOriginalOptionsToNewOptions<T extends object, K>(objectToChange: T, newOptions: K) {\n Object.keys(newOptions).forEach(key => {\n const value = newOptions[key];\n if (key in objectToChange) {\n if (Array.isArray(value)) {\n objectToChange[key] = [...value];\n return;\n }\n if (typeof value === 'number' || typeof value === 'string' || typeof value === 'boolean') {\n objectToChange[key] = value;\n return;\n }\n if (value !== null && typeof value === 'object') {\n objectToChange[key] = { ...value };\n }\n }\n });\n }\n\n private createObservable<T>(origin: urlOrFunction): Observable<T> {\n if (typeof origin === 'string') {\n return this.http.post<T>(origin, {});\n }\n return from(Promise.resolve(origin()));\n }\n\n private mergePageOptions<T>(originalOption: T, newPageOptions: T, optionSchema: PoPageDynamicOptionsSchema<T>) {\n const mergePageOptions: T = optionSchema.schema.reduce(\n (objWithNewProp, prop) => ({\n ...objWithNewProp,\n [prop.nameProp]: this.createNewProp(prop, originalOption, newPageOptions)\n }),\n {} as T\n );\n\n Object.keys(mergePageOptions).forEach(key => mergePageOptions[key] === undefined && delete mergePageOptions[key]);\n\n return mergePageOptions;\n }\n\n private createNewProp<T>(prop: PoPageDynamicOptionsProp<T>, originalOption: T, newPageOptions: T) {\n if (prop.merge) {\n return this.mergeOptions(originalOption[prop.nameProp], newPageOptions[prop.nameProp], prop.keyForMerge);\n } else {\n return newPageOptions[prop.nameProp] ?? originalOption[prop.nameProp];\n }\n }\n\n private mergeOptions<T>(originalOptions: Array<T> | T, newOptions: Array<T> | T, filterProp?: keyof T) {\n if (!originalOptions && !newOptions) {\n return;\n }\n if (!newOptions) {\n return originalOptions;\n }\n if (!originalOptions) {\n return newOptions;\n }\n\n if (originalOptions instanceof Array && newOptions instanceof Array) {\n return this.mergeOptionsArray(originalOptions, newOptions, filterProp);\n }\n\n return { ...originalOptions, ...newOptions };\n }\n\n private mergeOptionsArray<T>(originalOptions: Array<T>, newOptions: Array<T>, filterProp: keyof T) {\n const deduplicateNewOptions = newOptions.filter(\n newItem => !originalOptions.find(originalItem => originalItem[filterProp] === newItem[filterProp])\n );\n const mergedOriginalOptions = originalOptions.map(originalItem => {\n const newItem =\n newOptions.find(newOptionsItem => originalItem[filterProp] === newOptionsItem[filterProp]) || originalItem;\n return { ...originalItem, ...newItem };\n });\n return [...mergedOriginalOptions, ...deduplicateNewOptions];\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, of } from 'rxjs';\n\nimport { PoPageDynamicDetailActions } from './interfaces/po-page-dynamic-detail-actions.interface';\nimport { PoPageDynamicDetailBeforeBack } from './interfaces/po-page-dynamic-detail-before-back.interface';\nimport { PoPageDynamicDetailBeforeRemove } from './interfaces/po-page-dynamic-detail-before-remove.interface';\nimport { PoPageDynamicDetailBeforeEdit } from './interfaces/po-page-dynamic-detail-before-edit.interface';\n\ninterface ExecuteActionParameter {\n action: string | Function;\n resource?: any;\n id?: string | number;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PoPageDynamicDetailActionsService {\n private http = inject(HttpClient);\n\n readonly headers: HttpHeaders = new HttpHeaders({\n 'X-PO-SCREEN-LOCK': 'true'\n });\n\n beforeBack(action?: PoPageDynamicDetailActions['beforeBack']): Observable<PoPageDynamicDetailBeforeBack> {\n return this.executeAction({ action });\n }\n\n beforeEdit(\n action: PoPageDynamicDetailActions['beforeEdit'],\n id: any,\n body: any\n ): Observable<PoPageDynamicDetailBeforeEdit> {\n const resource = body ?? {};\n\n return this.executeAction({ action, resource, id });\n }\n\n beforeRemove(\n action: PoPageDynamicDetailActions['beforeRemove'],\n id: any,\n body: any\n ): Observable<PoPageDynamicDetailBeforeRemove> {\n const resource = body ?? {};\n\n return this.executeAction({ action, resource, id });\n }\n\n private executeAction<T>({ action, resource = {}, id }: ExecuteActionParameter): Observable<T> {\n if (!action) {\n return of(<T>{});\n }\n\n if (typeof action === 'string') {\n const url = id ? `${action}/${id}` : action;\n\n return this.http.post<T>(url, resource, { headers: this.headers });\n }\n\n return of(action(id, resource));\n }\n}\n","import { Component, Input, OnDestroy, OnInit, inject } from '@angular/core';\nimport { ActivatedRoute, Route, Router } from '@angular/router';\n\nimport { EMPTY, Observable, Subscription, concat, of, throwError } from 'rxjs';\nimport { catchError, map, switchMap, tap } from 'rxjs/operators';\n\nimport {\n PoBreadcrumb,\n PoDialogConfirmOptions,\n PoDialogService,\n PoLanguageService,\n PoNotificationService,\n PoPageAction,\n poLocaleDefault\n} from '@po-ui/ng-components';\n\nimport {\n convertToBoolean,\n getDefaultSizeFn,\n mapObjectByProperties,\n validateSizeFn,\n valuesFromObject\n} from '../../utils/util';\n\nimport { PoPageDynamicService } from '../../services/po-page-dynamic/po-page-dynamic.service';\nimport { PoPageCustomizationService } from './../../services/po-page-customization/po-page-customization.service';\nimport { PoPageDynamicOptionsSchema } from './../../services/po-page-customization/po-page-dynamic-options.interface';\nimport { PoPageDynamicDetailActions } from './interfaces/po-page-dynamic-detail-actions.interface';\nimport { PoPageDynamicDetailBeforeBack } from './interfaces/po-page-dynamic-detail-before-back.interface';\nimport { PoPageDynamicDetailBeforeEdit } from './interfaces/po-page-dynamic-detail-before-edit.interface';\nimport { PoPageDynamicDetailBeforeRemove } from './interfaces/po-page-dynamic-detail-before-remove.interface';\nimport { PoPageDynamicDetailField } from './interfaces/po-page-dynamic-detail-field.interface';\nimport { PoPageDynamicDetailMetaData } from './interfaces/po-page-dynamic-detail-metadata.interface';\nimport { PoPageDynamicDetailOptions } from './interfaces/po-page-dynamic-detail-options.interface';\nimport { PoPageDynamicDetailActionsService } from './po-page-dynamic-detail-actions.service';\n\ntype UrlOrPoCustomizationFunction = string | (() => PoPageDynamicDetailOptions);\n\nexport const poPageDynamicDetailLiteralsDefault = {\n en: {\n pageActionEdit: 'Edit',\n pageActionRemove: 'Delete',\n pageActionBack: 'Back',\n confirmRemoveTitle: 'Confirm delete',\n confirmRemoveMessage: 'Are you sure you want to delete this record? You can not undo this action.',\n removeNotificationSuccess: 'Item deleted successfully.',\n registerNotFound: 'Register not found.'\n },\n es: {\n pageActionEdit: 'Editar',\n pageActionRemove: 'Borrar',\n pageActionBack: 'Regreso',\n confirmRemoveTitle: 'Confirmar la exclusión',\n confirmRemoveMessage: '¿Está seguro de que desea eliminar este registro? No puede deshacer esta acción.',\n removeNotificationSuccess: 'Elemento eliminado con éxito.',\n registerNotFound: 'Registro no encontrado.'\n },\n pt: {\n pageActionEdit: 'Editar',\n pageActionRemove: 'Excluir',\n pageActionBack: 'Voltar',\n confirmRemoveTitle: 'Confirmar exclusão',\n confirmRemoveMessage: 'Tem certeza de que deseja excluir esse registro? Você não poderá desfazer essa ação.',\n removeNotificationSuccess: 'Item excluído com sucesso.',\n registerNotFound: 'Registro não encontrado.'\n },\n ru: {\n pageActionEdit: 'Редактировать',\n pageActionRemove: 'Удалить',\n pageActionBack: 'Назад',\n confirmRemoveTitle: 'Подтверждение удаления',\n confirmRemoveMessage: 'Вы уверены, что хотите удалить эту запись? Вы не можете отменить это действие.',\n removeNotificationSuccess: 'Элемент успешно удален.',\n registerNotFound: 'Запись не найдена.'\n }\n};\n\n/**\n * @description\n *\n * O `po-page-dynamic-detail` é uma página que serve para exibir registros em detalhes,\n * o mesmo também suporta metadados conforme especificado na documentação.\n *\n *\n * ### Utilização via rota\n *\n * Ao utilizar as rotas para inicializar o template, o `page-dynamic-detail` disponibiliza propriedades que devem ser fornecidas no arquivo de configuração de rotas da aplicação, para\n * poder especificar o endpoint dos dados e dos metadados que serão carregados na inicialização.\n *\n * Exemplo de utilização:\n *\n * Arquivo de configuração de rotas da aplicação: `app-routing.module.ts`\n * ```\n * const routes: Routes = [\n * {\n * path: 'people/:id',\n * component: PoPageDynamicDetailComponent,\n * data: {\n * serviceApi: 'http://localhost:3000/v1/people', // endpoint dos dados\n * serviceMetadataApi: 'http://localhost:3000/v1/metadata', // endpoint dos metadados utilizando o método HTTP Get\n * serviceLoadApi: 'http://localhost:3000/load-metadata' // endpoint de customizações dos metadados utilizando o método HTTP Post\n * }\n * },\n * {\n * path: 'home',\n * component: HomeExampleComponent\n * }\n * ];\n *\n * ```\n * O componente primeiro irá carregar o metadado da rota definida na propriedade serviceMetadataApi\n * e depois irá buscar da rota definida na propriedade serviceLoadApi.\n *\n * A requisição dos metadados é feita na inicialização do template para buscar os metadados da página passando o\n * tipo do metadado esperado e a versão cacheada pelo browser.\n *\n * > Caso o servidor retornar um erro ao recuperar os metadados, serão repassados os metadados salvos em cache,\n * se o cache não existir será disparada uma notificação.\n *\n * O formato esperado na resposta da requisição está especificado na interface\n * [PoPageDynamicDetailMetadata](/documentation/po-page-dynamic-detail#po-page-dynamic-detail-metadata). Por exemplo:\n *\n * ```\n * {\n * version: 1,\n * title: 'Person Detail',\n * fields: [\n * { property: 'id', key: true, disabled: true },\n * { property: 'status' },\n * { property: 'name' },\n * { property: 'nickname' },\n * { property: 'birthdate', label: 'Birth date' },\n * { property: 'genre' },\n * { property: 'city' },\n * { property: 'country' }\n * ]\n * }\n * ```\n *\n * > Caso o endpoint dos metadados não seja especificado, será feito uma requisição utilizando o `serviceApi` da seguinte forma:\n * ```\n * GET {end-point}/metadata?type=detail&version={version}\n * ```\n *\n * @example\n *\n * <example name=\"po-page-dynamic-detail-user\" title=\"PO Page Dynamic Detail User\">\n * <file name=\"sample-po-page-dynamic-detail-user/sample-po-page-dynamic-detail-user.component.html\"> </file>\n * <file name=\"sample-po-page-dynamic-detail-user/sample-po-page-dynamic-detail-user.component.ts\"> </file>\n * </example>\n */\n@Component({\n selector: 'po-page-dynamic-detail',\n templateUrl: './po-page-dynamic-detail.component.html',\n providers: [PoPageDynamicService, PoPageDynamicDetailActionsService],\n standalone: false\n})\nexport class PoPageDynamicDetailComponent implements OnInit, OnDestroy {\n private router = inject(Router);\n private activatedRoute = inject(ActivatedRoute);\n private poNotification = inject(PoNotificationService);\n private poDialogService = inject(PoDialogService);\n private poPageDynamicService = inject(PoPageDynamicService);\n private poPageDynamicDetailActionsService = inject(PoPageDynamicDetailActionsService);\n private poPageCustomizationService = inject(PoPageCustomizationService);\n\n /** Objeto com propriedades do breadcrumb. */\n @Input('p-breadcrumb') breadcrumb?: PoBreadcrumb = { items: [] };\n\n /**\n * Função ou serviço que será executado na inicialização do componente.\n *\n * A propriedade aceita os seguintes tipos:\n * - `string`: *Endpoint* usado pelo componente para requisição via `POST`.\n * - `function`: Método que será executado.\n *\n * O retorno desta função deve ser do tipo `PoPageDynamicDetailOptions`,\n * onde o usuário poderá customizar novos campos, breadcrumb, title e actions\n *\n * Por exemplo:\n *\n * ```\n * getPageOptions(): PoPageDynamicDetailOptions {\n * return {\n * actions:\n * { new: 'new', edit: 'edit/:id', remove: true },\n * fields: [\n * { property: 'idCard', gridColumns: 6 }\n * ]\n * };\n * }\n *\n * ```\n * Para referenciar a sua função utilize a propriedade `bind`, por exemplo:\n * ```\n * [p-load]=\"onLoadOptions.bind(this)\"\n * ```\n */\n @Input('p-load') onLoad: string | (() => PoPageDynamicDetailOptions);\n\n /** Título da página. */\n @Input('p-title') title: string;\n\n /**\n * @description\n *\n * Endpoint usado pelo template para requisição do recurso que serão exibido.\n *\n * Caso a ação `remove` estiver configurada, será feito uma requisição de exclusão nesse mesmo endpoint passando os campos\n * setados como `key: true`.\n *\n * > `DELETE {end-point}/{keys}`\n *\n * ```\n * <po-page-dynamic-detail\n * [p-actions]=\"{ remove: '/' }\"\n * [p-fields]=\"[ { property: 'id', key: true } ]\"\n * p-service=\"/api/po-samples/v1/people\"\n * ...>\n * </po-page-dynamic-detail>\n * ```\n *\n * Resquisição disparada, onde a propriedade `id` é igual a 2:\n *\n * ```\n * DELETE /api/po-samples/v1/people/2 HTTP/1.1\n * Host: localhost:4000\n * Connection: keep-alive\n * Accept: application/json, text/plain\n * ...\n * ```\n *\n * > Caso esteja usando metadados com o template, será disparado uma requisição na inicialização do template para buscar\n * > os metadados da página passando o tipo do metadado esperado e a versão cacheada pelo browser.\n * >\n * > `GET {end-point}/metadata?type=detail&version={version}`\n */\n @Input('p-service-api') serviceApi: string;\n\n literals;\n model: any = {};\n\n private subscriptions: Array<Subscription> = [];\n\n private _actions: PoPageDynamicDetailActions = {};\n private _autoRouter: boolean = false;\n private _componentsSize?: string = undefined;\n private _duplicates: Array<any> = [];\n private _fields: Array<any> = [];\n private _keys: Array<any> = [];\n private _pageActions: Array<PoPageAction> = [];\n\n /**\n * @optional\n *\n * @description\n *\n * Define as ações da página de acordo com a interface `PoPageDynamicDetailActions`.\n */\n @Input('p-actions') set actions(value: PoPageDynamicDetailActions) {\n this._actions = this.isObject(value) ? value : {};\n\n this._pageActions = this.getPageActions(this._actions);\n }\n\n get actions() {\n return { ...this._actions };\n }\n\n /**\n * @todo Validar rotas na mão pois se existir uma rota '**' o catch do navigation não funciona.\n *\n * @optional\n *\n * @description\n *\n * Cria automaticamente as rotas de edição (novo/duplicate) e detalhes caso as ações\n * estejam definidas nas ações.\n *\n * > Para o correto funcionamento não pode haver nenhum rota coringa (`**`) especificada.\n *\n * @default false\n */\n @Input('p-auto-router') set autoRouter(value: boolean) {\n this._autoRouter = convertToBoolean(value);\n }\n\n get autoRouter(): boolean {\n return this._autoRouter;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Define o tamanho dos componentes de formulário no template:\n * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n * - `medium`: aplica a medida medium de cada componente.\n *\n * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n *\n * @default `medium`\n */\n @Input('p-components-size') set componentsSize(value: string) {\n this._componentsSize = validateSizeFn(value);\n }\n\n get componentsSize(): string {\n return this._componentsSize ?? getDefaultSizeFn();\n }\n\n /** Lista dos campos exibidos na página. */\n @Input('p-fields') set fields(value: Array<PoPageDynamicDetailField>) {\n this._fields = Array.isArray(value) ? [...value] : [];\n\n this._keys = this.getKeysByFields(this.fields);\n this._duplicates = this.getDuplicatesByFields(this.fields);\n }\n\n get fields(): Array<PoPageDynamicDetailField> {\n return this._fields;\n }\n\n /* eslint-disable max-params */\n constructor() {\n const languageService = inject(PoLanguageService);\n\n const language = languageService.getShortLanguage();\n\n this.literals = {\n ...poPageDynamicDetailLiteralsDefault[poLocaleDefault],\n ...poPageDynamicDetailLiteralsDefault[language]\n };\n }\n /* eslint-enable max-params */\n\n ngOnInit(): void {\n this.loadDataFromAPI();\n }\n\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.forEach(subscription => {\n subscription.unsubscribe();\n });\n }\n }\n\n get duplicates() {\n return [...this._duplicates];\n }\n\n get keys() {\n return [...this._keys];\n }\n\n get pageActions() {\n return [...this._pageActions];\n }\n\n private remove(\n actionRemove: PoPageDynamicDetailActions['remove'],\n actionBeforeRemove?: PoPageDynamicDetailActions['beforeRemove']\n ) {\n const uniqueKey = this.formatUniqueKey(this.model);\n\n this.subscriptions.push(\n this.poPageDynamicDetailActionsService\n .beforeRemove(actionBeforeRemove, uniqueKey, { ...this.model })\n .pipe(\n switchMap((beforeRemoveResult: PoPageDynamicDetailBeforeRemove) => {\n const newRemoveAction = beforeRemoveResult?.newUrl ?? actionRemove;\n const allowAction = beforeRemoveResult?.allowAction ?? true;\n\n if (!allowAction) {\n return of({});\n }\n\n if (typeof newRemoveAction === 'string') {\n return this.executeRemove(newRemoveAction, uniqueKey);\n } else {\n newRemoveAction(uniqueKey, { ...this.model });\n return EMPTY;\n }\n })\n )\n .subscribe()\n );\n }\n\n private confirmRemove(\n actionRemove: PoPageDynamicDetailActions['remove'],\n actionBeforeRemove: PoPageDynamicDetailActions['beforeRemove']\n ) {\n const confirmOptions: PoDialogConfirmOptions = {\n title: this.literals.confirmRemoveTitle,\n message: this.literals.confirmRemoveMessage,\n confirm: this.remove.bind(this, actionRemove, actionBeforeRemove)\n };\n\n this.poDialogService.confirm(confirmOptions);\n }\n\n private executeRemove(path, uniqueKey: any) {\n return this.poPageDynamicService.deleteResource(uniqueKey).pipe(\n map(() => {\n this.poNotification.success(this.literals.removeNotificationSuccess);\n this.navigateTo({ path: path });\n })\n );\n }\n\n private formatUniqueKey(item) {\n const keys = mapObjectByProperties(item, this.keys);\n\n return valuesFromObject(keys).join('|');\n }\n\n private goBack(actionBack: PoPageDynamicDetailActions['back']) {\n this.subscriptions.push(\n this.poPageDynamicDetailActionsService\n .beforeBack(this.actions.beforeBack)\n .subscribe((beforeBackResult: PoPageDynamicDetailBeforeBack) =>\n this.executeBackAction(actionBack, beforeBackResult?.allowAction, beforeBackResult?.newUrl)\n )\n );\n }\n\n private executeBackAction(actionBack: PoPageDynamicDetailActions['back'], allowAction?, newUrl?: string) {\n const isAllowedAction = typeof allowAction === 'boolean' ? allowAction : true;\n\n if (isAllowedAction) {\n if (actionBack === undefined || typeof actionBack === 'boolean') {\n return window.history.back();\n }\n\n if (typeof actionBack === 'string' || newUrl) {\n return this.router.navigate([newUrl || actionBack]);\n }\n\n return actionBack();\n }\n }\n\n private loadData(id) {\n return this.poPageDynamicService.getResource(id).pipe(\n tap(response => {\n if (!response) {\n this.setUndefinedToModelAndActions();\n } else {\n this.model = response;\n }\n }),\n catchError(error => {\n this.setUndefinedToModelAndActions();\n return throwError(error);\n })\n );\n }\n\n private setUndefinedToModelAndActions() {\n this.model = undefined;\n this.actions = undefined;\n }\n\n private getMetadata(\n serviceApiFromRoute: string,\n onLoad: UrlOrPoCustomizationFunction\n ): Observable<PoPageDynamicDetailMetaData> {\n if (serviceApiFromRoute) {\n return this.poPageDynamicService.getMetadata<PoPageDynamicDetailMetaData>('detail').pipe(\n tap(response => {\n this.autoRouter = response.autoRouter || this.autoRouter;\n this.actions = response.actions || this.actions;\n this.breadcrumb = response.breadcrumb || this.breadcrumb;\n this.fields = response.fields || this.fields;\n this.title = response.title || this.title;\n }),\n switchMap(() => this.loadOptionsOnInitialize(onLoad))\n );\n }\n\n return this.loadOptionsOnInitialize(onLoad);\n }\n\n // @todo Validar rotas na mão pois se existir uma rota '**' o catch do navigation não funciona.\n private navigateTo(\n route: { path: string; component?; url?: string; params?: any },\n forceStopAutoRouter: boolean = false\n ) {\n this.router.navigate([route.url || route.path], { queryParams: route.params }).catch(() => {\n if (forceStopAutoRouter || !this.autoRouter) {\n return;\n }\n\n this.router.config.unshift(<Route>{\n path: route.path,\n component: route.component,\n data: { serviceApi: this.serviceApi, autoRouter: true }\n });\n\n this.navigateTo(route, true);\n });\n }\n\n private openEdit(action: PoPageDynamicDetailActions['edit']) {\n const id = this.formatUniqueKey(this.model);\n\n this.subscriptions.push(\n this.poPageDynamicDetailActionsService\n .beforeEdit(this.actions.beforeEdit, id, this.model)\n .pipe(\n switchMap((beforeEditResult: PoPageDynamicDetailBeforeEdit) =>\n this.executeEditAction(action, beforeEditResult, id)\n )\n )\n .subscribe()\n );\n }\n\n private executeEditAction(\n action: PoPageDynamicDetailActions['edit'],\n beforeEditResult: PoPageDynamicDetailBeforeEdit,\n id: any\n ) {\n const newEditAction = beforeEditResult?.newUrl ?? action;\n const allowAction = beforeEditResult?.allowAction ?? true;\n\n if (!allowAction) {\n return of({});\n }\n\n if (typeof newEditAction === 'string') {\n this.openEditUrl(newEditAction);\n } else {\n newEditAction(id, { ...this.model });\n }\n\n return EMPTY;\n }\n\n private openEditUrl(path: string) {\n const url = this.resolveUrl(this.model, path);\n this.navigateTo({ path, url });\n }\n\n private resolveUrl(item: any, path: string) {\n const uniqueKey = this.formatUniqueKey(item);\n\n return path.replace(/:id/g, uniqueKey);\n }\n\n private getPageActions(actions: PoPageDynamicDetailActions = {}): Array<PoPageAction> {\n const pageActions = [];\n\n if (actions.edit) {\n pageActions.push({ label: this.literals.pageActionEdit, action: this.openEdit.bind(this, actions.edit) });\n }\n\n if (actions.remove) {\n pageActions.push({\n label: this.literals.pageActionRemove,\n action: this.confirmRemove.bind(this, actions.remove, this.actions.beforeRemove),\n type: 'danger'\n });\n }\n\n if (actions.back === undefined || actions.back) {\n pageActions.push({ label: this.literals.pageActionBack, action: this.goBack.bind(this, actions.back) });\n }\n\n return pageActions;\n }\n\n private getKeysByFields(fields: Array<any> = []) {\n return fields.filter(field => field.key === true).map(field => field.property);\n }\n\n private getDuplicatesByFields(fields: Array<any> = []) {\n return fields.filter(field => field.duplicate === true).map(field => field.property);\n }\n\n private isObject(value: any): boolean {\n return !!value && typeof value === 'object' && !Array.isArray(value);\n }\n\n private loadDataFromAPI() {\n const { serviceApi: serviceApiFromRoute, serviceMetadataApi, serviceLoadApi } = this.activatedRoute.snapshot.data;\n const { id } = this.activatedRoute.snapshot.params;\n\n const onLoad = serviceLoadApi || this.onLoad;\n this.serviceApi = serviceApiFromRoute || this.serviceApi;\n\n this.poPageDynamicService.configServiceApi({ endpoint: this.serviceApi, metadata: serviceMetadataApi });\n\n const metadata$ = this.getMetadata(serviceApiFromRoute, onLoad);\n const data$ = this.loadData(id);\n\n this.subscriptions.push(concat(metadata$, data$).subscribe());\n }\n\n private loadOptionsOnInitialize(onLoad: UrlOrPoCustomizationFunction) {\n if (onLoad) {\n return this.getPoDynamicPageOptions(onLoad).pipe(\n tap(responsePoOption =>\n this.poPageCustomizationService.changeOriginalOptionsToNewOptions(this, responsePoOption)\n )\n );\n }\n\n return EMPTY;\n }\n\n private getPoDynamicPageOptions(onLoad: UrlOrPoCustomizationFunction): Observable<PoPageDynamicDetailOptions> {\n const originalOption: PoPageDynamicDetailOptions = {\n fields: this.fields,\n actions: this.actions,\n breadcrumb: this.breadcrumb,\n title: this.title\n };\n\n const pageOptionSchema: PoPageDynamicOptionsSchema<PoPageDynamicDetailOptions> = {\n schema: [\n {\n nameProp: 'fields',\n merge: true,\n keyForMerge: 'property'\n },\n {\n nameProp: 'actions',\n merge: true\n },\n {\n nameProp: 'breadcrumb'\n },\n {\n nameProp: 'title'\n }\n ]\n };\n\n return this.poPageCustomizationService.getCustomOptions(onLoad, originalOption, pageOptionSchema);\n }\n}\n","<po-page-default\n [p-actions]=\"pageActions\"\n [p-breadcrumb]=\"breadcrumb\"\n [p-components-size]=\"componentsSize\"\n [p-title]=\"title\"\n>\n @if (model) {\n <po-dynamic-view [p-fields]=\"fields\" [p-value]=\"model\"> </po-dynamic-view>\n } @else {\n <po-widget>\n <po-icon p-icon=\"ICON_INFO\"></po-icon>\n <span class=\"po-font-text-large\">\n {{ literals.registerNotFound }}\n </span>\n </po-widget>\n }\n</po-page-default>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PoPageDynamicService } from './po-page-dynamic.service';\n/**\n * @description\n *\n * Módulo do serviço do po-page-dynamic-service.\n */\n@NgModule({\n imports: [CommonModule],\n providers: [PoPageDynamicService]\n})\nexport class PoPageDynamicModule {}\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { PoDynamicModule, PoIconModule, PoModalModule, PoPageModule, PoWidgetModule } from '@po-ui/ng-components';\n\nimport { PoPageDynamicDetailComponent } from './po-page-dynamic-detail.component';\nimport { PoPageDynamicModule } from '../../services/po-page-dynamic/po-page-dynamic.module';\n\n/**\n * @description\n *\n * Módulo do template do po-page-dynamic-detail.\n */\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n RouterModule,\n PoDynamicModule,\n PoIconModule,\n PoModalModule,\n PoPageModule,\n PoWidgetModule,\n PoPageDynamicModule\n ],\n declarations: [PoPageDynamicDetailComponent],\n exports: [PoPageDynamicDetailComponent]\n})\nexport class PoPageDynamicDetailModule {}\n","import { Injectable, inject } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { of, Observable } from 'rxjs';\n\nimport { PoPageDynamicEditActions } from './interfaces/po-page-dynamic-edit-actions.interface';\nimport { PoPageDynamicEditBeforeCancel } from './interfaces/po-page-dynamic-edit-before-cancel.interface';\nimport { PoPageDynamicEditBeforeSave } from './interfaces/po-page-dynamic-edit-before-save.interface';\nimport { PoPageDynamicEditBeforeSaveNew } from './interfaces/po-page-dynamic-edit-before-save-new.interface';\n\ninterface ExecuteActionParameter {\n action: string | Function;\n id?: string | number;\n resource?: any;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PoPageDynamicEditActionsService {\n private http = inject(HttpClient);\n\n readonly headers: HttpHeaders = new HttpHeaders({\n 'X-PO-SCREEN-LOCK': 'true'\n });\n\n beforeCancel(action: PoPageDynamicEditActions['beforeCancel']): Observable<PoPageDynamicEditBeforeCancel> {\n return this.executeAction({ action });\n }\n\n beforeSave(\n action: PoPageDynamicEditActions['beforeSave'],\n id: string,\n body: any\n ): Observable<PoPageDynamicEditBeforeSave> {\n const resource = body ?? {};\n return this.executeAction({ action, resource, id });\n }\n\n beforeSaveNew(\n action: PoPageDynamicEditActions['beforeSaveNew'],\n id: string,\n body: any\n ): Observable<PoPageDynamicEditBeforeSaveNew> {\n const resource = body ?? {};\n return this.executeAction({ action, resource, id });\n }\n\n private executeAction<T>({ action, resource = {}, id }: ExecuteActionParameter): Observable<T> {\n if (!action) {\n return of(<T>{});\n }\n\n if (typeof action === 'string') {\n const url = id ? `${action}/${id}` : action;\n\n return this.http.post<T>(url, resource, { headers: this.headers });\n }\n\n return of(action(resource, id));\n }\n}\n","import { Component, Input, OnDestroy, OnInit, ViewChild, inject } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { concat, EMPTY, Observable, of, Subscription, throwError } from 'rxjs';\nimport { catchError, map, switchMap, tap } from 'rxjs/operators';\n\nimport {\n PoBreadcrumb,\n PoDialogService,\n PoDynamicFormComponent,\n PoGridComponent,\n PoGridRowActions,\n PoLanguageService,\n poLocaleDefault,\n PoNotificationService,\n PoPageAction\n} from '@po-ui/ng-components';\n\nimport {\n convertToBoolean,\n getDefaultSizeFn,\n mapObjectByProperties,\n removeKeysProperties,\n validateSizeFn,\n valuesFromObject\n} from './../../utils/util';\n\nimport { PoPageCustomizationService } from '../../services/po-page-customization/po-page-customization.service';\nimport { PoPageDynamicOptionsSchema } from '../../services/po-page-customization/po-page-dynamic-options.interface';\nimport { PoPageDynamicService } from '../../services/po-page-dynamic/po-page-dynamic.service';\nimport { PoPageDynamicEditActions } from './interfaces/po-page-dynamic-edit-actions.interface';\nimport { PoPageDynamicEditBeforeCancel } from './interfaces/po-page-dynamic-edit-before-cancel.interface';\nimport { PoPageDynamicEditField } from './interfaces/po-page-dynamic-edit-field.interface';\nimport { PoPageDynamicEditLiterals } from './interfaces/po-page-dynamic-edit-literals.interface';\nimport { PoPageDynamicEditMetadata } from './interfaces/po-page-dynamic-edit-metadata.interface';\nimport { PoPageDynamicEditOptions } from './interfaces/po-page-dynamic-edit-options.interface';\nimport { PoPageDynamicEditActionsService } from './po-page-dynamic-edit-actions.service';\n\ntype UrlOrPoCustomizationFunction = string | (() => PoPageDynamicEditOptions);\ntype SaveAction = PoPageDynamicEditActions['save'] | PoPageDynamicEditActions['saveNew'];\n\nexport const poNotificationType = ['error', 'warning'];\nexport const poNotificationTypeDefault = 'warning';\n\nexport const poPageDynamicEditLiteralsDefault = {\n en: <PoPageDynamicEditLiterals>{\n cancelConfirmMessage: 'Are you sure you want to cancel this operation?',\n detailActionNew: 'New',\n pageActionCancel: 'Cancel',\n pageActionSave: 'Save',\n pageActionSaveNew: 'Save and new',\n registerNotFound: 'Register not found.',\n saveNotificationError: 'Mandatory field(s) not filled.',\n saveNotificationSuccessSave: 'Resource successfully saved.',\n saveNotificationSuccessUpdate: 'Resource successfully updated.',\n saveNotificationWarning: 'Form must be filled out correctly.'\n },\n es: <PoPageDynamicEditLiterals>{\n cancelConfirmMessage: 'Está seguro de que desea cancelar esta operación?',\n detailActionNew: 'Nuevo',\n pageActionCancel: 'Cancelar',\n pageActionSave: 'Guardar',\n pageActionSaveNew: 'Guardar y nuevo',\n registerNotFound: 'Registro no encontrado.',\n saveNotificationError: 'Campo(s) obligatorio(s) no completado(s).',\n saveNotificationSuccessSave: 'Recurso salvo con éxito.',\n saveNotificationSuccessUpdate: 'Recurso actualizado con éxito.',\n saveNotificationWarning: 'El formulario debe llenarse correctamente.'\n },\n pt: <PoPageDynamicEditLiterals>{\n cancelConfirmMessage: 'Tem certeza que deseja cancelar esta operação?',\n detailActionNew: 'Novo',\n pageActionCancel: 'Cancelar',\n pageActionSave: 'Salvar',\n pageActionSaveNew: 'Salvar e novo',\n registerNotFound: 'Registro não encontrado.',\n saveNotificationError: 'Campo(s) obrigatório(s) sem preenchimento.',\n saveNotificationSuccessSave: 'Recurso salvo com sucesso.',\n saveNotificationSuccessUpdate: 'Recurso atualizado com sucesso.',\n saveNotificationWarning: 'Formulário precisa ser preenchido corretamente.'\n },\n ru: <PoPageDynamicEditLiterals>{\n cancelConfirmMessage: 'Вы уверены, что хотите отменить эту операцию?',\n detailActionNew: 'Новый',\n pageActionCancel: 'Отменить',\n pageActionSave: 'Сохранить',\n pageActionSaveNew: 'Сохранить и создать',\n registerNotFound: 'Запись не найдена.',\n saveNotificationError: 'Обязательное поле(я) не заполнено.',\n saveNotificationSuccessSave: 'Ресурс успешно сохранен.',\n saveNotificationSuccessUpdate: 'Ресурс успешно обновлен.',\n saveNotificationWarning: 'Форма должна быть заполнена правильно.'\n }\n};\n\n/**\n * @description\n *\n * O `po-page-dynamic-edit` é uma página que pode servir para editar ou criar novos registros,\n * o mesmo também suporta metadados conforme especificado na documentação.\n *\n * ### Utilização via rota\n *\n * Ao utilizar as rotas para inicializar o template, o `page-dynamic-edit` disponibiliza propriedades que devem ser fornecidas no arquivo de configuração de rotas da aplicação, para\n * poder especificar o endpoint dos dados e dos metadados que serão carregados na inicialização.\n *\n * Exemplo de utilização:\n *\n * Arquivo de configuração de rotas da aplicação: `app-routing.module.ts`\n * ```\n * const routes: Routes = [\n * {\n * path: 'people',\n * component: PoPageDynamicEditComponent,\n * data: {\n * serviceApi: 'http://localhost:3000/v1/people', // endpoint dos dados\n * serviceMetadataApi: 'http://localhost:3000/v1/metadata', // endpoint dos metadados utilizando o método HTTP Get\n * serviceLoadApi: 'http://localhost:3000/load-metadata' // endpoint de customizações dos metadados utilizando o método HTTP Post\n * }\n * },\n * {\n * path: 'home',\n * component: HomeExampleComponent\n * }\n * ];\n *\n * ```\n * O componente primeiro irá carregar o metadado da rota definida na propriedade serviceMetadataApi\n * e depois irá buscar da rota definida na propriedade serviceLoadApi.\n *\n * A requisição dos metadados é feita na inicialização do template para buscar os metadados da página passando o\n * tipo do metadado esperado e a versão cacheada pelo browser.\n *\n * > Caso o servidor retornar um erro ao recuperar os metadados, serão repassados os metadados salvos em cache,\n * se o cache não existir será disparada uma notificação.\n *\n * Para carregar com um recurso já existente, deve-se ser incluído um parâmetro na rota chamado `id`:\n *\n * ```\n * {\n * path: 'people/:id',\n * component: PoPageDynamicEditComponent,\n * data: {\n * serviceApi: 'http://localhost:3000/v1/people', // endpoint dos dados\n * serviceMetadataApi: 'http://localhost:3000/v1/metadata', // endpoint dos metadados\n * serviceLoadApi: 'http://localhost:3000/load-metadata' // endpoint de customizações dos metadados\n * }\n * }\n * ```\n *\n * A requisição dos metadados é feita na inicialização do template para buscar os metadados da página passando o\n * tipo do metadado esperado e a versão cacheada pelo browser.\n *\n * O formato esperado na resposta da requisição está especificado na interface\n * [PoPageDynamicEditMetadata](/documentation/po-page-dynamic-edit#po-page-dynamic-edit-metadata). Por exemplo:\n *\n * ```\n * {\n * version: 1,\n * title: 'Person edit',\n * fields: [\n * { property: 'id', key: true, disabled: true },\n * { property: 'status' },\n * { property: 'name' },\n * { property: 'nickname' },\n * { property: 'birthdate', label: 'Birth date' },\n * { property: 'genre' },\n * { property: 'city' },\n * { property: 'country' }\n * ]\n * }\n * ```\n *\n * > Caso o endpoint dos metadados não seja especificado, será feito uma requisição utilizando o `serviceApi` da seguinte forma:\n * ```\n * GET {end-point}/metadata?type=edit&version={version}\n * ```\n *\n * @example\n *\n * <example name=\"po-page-dynamic-edit-basic\" title=\"PO Page Dynamic Edit Basic\">\n * <file name=\"sample-po-page-dynamic-edit-basic/sample-po-page-dynamic-edit-basic.component.html\"> </file>\n * <file name=\"sample-po-page-dynamic-edit-basic/sample-po-page-dynamic-edit-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-dynamic-edit-user\" title=\"PO Page Dynamic Edit - User\">\n * <file name=\"sample-po-page-dynamic-edit-user/sample-po-page-dynamic-edit-user.component.html\"> </file>\n * <file name=\"sample-po-page-dynamic-edit-user/sample-po-page-dynamic-edit-user.component.ts\"> </file>\n * </example>\n */\n@Component({\n selector: 'po-page-dynamic-edit',\n templateUrl: './po-page-dynamic-edit.component.html',\n providers: [PoPageDynamicService],\n standalone: false\n})\nexport class PoPageDynamicEditComponent implements OnInit, OnDestroy {\n private router = inject(Router);\n private activatedRoute = inject(ActivatedRoute);\n private poNotification = inject(PoNotificationService);\n private poDialogService = inject(PoDialogService);\n private poPageDynamicService = inject(PoPageDynamicService);\n private poPageCustomizationService = inject(PoPageCustomizationService);\n private poPageDynamicEditActionsService = inject(PoPageDynamicEditActionsService);\n\n @ViewChild('dynamicForm') dynamicForm: PoDynamicFormComponent;\n @ViewChild('gridDetail') gridDetail: PoGridComponent;\n\n /** Objeto com propriedades do breadcrumb. */\n @Input('p-breadcrumb') breadcrumb?: PoBreadcrumb = { items: [] };\n\n /**\n * @description\n *\n * Endpoint usado pelo template para requisição do recurso que será exibido para edição.\n *\n * Para as ações de `save` e `saveNew`, será feito uma requisição de criação nesse mesmo endpoint passando os valores\n * preenchidos pelo usuário via payload.\n *\n * > `POST {end-point}`\n *\n * ```\n * <po-page-dynamic-edit\n * [p-actions]=\"{ save: '/', saveNew: 'new' }\"\n * [p-fields]=\"[ { property: 'name' }, { property: 'city' } ]\"\n * p-service=\"/api/po-samples/v1/people\"\n * ...>\n * </po-page-dynamic-edit>\n * ```\n *\n * Resquisição disparada, onde a propriedade `name` e `city` foram preenchidas:\n *\n * ```\n * POST /api/po-samples/v1/people HTTP/1.1\n * Host: localhost:4000\n * Connection: keep-alive\n * Accept: application/json, text/plain\n * ...\n * ```\n *\n * Request payload:\n *\n * ```\n * { \"name\": \"Fulano\", \"city\": \"Smallville\" }\n * ```\n *\n * Caso queira que o template carregue um recurso já existente, deve-se ser incluído um parametro na rota chamado `id`.\n *\n * Exemplo de configuração de rota:\n *\n * ```\n * RouterModule.forRoot([\n * ...\n * { path: 'edit/:id', component: PersonEditComponent },\n * ...\n * ],\n * ```\n *\n * Baseado nisso, na inicialização do template, será disparado uma requisição para buscar o recurso que será editado.\n *\n * > `GET {end-point}/{id}`\n *\n * Nos métodos de `save` e `saveNew`, ao invés de um `POST`, será disparado um `PUT`.\n *\n * Resquisição disparada, onde a propriedade `name` e `city` foram preenchidas / atualizadas, e o `id` da url é 2:\n *\n * ```\n * PUT /api/po-samples/v1/people/2 HTTP/1.1\n * Host: localhost:4000\n * Connection: keep-alive\n * Accept: application/json, text/plain\n * ...\n * ```\n *\n * Request payload:\n *\n * ```\n * { \"name\": \"Fulano\", \"city\": \"Metropolis\" }\n * ```\n */\n @Input('p-service-api') serviceApi: string;\n\n /** Título da página. */\n @Input('p-title') title: string;\n\n /**\n * Função ou serviço que será executado na inicialização do componente.\n *\n * A propriedade aceita os seguintes tipos:\n * - `string`: *Endpoint* usado pelo componente para requisição via `POST`.\n * - `function`: Método que será executado.\n *\n * O retorno desta função deve ser do tipo `PoPageDynamicEditOptions`,\n * onde o usuário poderá customizar novos campos, breadcrumb, title e actions\n *\n * Por exemplo:\n *\n * ```\n * getPageOptions(): PoPageDynamicEditOptions {\n * return {\n * actions:\n * { cancel: false, save: 'save/:id', saveNew: 'saveNew' },\n * fields: [\n * { property: 'idCard', gridColumns: 6 }\n * ]\n * };\n * }\n *\n * ```\n * Para referenciar a sua função utilize a propriedade `bind`, por exemplo:\n * ```\n * [p-load]=\"onLoadOptions.bind(this)\"\n * ```\n */\n @Input('p-load') onLoad: string | (() => PoPageDynamicEditOptions);\n\n /**\n * @optional\n *\n * @description\n *\n * Função que será executada após ser realizada a busca dos dados.\n *\n * A propriedade aceita os seguintes tipos:\n * - `function`: Método que será executado.\n *\n * Esta função passa por parâmetro o model e deve recebê-lo de volta com as alterações.\n * Também aceita o retorno de um Observable com o novo model.\n *\n * Por exemplo:\n *\n * ```\n * onLoadCustom(model) {\n * return { ...model, customField: 'newValue' };\n * }\n *\n * ```\n * Para referenciar a sua função utilize a propriedade `bind`, por exemplo:\n * ```\n * [p-load-data]=\"onLoadCustom.bind(this)\"\n * ```\n */\n @Input('p-load-data') onLoadData: ((model: any) => any) | ((model: any) => Observable<any>);\n\n model: any = {};\n\n // beforeSave: return boolean\n // afterSave\n // beforeRemove: return boolean\n // afterRemove\n // beforeInsert: : return boolean\n readonly detailActions: PoGridRowActions = {};\n\n private indexFocus = 0;\n private language: string;\n private subscriptions: Array<Subscription> = [];\n private _actions: PoPageDynamicEditActions = {};\n private _componentsSize?: string = undefined;\n private _literals: PoPageDynamicEditLiterals;\n private _autoRouter: boolean = false;\n private _controlFields: Array<any> = [];\n private _detailFields: Array<any> = [];\n private _duplicates: Array<any> = [];\n private _fields: Array<any> = [];\n private _keys: Array<any> = [];\n private _pageActions: Array<PoPageAction> = [];\n private _notificationType?: string = poNotificationTypeDefault;\n /**\n * @optional\n *\n * @description\n *\n * Ações da página.\n */\n @Input('p-actions') set actions(value: PoPageDynamicEditActions) {\n this._actions = this.isObject(value) ? value : {};\n\n this._pageActions = this.getPageActions(this._actions);\n }\n\n get actions() {\n return { ...this._actions };\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Objeto com as literais usadas no `po-page-dynamic-edit`.\n *\n * É possivel customizar passando um objeto com todas as literais disponíveis\n * ou passando apenas as literais que deseja customizar\n *\n * ```\n * const customLiterals: PoPageDynamicEditLiterals = {\n * detailActionNew: 'Incluir',\n * pageActionCancel: 'Descartar',\n * pageActionSave: 'Gravar',\n * pageActionSaveNew: 'Gravar e incluir',\n * registerNotFound: 'Nenhum registro encontrado.',\n * saveNotificationError: 'Campo(s) obrigatório(s) sem preenchimento.',\n * saveNotificationSuccessSave: 'Item salvo com sucesso.',\n * saveNotificationSuccessUpdate: 'Item atualizado com sucesso.',\n * saveNotificationWarning: 'Necessário preencher o formulário corretamente.'\n * };\n * ```\n *\n * E para carregar as literais customizadas, basta apenas passar o objeto para o componente.\n *\n * ```\n * <po-page-dynamic-edit\n * [p-literals]=\"customLiterals\">\n * </po-page-dynamic-edit>\n * ```\n *\n * > O valor padrão será traduzido de acordo com o idioma configurado no [`PoI18nService`](/documentation/po-i18n) ou *browser*.\n */\n @Input('p-literals') set literals(value: PoPageDynamicEditLiterals) {\n if (value instanceof Object && !(value instanceof Array)) {\n this._literals = {\n ...poPageDynamicEditLiteralsDefault[poLocaleDefault],\n ...poPageDynamicEditLiteralsDefault[this.language],\n ...value\n };\n } else {\n this._literals = poPageDynamicEditLiteralsDefault[this.language];\n }\n\n this._pageActions = this.getPageActions(this._actions);\n }\n\n get literals() {\n return this._literals || poPageDynamicEditLiteralsDefault[this.language];\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Tipo da notificação.\n *\n * É possivel definir o tipo de notificação que será exibido quando houver algum campo inválido no formulário.\n *\n * ```\n * <po-page-dynamic-edit\n * p-notification-type=\"warning\">\n * </po-page-dynamic-edit>\n * ```\n *\n * > Os valores aceitos são 'warning' e 'error'.\n * @default warning\n */\n @Input('p-notification-type') set notificationType(value: string) {\n this._notificationType = poNotificationType.includes(value) ? value : poNotificationTypeDefault;\n }\n\n get notificationType() {\n return this._notificationType;\n }\n\n /**\n * @todo Validar rotas na mão pois se existir uma rota '**' o catch do navigation não funciona.\n *\n * @optional\n *\n * @description\n *\n * Cria automaticamente as rotas de edição (novo/duplicate) e detalhes caso as ações\n * estejam definidas nas ações.\n *\n * > Para o correto funcionamento não pode haver nenhum rota coringa (`**`) especificada.\n *\n * @default false\n */\n @Input('p-auto-router') set autoRouter(value: boolean) {\n this._autoRouter = convertToBoolean(value);\n }\n\n get autoRouter(): boolean {\n return this._autoRouter;\n }\n\n /** Lista dos campos usados na tabela e busca avançada. */\n @Input('p-fields') set fields(value: Array<PoPageDynamicEditField>) {\n this._fields = Array.isArray(value) ? [...value] : [];\n\n this._keys = this.getKeysByFields(this._fields);\n this._duplicates = this.getDuplicatesByFields(this._fields);\n\n this._controlFields = this.getControlFields(this._fields);\n this._detailFields = this.getDetailFields(this._fields);\n }\n\n get fields(): Array<PoPageDynamicEditField> {\n return this._fields;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Define o tamanho dos componentes de formulário no template:\n * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n * - `medium`: aplica a medida medium de cada componente.\n *\n * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n *\n * @default `medium`\n */\n @Input('p-components-size') set componentsSize(value: string) {\n this._componentsSize = validateSizeFn(value);\n }\n\n get componentsSize(): string {\n return this._componentsSize ?? getDefaultSizeFn();\n }\n\n /* eslint-disable max-params */\n constructor() {\n const languageService = inject(PoLanguageService);\n\n this.language = languageService.getShortLanguage();\n }\n /* eslint-enable max-params */\n\n ngOnInit(): void {\n this.loadDataFromAPI();\n }\n\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.forEach(subscription => {\n subscription.unsubscribe();\n });\n }\n }\n\n detailActionNew() {\n this.gridDetail.insertRow();\n }\n\n /**\n * Método que exibe `additionalHelpTooltip` ou executa a ação definida em `additionalHelp`.\n * Para isso, será necessário configurar uma tecla de atalho utilizando o evento `keydown`.\n *\n * ```\n * import { PoPageDynamicEditModule } from '@po-ui/ng-templates';\n * ...\n * @ViewChild('dynamicEdit', { static: true }) dynamicEdit: PoPageDynamicEditComponent;\n *\n * fields: Array<PoPageDynamicEditField> = [\n * {\n * property: 'name',\n * ...\n * help: 'Mensagem de ajuda.',\n * additionalHelpTooltip: 'Mensagem de ajuda complementar.',\n * keydown: this.onKeyDown.bind(this, 'name')\n * },\n * ]\n *\n * onKeyDown(property: string, event: KeyboardEvent): void {\n * if (event.code === 'F9') {\n * this.dynamicEdit.showAdditionalHelp(property);\n * }\n * }\n * ```\n *\n * @param { string } property Identificador da coluna.\n */\n showAdditionalHelp(property: string) {\n this.dynamicForm.showAdditionalHelp(property);\n }\n\n get duplicates() {\n return [...this._duplicates];\n }\n\n get keys() {\n return [...this._keys];\n }\n\n get pageActions() {\n return [...this._pageActions];\n }\n\n get controlFields() {\n return this._controlFields;\n }\n\n get detailFields() {\n return this._detailFields;\n }\n\n private loadDataFromAPI() {\n const { serviceApi: serviceApiFromRoute, serviceMetadataApi, serviceLoadApi } = this.activatedRoute.snapshot.data;\n const { id } = this.activatedRoute.snapshot.params;\n const { duplicate } = this.activatedRoute.snapshot.queryParams;\n\n const onLoad = serviceLoadApi || this.onLoad;\n this.serviceApi = serviceApiFromRoute || this.serviceApi;\n\n this.poPageDynamicService.configServiceApi({ endpoint: this.serviceApi, metadata: serviceMetadataApi });\n\n const metadata$ = this.getMetadata(serviceApiFromRoute, id, onLoad);\n const data$ = this.loadData(id, duplicate);\n\n this.subscriptions.push(concat(metadata$, data$).subscribe());\n }\n\n private cancel(\n actionCancel: PoPageDynamicEditActions['cancel'],\n actionBeforeCancel: PoPageDynamicEditActions['beforeCancel']\n ) {\n if (this.dynamicForm && this.dynamicForm.form.dirty) {\n this.poDialogService.confirm({\n message: this.literals.cancelConfirmMessage,\n title: this.literals.pageActionCancel,\n confirm: this.goBack.bind(this, actionCancel, actionBeforeCancel)\n });\n } else {\n this.goBack(actionCancel, actionBeforeCancel);\n }\n }\n\n private formatUniqueKey(item) {\n const keys = mapObjectByProperties(item, this.keys);\n\n return valuesFromObject(keys).join('|');\n }\n\n private goBack(\n actionCancel: PoPageDynamicEditActions['cancel'],\n actionBeforeCancel: PoPageDynamicEditActions['beforeCancel']\n ) {\n this.subscriptions.push(\n this.poPageDynamicEditActionsService\n .beforeCancel(actionBeforeCancel)\n .subscribe((beforeCancelResult: PoPageDynamicEditBeforeCancel) => {\n this.executeBackAction(actionCancel, beforeCancelResult?.allowAction, beforeCancelResult?.newUrl);\n })\n );\n }\n\n private executeBackAction(\n actionCancel: PoPageDynamicEditActions['cancel'],\n allowAction?: PoPageDynamicEditBeforeCancel['allowAction'],\n newUrl?: PoPageDynamicEditBeforeCancel['newUrl']\n ) {\n const isAllowedAction = typeof allowAction === 'boolean' ? allowAction : true;\n\n if (isAllowedAction) {\n if (actionCancel === undefined || typeof actionCancel === 'boolean') {\n return window.history.back();\n }\n\n if (typeof actionCancel === 'string' || newUrl) {\n return this.router.navigate([newUrl || actionCancel]);\n }\n\n return actionCancel();\n }\n }\n\n private loadData(id, duplicate?) {\n if (!id) {\n try {\n this.model = duplicate ? JSON.parse(duplicate) : {};\n } catch {\n this.model = {};\n }\n\n return EMPTY;\n }\n\n return this.poPageDynamicService.getResource(id).pipe(\n tap(response => {\n this.beforeSetModel(response);\n }),\n catchError(error => {\n this.model = undefined;\n this.actions = undefined;\n this._pageActions = [];\n return throwError(error);\n })\n );\n }\n\n private beforeSetModel(response: any) {\n if (!this.onLoadData) {\n this.model = response;\n return;\n }\n\n const onLoadDataExecution = this.onLoadData(response);\n const onLoadData$ = onLoadDataExecution instanceof Observable ? onLoadDataExecution : of(onLoadDataExecution);\n\n onLoadData$.subscribe({\n next: customModel => {\n this.model = customModel;\n },\n error: () => {\n this.model = response;\n }\n });\n }\n\n private loadOptionsOnInitialize(onLoad: UrlOrPoCustomizationFunction) {\n if (onLoad) {\n return this.getPoDynamicPageOptions(onLoad).pipe(\n tap(responsePoOption =>\n this.poPageCustomizationService.changeOriginalOptionsToNewOptions(this, responsePoOption)\n )\n );\n }\n\n return EMPTY;\n }\n\n private focusCheckboxInput(control: string): void {\n const checkboxGroup = document.querySelector(`po-checkbox-group[ng-reflect-name=${control}]`);\n if (checkboxGroup) {\n const checkBoxComponent = checkboxGroup.querySelector('po-checkbox[ng-reflect-disabled=false]');\n const labelInput: HTMLInputElement = checkBoxComponent?.querySelector('.po-checkbox-outline');\n if (labelInput) {\n labelInput.focus();\n } else {\n this.indexFocus--;\n }\n }\n }\n\n private focusControl(control: string): void {\n const inputElement: HTMLInputElement = document.querySelector(`[name=${control}]`);\n if (inputElement) {\n if (inputElement.tagName === 'INPUT') {\n inputElement.focus();\n } else {\n this.focusRadioInput(inputElement, control);\n }\n } else {\n this.focusCheckboxInput(control);\n }\n }\n\n private focusRadioInput(inputElement: Element, control: string): void {\n const radioComponent = inputElement.querySelector(\n `po-radio[ng-reflect-name=${control}][ng-reflect-disabled=false]`\n );\n if (radioComponent) {\n const radioInput = radioComponent.querySelector('input');\n radioInput.focus();\n radioInput.parentElement.parentElement.classList.add('po-radio-focus');\n } else {\n this.indexFocus--;\n }\n }\n\n private getPoDynamicPageOptions(onLoad: UrlOrPoCustomizationFunction): Observable<PoPageDynamicEditOptions> {\n const originalOption: PoPageDynamicEditOptions = {\n fields: this.fields,\n actions: this.actions,\n breadcrumb: this.breadcrumb,\n title: this.title\n };\n\n const pageOptionSchema: PoPageDynamicOptionsSchema<PoPageDynamicEditOptions> = {\n schema: [\n {\n nameProp: 'fields',\n merge: true,\n keyForMerge: 'property'\n },\n {\n nameProp: 'actions',\n merge: true\n },\n {\n nameProp: 'breadcrumb'\n },\n {\n nameProp: 'title'\n }\n ]\n };\n\n return this.poPageCustomizationService.getCustomOptions(onLoad, originalOption, pageOptionSchema);\n }\n\n private getMetadata(serviceApiFromRoute: string, paramId: string | number, onLoad: UrlOrPoCustomizationFunction) {\n const typeMetadata = paramId ? 'edit' : 'create';\n\n if (serviceApiFromRoute) {\n return this.poPageDynamicService.getMetadata<PoPageDynamicEditMetadata>(typeMetadata).pipe(\n tap(response => {\n this.autoRouter = response.autoRouter || this.autoRouter;\n this.actions = response.actions || this.actions;\n this.breadcrumb = response.breadcrumb || this.breadcrumb;\n this.fields = response.fields || this.fields;\n this.title = response.title || this.title;\n }),\n switchMap(() => this.loadOptionsOnInitialize(onLoad))\n );\n }\n\n return this.loadOptionsOnInitialize(onLoad);\n }\n\n private markControlsAsDirtyAndFocusFirstInvalid(): void {\n this.indexFocus = 0;\n const controls = Object.keys(this.dynamicForm.form.controls);\n\n controls.forEach(control => {\n this.dynamicForm.form.controls[control].markAsDirty();\n if (this.dynamicForm.form.controls[control].hasError('required') && this.indexFocus === 0) {\n this.focusControl(control);\n this.indexFocus++;\n }\n });\n }\n\n private navigateTo(path: string) {\n if (path) {\n const url = this.resolveUrl(this.model, path);\n\n this.router.navigate([url]);\n } else {\n window.history.back();\n }\n }\n\n private resolveUniqueKey(item: any) {\n return this.activatedRoute.snapshot.params['id'] ? this.formatUniqueKey(item) : undefined;\n }\n\n private resolveUrl(item: any, path: string) {\n const uniqueKey = this.formatUniqueKey(item);\n\n return path.replace(/:id/g, uniqueKey);\n }\n\n private executeSave(saveRedirectPath: string) {\n const saveOperation$ = this.saveOperation();\n\n return saveOperation$.pipe(\n tap(message => {\n this.poNotification.success(message);\n this.navigateTo(saveRedirectPath);\n })\n );\n }\n\n private updateModel(newResource: any = {}) {\n if (typeof newResource !== 'undefined' && Object.keys(newResource).length !== 0) {\n const dynamicNgForm = this.dynamicForm.form;\n\n removeKeysProperties(this.keys, newResource);\n\n this.model = { ...this.model, ...newResource };\n\n dynamicNgForm.form.patchValue(this.model);\n }\n }\n\n private showNotification(type: string) {\n switch (type) {\n case 'warning':\n this.poNotification.warning(this.literals.saveNotificationWarning);\n break;\n case 'error':\n this.poNotification.error(this.literals.saveNotificationError);\n break;\n }\n }\n\n private saveOperation() {\n if (this.dynamicForm.form.invalid) {\n this.markControlsAsDirtyAndFocusFirstInvalid();\n this.showNotification(this._notificationType);\n return EMPTY;\n }\n\n const paramId = this.activatedRoute.snapshot.params['id'];\n const successMsg = paramId\n ? this.literals.saveNotificationSuccessUpdate\n : this.literals.saveNotificationSuccessSave;\n\n const saveOperation$ = paramId\n ? this.poPageDynamicService.updateResource(paramId, this.model)\n : this.poPageDynamicService.createResource(this.model);\n\n return saveOperation$.pipe(map(() => successMsg));\n }\n\n private save(action: SaveAction, before: 'beforeSave' | 'beforeSaveNew' = 'beforeSave') {\n const executeOperation = {\n beforeSave: this.executeSave.bind(this),\n beforeSaveNew: this.executeSaveNew.bind(this)\n };\n\n const uniqueKey = this.resolveUniqueKey(this.model);\n\n this.subscriptions.push(\n this.poPageDynamicEditActionsService[before](this.actions[before], uniqueKey, { ...this.model })\n .pipe(\n switchMap(returnBefore => {\n const newAction = returnBefore?.newUrl ?? action;\n const allowAction = returnBefore?.allowAction ?? true;\n\n this.updateModel(returnBefore?.resource);\n\n if (!allowAction) {\n return of({});\n }\n\n if (typeof newAction === 'string') {\n return executeOperation[before](newAction);\n } else {\n newAction({ ...this.model }, uniqueKey);\n return EMPTY;\n }\n })\n )\n .subscribe()\n );\n }\n\n private executeSaveNew(path: string) {\n const paramId = this.activatedRoute.snapshot.params['id'];\n const saveOperation$ = this.saveOperation();\n\n return saveOperation$.pipe(\n tap(message => {\n if (paramId) {\n this.poNotification.success(message);\n\n this.navigateTo(path);\n } else {\n this.poNotification.success(message);\n\n this.model = {};\n this.dynamicForm.form.reset();\n }\n })\n );\n }\n\n private getKeysByFields(fields: Array<any> = []) {\n return fields.filter(field => field.key === true).map(field => field.property);\n }\n\n private getControlFields(fields: Array<any> = []) {\n return fields.filter(field => field.type !== 'detail');\n }\n\n private getDetailFields(fields: Array<any> = []) {\n return fields.filter(field => field.type === 'detail');\n }\n\n private getDuplicatesByFields(fields: Array<any> = []) {\n return fields.filter(field => field.duplicate === true).map(field => field.property);\n }\n\n private getPageActions(actions: PoPageDynamicEditActions = {}): Array<PoPageAction> {\n const pageActions: Array<PoPageAction> = [\n { label: this.literals.pageActionSave, action: this.save.bind(this, actions.save) }\n ];\n\n if (actions.saveNew) {\n pageActions.push({\n label: this.literals.pageActionSaveNew,\n action: this.save.bind(this, actions.saveNew, 'beforeSaveNew')\n });\n }\n\n if (actions.cancel === undefined || actions.cancel) {\n pageActions.push({\n label: this.literals.pageActionCancel,\n action: this.cancel.bind(this, actions.cancel, this.actions.beforeCancel)\n });\n }\n\n return pageActions;\n }\n\n private isObject(value: any): boolean {\n return !!value && typeof value === 'object' && !Array.isArray(value);\n }\n}\n","<po-page-default\n [p-actions]=\"pageActions\"\n [p-breadcrumb]=\"breadcrumb\"\n [p-components-size]=\"componentsSize\"\n [p-title]=\"title\"\n>\n @if (model) {\n <po-dynamic-form #dynamicForm [p-components-size]=\"componentsSize\" [p-fields]=\"controlFields\" [p-value]=\"model\">\n </po-dynamic-form>\n @if (detailFields.length > 0) {\n <div class=\"po-sm-12\">\n <po-divider [p-label]=\"detailFields[0].divider\"></po-divider>\n <div class=\"po-row po-mb-2\">\n <po-button\n [p-size]=\"componentsSize\"\n [p-label]=\"literals.detailActionNew\"\n (p-click)=\"detailActionNew()\"\n ></po-button>\n </div>\n <po-grid\n #gridDetail\n [p-row-actions]=\"detailActions\"\n [p-columns]=\"detailFields[0].detail.columns\"\n [p-data]=\"model[detailFields[0].property]\"\n >\n </po-grid>\n </div>\n }\n } @else {\n <po-widget>\n <po-icon p-icon=\"ICON_INFO\"></po-icon>\n <span class=\"po-font-text-large\">\n {{ literals.registerNotFound }}\n </span>\n </po-widget>\n }\n</po-page-default>\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport {\n PoButtonModule,\n PoDividerModule,\n PoDynamicModule,\n PoGridModule,\n PoIconModule,\n PoPageModule,\n PoWidgetModule\n} from '@po-ui/ng-components';\n\nimport { PoPageDynamicEditComponent } from './po-page-dynamic-edit.component';\nimport { PoPageDynamicModule } from '../../services/po-page-dynamic/po-page-dynamic.module';\n\n/**\n * @description\n *\n * Módulo do template do po-page-dynamic-detail.\n */\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n RouterModule,\n PoButtonModule,\n PoDividerModule,\n PoDynamicModule,\n PoGridModule,\n PoIconModule,\n PoPageModule,\n PoWidgetModule,\n PoPageDynamicModule\n ],\n declarations: [PoPageDynamicEditComponent],\n exports: [PoPageDynamicEditComponent]\n})\nexport class PoPageDynamicEditModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PoPageCustomizationService } from './po-page-customization.service';\n\n/**\n * @description\n *\n * Módulo do serviço do po-page-customization-service.\n */\n@NgModule({\n imports: [CommonModule],\n providers: [PoPageCustomizationService]\n})\nexport class PoPageCustomizationModule {}\n","import { Directive, EventEmitter, Input, Output, ViewChild } from '@angular/core';\n\nimport {\n PoComboOption,\n PoDynamicFormField,\n PoLanguageService,\n PoModalAction,\n PoModalComponent,\n poLocaleDefault\n} from '@po-ui/ng-components';\n\nimport { convertToBoolean, getDefaultSizeFn, validateSizeFn } from '../../../utils/util';\nimport { PoPageDynamicSearchFilters } from '../interfaces/po-page-dynamic-search-filters.interface';\nimport { PoAdvancedFilterLiterals } from './po-advanced-filter-literals.interface';\n\nexport const poAdvancedFiltersLiteralsDefault = {\n en: <PoAdvancedFilterLiterals>{\n title: 'Advanced search',\n cancelLabel: 'Cancel',\n confirmLabel: 'Apply filters'\n },\n es: <PoAdvancedFilterLiterals>{\n title: 'Búsqueda avanzada',\n cancelLabel: 'Cancelar',\n confirmLabel: 'Aplicar filtros'\n },\n pt: <PoAdvancedFilterLiterals>{\n title: 'Busca avançada',\n cancelLabel: 'Cancelar',\n confirmLabel: 'Aplicar filtros'\n },\n ru: <PoAdvancedFilterLiterals>{\n title: 'Расширенный поиск',\n cancelLabel: 'отменить',\n confirmLabel: 'Применить фильтры'\n }\n};\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Filtro de busca avançada criado a partir de um formulário dinâmico.\n * Componente de uso interno.\n */\n@Directive()\nexport class PoAdvancedFilterBaseComponent {\n @ViewChild(PoModalComponent, { static: true }) poModal: PoModalComponent;\n\n /**\n * Mantém na modal de busca avançada os valores preenchidos do último filtro realizado pelo usuário.\n */\n @Input({ alias: 'p-keep-filters', transform: convertToBoolean }) keepFilters: boolean = false;\n\n /** Função que será disparada e receberá os valores do formulário ao ser clicado no botão buscar. */\n @Output('p-search-event') searchEvent = new EventEmitter<any>();\n\n filter = {};\n language: string = poLocaleDefault;\n\n primaryAction: PoModalAction = {\n action: () => {\n const models = this.getValuesFromForm();\n\n this.searchEvent.emit(models);\n this.poModal.close();\n },\n label: this.literals.confirmLabel\n };\n\n secondaryAction: PoModalAction = {\n action: () => {\n this.poModal.close();\n },\n label: this.literals.cancelLabel\n };\n\n protected optionsServiceChosenOptions: Array<PoComboOption> = [];\n\n private _componentsSize?: string = undefined;\n private _filters: Array<PoDynamicFormField> = [];\n private _literals: PoAdvancedFilterLiterals;\n\n /**\n * @optional\n *\n * @description\n *\n * Define o tamanho dos componentes de formulário no template:\n * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n * - `medium`: aplica a medida medium de cada componente.\n *\n * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n *\n * @default `medium`\n */\n @Input('p-components-size') set componentsSize(value: string) {\n this._componentsSize = validateSizeFn(value);\n }\n\n get componentsSize(): string {\n return this._componentsSize ?? getDefaultSizeFn();\n }\n\n /**\n * Coleção de objetos que implementam a interface PoPageDynamicSearchFilters, para definição dos campos que serão criados\n * dinamicamente.\n */\n @Input('p-filters') set filters(filters: Array<PoPageDynamicSearchFilters>) {\n this._filters = Array.isArray(filters) ? [...filters] : [];\n }\n\n get filters(): Array<PoPageDynamicSearchFilters> {\n return this._filters;\n }\n\n /** Objeto com as literais usadas no `po-advanced-filter`. */\n @Input('p-literals') set literals(value: PoAdvancedFilterLiterals) {\n if (value instanceof Object && !(value instanceof Array)) {\n this._literals = {\n ...poAdvancedFiltersLiteralsDefault[poLocaleDefault],\n ...poAdvancedFiltersLiteralsDefault[this.language],\n ...value\n };\n } else {\n this._literals = poAdvancedFiltersLiteralsDefault[this.language];\n }\n\n this.primaryAction.label = this.literals.confirmLabel;\n this.secondaryAction.label = this.literals.cancelLabel;\n }\n\n get literals() {\n return this._literals || poAdvancedFiltersLiteralsDefault[this.language];\n }\n\n constructor(languageService: PoLanguageService) {\n this.language = languageService.getShortLanguage();\n }\n\n // Retorna os models dos campos preenchidos\n private getValuesFromForm() {\n let optionServiceOptions: Array<PoComboOption>;\n\n Object.keys(this.filter).forEach(property => {\n if (this.filter[property] === undefined || this.filter[property] === '') {\n delete this.filter[property];\n }\n });\n\n if (this.optionsServiceChosenOptions.length) {\n optionServiceOptions = this.optionsServiceChosenOptions.filter((optionItem: PoComboOption) =>\n Object.values(this.filter).includes(optionItem.value)\n );\n }\n\n return { filter: this.filter, optionsService: optionServiceOptions };\n }\n}\n","import { Component, OnDestroy, OnInit, ViewChild, inject } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { PoComboOption, PoDynamicFormComponent, PoLanguageService } from '@po-ui/ng-components';\n\nimport { PoPageDynamicSearchFilters } from '../interfaces/po-page-dynamic-search-filters.interface';\nimport { PoAdvancedFilterBaseComponent } from './po-advanced-filter-base.component';\n\n/**\n * @docsPrivate\n *\n * @docsExtends PoAdvancedFilterBaseComponent\n *\n * @examplePrivate\n *\n * <example-private name=\"po-advanced-filter\" title=\"PO Busca Avançada\">\n * <file name=\"sample-po-advanced-filter.component.html\"> </file>\n * <file name=\"sample-po-advanced-filter.component.ts\"> </file>\n * </example-private>\n */\n@Component({\n selector: 'po-advanced-filter',\n templateUrl: './po-advanced-filter.component.html',\n standalone: false\n})\nexport class PoAdvancedFilterComponent extends PoAdvancedFilterBaseComponent implements OnDestroy, OnInit {\n @ViewChild(PoDynamicFormComponent, { static: true }) poDynamicForm: PoDynamicFormComponent;\n\n private subscription = new Subscription();\n\n constructor() {\n const languageService = inject(PoLanguageService);\n\n super(languageService);\n }\n\n ngOnInit() {\n this.optionsServiceSubscribe();\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n open() {\n this.filter = this.keepFilters ? this.getInitialValuesFromFilter(this.filters) : {};\n\n this.poModal.open();\n }\n\n private getOptionsServiceItem(optionServiceObject: PoComboOption) {\n const objectItem = this.optionsServiceChosenOptions.map(option => option.value).indexOf(optionServiceObject.value);\n\n if (objectItem === -1) {\n this.optionsServiceChosenOptions = [...this.optionsServiceChosenOptions, optionServiceObject];\n }\n }\n\n private getInitialValuesFromFilter(filters: Array<PoPageDynamicSearchFilters>) {\n return filters.reduce((result, item) => Object.assign(result, { [item.property]: item.initValue }), {});\n }\n\n // Se inscreve para receber valores referentes a campos do tipo combo.\n private optionsServiceSubscribe() {\n this.subscription.add(\n this.poDynamicForm.getObjectValue().subscribe(optionServiceObject => {\n if (optionServiceObject) {\n this.getOptionsServiceItem(optionServiceObject);\n }\n })\n );\n }\n}\n","<po-modal\n p-hide-close\n [p-primary-action]=\"primaryAction\"\n [p-secondary-action]=\"secondaryAction\"\n [p-components-size]=\"componentsSize\"\n [p-title]=\"literals.title\"\n>\n <po-dynamic-form [p-components-size]=\"componentsSize\" [p-fields]=\"filters\" [p-value]=\"filter\"> </po-dynamic-form>\n</po-modal>\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\n\nimport {\n PoBreadcrumb,\n PoDynamicFormField,\n PoLanguageService,\n PoPageAction,\n poLocaleDefault\n} from '@po-ui/ng-components';\n\nimport { convertToBoolean, convertToInt, getDefaultSizeFn, validateSizeFn } from '../../utils/util';\n\nimport { PoPageDynamicSearchFilters } from './interfaces/po-page-dynamic-search-filters.interface';\nimport { PoPageDynamicSearchLiterals } from './interfaces/po-page-dynamic-search-literals.interface';\nimport { PoPageDynamicSearchOptions } from './interfaces/po-page-dynamic-search-options.interface';\nimport { poAdvancedFiltersLiteralsDefault } from './po-advanced-filter/po-advanced-filter-base.component';\nimport { PoAdvancedFilterLiterals } from './po-advanced-filter/po-advanced-filter-literals.interface';\n\nexport const poPageDynamicSearchLiteralsDefault = {\n en: <PoPageDynamicSearchLiterals>{\n disclaimerGroupTitle: 'Displaying results filtered by:',\n filterTitle: poAdvancedFiltersLiteralsDefault.en.title,\n filterCancelLabel: poAdvancedFiltersLiteralsDefault.en.cancelLabel,\n filterConfirmLabel: poAdvancedFiltersLiteralsDefault.en.confirmLabel,\n quickSearchLabel: 'Quick search:',\n searchPlaceholder: 'Search'\n },\n es: <PoPageDynamicSearchLiterals>{\n disclaimerGroupTitle: 'Presentando resultados filtrados por:',\n filterTitle: poAdvancedFiltersLiteralsDefault.es.title,\n filterCancelLabel: poAdvancedFiltersLiteralsDefault.es.cancelLabel,\n filterConfirmLabel: poAdvancedFiltersLiteralsDefault.es.confirmLabel,\n quickSearchLabel: 'Búsqueda rápida:',\n searchPlaceholder: 'Buscar'\n },\n pt: <PoPageDynamicSearchLiterals>{\n disclaimerGroupTitle: 'Apresentando resultados filtrados por:',\n filterTitle: poAdvancedFiltersLiteralsDefault.pt.title,\n filterCancelLabel: poAdvancedFiltersLiteralsDefault.pt.cancelLabel,\n filterConfirmLabel: poAdvancedFiltersLiteralsDefault.pt.confirmLabel,\n quickSearchLabel: 'Pesquisa rápida:',\n searchPlaceholder: 'Pesquisar'\n },\n ru: <PoPageDynamicSearchLiterals>{\n disclaimerGroupTitle: 'Отображение результатов, отфильтрованных по:',\n filterTitle: poAdvancedFiltersLiteralsDefault.ru.title,\n filterCancelLabel: poAdvancedFiltersLiteralsDefault.ru.cancelLabel,\n filterConfirmLabel: poAdvancedFiltersLiteralsDefault.ru.confirmLabel,\n quickSearchLabel: 'Быстрый поиск:',\n searchPlaceholder: 'исследование'\n }\n};\n\n/**\n * @description\n *\n * Componente com as ações de pesquisa já definidas, bastando que o desenvolvedor implemente apenas a chamada para as APIs\n * e exiba as informações.\n */\n@Directive()\nexport abstract class PoPageDynamicSearchBaseComponent {\n /** Nesta propriedade deve ser definido um array de objetos que implementam a interface `PoPageAction`. */\n @Input('p-actions') actions?: Array<PoPageAction> = [];\n\n /** Objeto com propriedades do breadcrumb. */\n @Input('p-breadcrumb') breadcrumb?: PoBreadcrumb = { items: [] };\n\n /**\n * @optional\n *\n * @description\n *\n * Mantém na busca avançada os valores preenchidos do último filtro realizado pelo usuário.\n *\n * @default `false`\n */\n @Input({ alias: 'p-keep-filters', transform: convertToBoolean }) keepFilters: boolean = false;\n\n /**\n * @optional\n *\n * @description\n *\n * Permite a utilização da pesquisa rápida junto com a pesquisa avançada.\n *\n * Desta forma, ao ter uma pesquisa avançada estabelecida e ser\n * preenchido a pesquisa rápida, o filtro será concatenado adicionando a pesquisa\n * rápida também na lista de `disclaimers`.\n *\n * > Os valores que são emitidos no `p-quick-search` e no `p-advanced-search`\n * permanecem separados durante a emissão dos valores alterados. A concatenação\n * é apenas nos `disclaimers`.\n *\n * @default `false`\n */\n @Input({ alias: 'p-concat-filters', transform: convertToBoolean }) concatFilters: boolean = false;\n\n /**\n * @optional\n *\n * @description\n *\n * Oculta o botão para remover todos os *disclaimers* do grupo.\n *\n * > Por padrão, o mesmo é exibido à partir de dois ou mais *disclaimers* com a opção `hideClose` habilitada.\n *\n * @default `false`\n */\n @Input({ alias: 'p-hide-remove-all-disclaimer', transform: convertToBoolean })\n hideRemoveAllDisclaimer: boolean = false;\n\n /**\n * Função ou serviço que será executado na inicialização do componente.\n *\n * A propriedade aceita os seguintes tipos:\n * - `string`: *Endpoint* usado pelo componente para requisição via `POST`.\n * - `function`: Método que será executado.\n *\n * O retorno desta função deve ser do tipo `PoPageDynamicSearchOptions`,\n * onde o usuário poderá customizar novos filtros, breadcrumb, title e actions\n *\n * Por exemplo:\n *\n * ```\n * getPageOptions(): PoPageDynamicSearchOptions {\n * return {\n * actions: [\n * { label: 'Find on Google' },\n * ],\n * filters: [\n * { property: 'idCard', gridColumns: 6 }\n * ]\n * };\n * }\n *\n * ```\n * Para referenciar a sua função utilize a propriedade `bind`, por exemplo:\n * ```\n * [p-load]=\"onLoadOptions.bind(this)\"\n * ```\n */\n @Input('p-load') onLoad: string | (() => PoPageDynamicSearchOptions);\n\n /** Título da página. */\n @Input('p-title') title: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Valor padrão na busca rápida ao inicializar o componente\n *\n */\n @Input('p-quick-search-value') quickSearchValue: string;\n\n _visibleFixedFilters = true;\n\n /**\n * @optional\n *\n * @description\n *\n * Controla a visibilidade dos filtros fixos na página.\n *\n * - Quando `true` (default), todos os filtros, incluindo os fixos, são exibidos, permitindo que o usuário visualize os filtros aplicados.\n * - Quando `false`, os filtros fixos são ocultados, não sendo exibidos na interface, mas ainda sendo aplicados como filtros nas requisições.\n *\n * Esta propriedade trabalha em conjunto com a propriedade `fixed` dos filtros individuais. Filtros marcados como `fixed: true` não serão exibidos na interface do filtro avançado quando `visibleFixedFilters` for `false`, mas continuarão a ser aplicados de forma transparente ao usuário. Dessa forma, permite-se maior flexibilidade no controle de quais filtros devem ser visíveis ao usuário ou devem ser aplicados permanentemente sem interferência.\n *\n * **Exemplo de uso:**\n * ```html\n * <!-- Para ocultar os filtros fixos -->\n * <po-page-dynamic-table [p-visible-fixed-filters]=\"false\"></po-page-dynamic-table>\n * ```\n */\n @Input('p-visible-fixed-filters') set visibleFixedFilters(visible: boolean) {\n this._visibleFixedFilters = visible;\n }\n\n get visibleFixedFilters(): boolean {\n return this._visibleFixedFilters;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Evento disparado ao executar a pesquisa avançada, o mesmo irá repassar um objeto com os valores preenchidos no modal de pesquisa.\n *\n * > Campos não preenchidos não irão aparecer no objeto passado por parâmetro.\n */\n @Output('p-advanced-search') advancedSearch: EventEmitter<any> = new EventEmitter();\n\n /**\n * @optional\n *\n * @description\n *\n * Evento disparado ao remover um ou todos os disclaimers pelo usuário.\n */\n @Output('p-change-disclaimers') changeDisclaimers: EventEmitter<any> = new EventEmitter();\n\n /**\n * @optional\n *\n * @description\n *\n * Evento disparado ao realizar uma busca pelo campo de pesquisa rápida, o mesmo será chamado repassando o valor digitado.\n */\n @Output('p-quick-search') quickSearch: EventEmitter<string> = new EventEmitter();\n\n advancedFilterLiterals: PoAdvancedFilterLiterals;\n\n private _componentsSize?: string = undefined;\n private _filters: Array<PoDynamicFormField> = [];\n private _hideCloseDisclaimers: Array<string> = [];\n private _literals: PoPageDynamicSearchLiterals;\n private _quickSearchWidth: number;\n private language: string;\n\n previousFilters: Array<PoDynamicFormField>;\n\n /**\n * @optional\n *\n * @description\n *\n * Define o tamanho dos componentes de formulário no template:\n * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n * - `medium`: aplica a medida medium de cada componente.\n *\n * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n *\n * @default `medium`\n */\n @Input('p-components-size') set componentsSize(value: string) {\n this._componentsSize = validateSizeFn(value);\n }\n\n get componentsSize(): string {\n return this._componentsSize ?? getDefaultSizeFn();\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Objeto com as literais usadas no `po-page-dynamic-search`.\n *\n * Existem duas maneiras de customizar o componente, passando um objeto com todas as literais disponíveis:\n *\n * ```\n * const customLiterals: PoPageDynamicSearchLiterals = {\n * disclaimerGroupTitle: 'Filtros aplicados:',\n * filterTitle: 'Filtro avançado',\n * filterCancelLabel: 'Fechar',\n * filterConfirmLabel: 'Aplicar',\n * quickSearchLabel: 'Valor pesquisado:',\n * searchPlaceholder: 'Pesquise aqui'\n * };\n * ```\n *\n * Ou passando apenas as literais que deseja customizar:\n *\n * ```\n * const customLiterals: PoPageDynamicSearchLiterals = {\n * filterTitle: 'Filtro avançado'\n * };\n * ```\n *\n * E para carregar as literais customizadas, basta apenas passar o objeto para o componente.\n *\n * ```\n * <po-page-dynamic-search\n * [p-literals]=\"customLiterals\">\n * </po-page-dynamic-search>\n * ```\n *\n * > O valor padrão será traduzido de acordo com o idioma configurado no [`PoI18nService`](/documentation/po-i18n) ou *browser*.\n */\n @Input('p-literals') set literals(value: PoPageDynamicSearchLiterals) {\n if (value instanceof Object && !(value instanceof Array)) {\n this._literals = {\n ...poPageDynamicSearchLiteralsDefault[poLocaleDefault],\n ...poPageDynamicSearchLiteralsDefault[this.language],\n ...value\n };\n } else {\n this._literals = poPageDynamicSearchLiteralsDefault[this.language];\n }\n\n this.setAdvancedFilterLiterals(this.literals);\n }\n\n get literals() {\n return this._literals || poPageDynamicSearchLiteralsDefault[this.language];\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Lista dos campos usados na busca avançada. Caso o mesmo não seja passado a busca avançada não será exibida.\n */\n @Input('p-filters') set filters(filters: Array<PoPageDynamicSearchFilters>) {\n this._filters = Array.isArray(filters) ? [...filters] : [];\n }\n\n get filters(): Array<PoPageDynamicSearchFilters> {\n return this._filters;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Largura do campo de busca, utilizando o *Grid System*,\n * e limitado ao máximo de 6 colunas. O tamanho mínimo é controlado\n * conforme resolução de tela para manter a consistência do layout.\n */\n @Input('p-quick-search-width') set quickSearchWidth(value: number) {\n this._quickSearchWidth = convertToInt(value);\n }\n\n get quickSearchWidth(): number {\n return this._quickSearchWidth;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Lista de filtros que terão a opção de fechar ocultada\n * em seu respectivo disclaimer. Utilizar o atributo `property` do filtro.\n *\n * Exemplo de utilização:\n * ```\n * ['city','name'];\n * ```\n */\n @Input('p-hide-close-disclaimers') set hideCloseDisclaimers(value: Array<string>) {\n this._hideCloseDisclaimers = Array.isArray(value) ? value : [];\n }\n\n get hideCloseDisclaimers(): Array<string> {\n return this._hideCloseDisclaimers;\n }\n\n constructor(languageService: PoLanguageService) {\n this.language = languageService.getShortLanguage();\n }\n\n protected setAdvancedFilterLiterals(literals: PoPageDynamicSearchLiterals) {\n this.advancedFilterLiterals = {\n cancelLabel: literals.filterCancelLabel,\n confirmLabel: literals.filterConfirmLabel,\n title: literals.filterTitle\n };\n }\n\n stringify(columns: Array<PoPageDynamicSearchFilters>) {\n // não faz o stringify da propriedade searchService, pois pode conter objeto complexo e disparar um erro.\n return JSON.stringify(columns, (key, value) => {\n if (key !== 'searchService') {\n return value;\n }\n });\n }\n\n abstract onChangeFilters(filters: Array<PoPageDynamicSearchFilters>);\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n ViewChild,\n inject\n} from '@angular/core';\n\nimport {\n PoComboOption,\n PoDisclaimerGroup,\n PoDisclaimerGroupRemoveAction,\n PoDynamicFieldType,\n PoDynamicFormField,\n PoLanguageService,\n PoPageFilter,\n PoPageListComponent\n} from '@po-ui/ng-components';\nimport { Observable, Subscription } from 'rxjs';\n\nimport { PoPageCustomizationService } from '../../services/po-page-customization/po-page-customization.service';\nimport { capitalizeFirstLetter, getBrowserLanguage } from '../../utils/util';\n\nimport { PoPageDynamicOptionsSchema } from '../../services';\nimport { PoPageDynamicSearchFilters } from './interfaces/po-page-dynamic-search-filters.interface';\nimport { PoPageDynamicSearchOptions } from './interfaces/po-page-dynamic-search-options.interface';\nimport { PoAdvancedFilterComponent } from './po-advanced-filter/po-advanced-filter.component';\nimport { PoPageDynamicSearchBaseComponent } from './po-page-dynamic-search-base.component';\n\ntype UrlOrPoCustomizationFunction = string | (() => PoPageDynamicSearchOptions);\n\n/**\n * @docsExtends PoPageDynamicSearchBaseComponent\n *\n * @example\n *\n * <example name=\"po-page-dynamic-search-basic\" title=\"PO Page Dynamic Search Basic\">\n * <file name=\"sample-po-page-dynamic-search-basic/sample-po-page-dynamic-search-basic.component.html\"> </file>\n * <file name=\"sample-po-page-dynamic-search-basic/sample-po-page-dynamic-search-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-dynamic-search-hiring-processes\" title=\"PO Page Dynamic Search - Hiring processes\">\n * <file name=\"sample-po-page-dynamic-search-hiring-processes/sample-po-page-dynamic-search-hiring-processes.component.html\"> </file>\n * <file name=\"sample-po-page-dynamic-search-hiring-processes/sample-po-page-dynamic-search-hiring-processes.component.ts\"> </file>\n * <file name=\"sample-po-page-dynamic-search-hiring-processes/sample-po-page-dynamic-search-hiring-processes.service.ts\"> </file>\n * </example>\n */\n@Component({\n selector: 'po-page-dynamic-search',\n templateUrl: './po-page-dynamic-search.component.html',\n standalone: false\n})\nexport class PoPageDynamicSearchComponent\n extends PoPageDynamicSearchBaseComponent\n implements OnInit, OnDestroy, AfterViewInit, OnChanges\n{\n private languageService: PoLanguageService;\n private poPageCustomizationService = inject(PoPageCustomizationService);\n private changeDetector = inject(ChangeDetectorRef);\n\n @ViewChild(PoAdvancedFilterComponent, { static: true }) poAdvancedFilter: PoAdvancedFilterComponent;\n @ViewChild(PoPageListComponent, { static: true }) poPageList: PoPageListComponent;\n\n private loadSubscription: Subscription;\n\n private readonly _disclaimerGroup: PoDisclaimerGroup = {\n remove: this.onRemoveDisclaimer.bind(this),\n removeAll: this.onRemoveAllDisclaimers.bind(this),\n disclaimers: [],\n title: this.literals.disclaimerGroupTitle,\n hideRemoveAll: this.hideRemoveAllDisclaimer\n };\n\n private readonly _filterSettings: PoPageFilter = {\n action: this.onAction.bind(this),\n advancedAction: this.onAdvancedAction.bind(this),\n placeholder: this.literals.searchPlaceholder,\n width: this.quickSearchWidth\n };\n\n constructor() {\n const languageService = inject(PoLanguageService);\n\n super(languageService);\n\n this.languageService = languageService;\n }\n\n get disclaimerGroup() {\n return Object.assign({}, this._disclaimerGroup, {\n title: this.literals.disclaimerGroupTitle,\n hideRemoveAll: this.hideRemoveAllDisclaimer\n });\n }\n\n get filterSettings() {\n const thereAreValidFilters =\n this.filters.length > 0 && this.filters.some(filter => filter.visible === true || filter.visible === undefined);\n this._filterSettings.advancedAction = thereAreValidFilters ? this.onAdvancedAction.bind(this) : undefined;\n\n return Object.assign({}, this._filterSettings, {\n placeholder: this.literals.searchPlaceholder,\n width: this.quickSearchWidth\n });\n }\n\n ngOnInit() {\n this.setAdvancedFilterLiterals(this.literals);\n if (this.onLoad) {\n this.loadOptionsOnInitialize(this.onLoad);\n }\n //coloca o disclaimer inicial caso envie p-quick-search-value\n if (this.quickSearchValue) {\n this.onAction(this.quickSearchValue, true);\n }\n }\n\n ngOnDestroy() {\n if (this.loadSubscription) {\n this.loadSubscription.unsubscribe();\n }\n }\n\n ngAfterViewInit(): void {\n if (this.stringify(this.filters) !== this.stringify(this.previousFilters)) {\n this.onChangeFilters(this.filters);\n\n this.previousFilters = [...this.filters];\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const visibleFixedFilters = changes.visibleFixedFilters;\n\n if (\n visibleFixedFilters &&\n visibleFixedFilters.currentValue !== visibleFixedFilters.previousValue &&\n this.filters.some(filter => filter.fixed)\n ) {\n this.onChangeFilters(this.filters);\n this.previousFilters = [...this.filters];\n }\n }\n\n onChangeFilters(filters: Array<PoPageDynamicSearchFilters>) {\n const filterObjectWithValue = filters\n .filter(filter => filter.initValue)\n .reduce((prev, current) => ({ ...prev, ...{ [current.property]: current.initValue } }), {});\n\n if (Object.keys(filterObjectWithValue).length) {\n this.onAdvancedSearch({ filter: filterObjectWithValue });\n }\n }\n\n onAction(quickFilter: string, quickSearchValue?: boolean) {\n const disclaimerQuickSearchUpdated = {\n property: 'search',\n label: `${this.literals.quickSearchLabel} ${quickFilter}`,\n value: quickFilter,\n hideClose: this.hideCloseDisclaimers.some(hideCloseDisclaimer => hideCloseDisclaimer === 'search') || false\n };\n\n const getDisclaimersWithConcatFilters = () => [\n ...this.getDisclaimersWithoutQuickSearch(),\n disclaimerQuickSearchUpdated\n ];\n\n this._disclaimerGroup.disclaimers = this.concatFilters\n ? getDisclaimersWithConcatFilters()\n : [disclaimerQuickSearchUpdated];\n\n if (this.quickSearch.observers && this.quickSearch.observers.length > 0 && !quickSearchValue) {\n this.quickSearch.emit(quickFilter);\n }\n\n if (this.keepFilters && !this.concatFilters) {\n this.filters.forEach(element => delete element.initValue);\n }\n\n this.changeDetector.detectChanges();\n }\n\n onAdvancedAction() {\n this.poAdvancedFilter.open();\n }\n\n onAdvancedSearch(filteredItems, isAdvancedSearch?) {\n const { optionsService } = filteredItems;\n let { filter } = filteredItems;\n\n const visibleFilters =\n this.visibleFixedFilters === false\n ? this.filters.filter(filter => !('fixed' in filter) || !filter.fixed)\n : this.filters;\n\n this._disclaimerGroup.disclaimers = this.setDisclaimers(filter, optionsService, visibleFilters);\n\n this.setFilters(filter);\n\n filter = this.addComplexFilter(filter);\n\n this.advancedSearch.emit(filter);\n\n if (isAdvancedSearch) {\n this.poPageList.clearInputSearch();\n }\n }\n\n private getDisclaimersWithoutQuickSearch() {\n const quickSearchProperty = 'search';\n return this._disclaimerGroup.disclaimers.filter(item => item.property !== quickSearchProperty);\n }\n\n private setFilters(filters) {\n const formattedFilters = this.convertToFilters(filters);\n\n this.filters.forEach(element => {\n const compatibleObject = formattedFilters.find(item => item.property === element.property);\n\n if (compatibleObject) {\n element.initValue = compatibleObject.value;\n } else {\n delete element.initValue;\n }\n });\n }\n\n private convertToFilters(filters) {\n return Object.entries(filters).map(([property, value]) => ({ property, value }));\n }\n\n private optionsServiceDisclaimerLabel(value: any, optionsServiceObjectsList: Array<PoComboOption>) {\n const optionServiceMatch = optionsServiceObjectsList.find(option => option.value === value);\n\n return optionServiceMatch.label || optionServiceMatch.value;\n }\n\n private applyDisclaimerLabelValue(field: any, filterValue: any) {\n const values = Array.isArray(filterValue) ? filterValue : [filterValue];\n\n const labels = values.map(value => {\n const filteredField = field.options.find(option => option.value === value || option === value);\n\n if (filteredField) {\n return filteredField.label || filteredField.value || filteredField;\n }\n });\n\n return labels.join(', ');\n }\n\n private formatDate(date: string) {\n const year = parseInt(date.substr(0, 4), 10);\n const month = parseInt(date.substr(5, 2), 10);\n const day = parseInt(date.substr(8, 2), 10);\n\n return new Date(year, month - 1, day).toLocaleDateString(getBrowserLanguage());\n }\n\n private formatArrayToObjectKeyValue(filters: Array<{ property: string; value?: any; initValue?: any }>): {\n [key: string]: any;\n } {\n const formattedObject = filters.reduce(\n (result, item) => Object.assign(result, { [item.property]: item.value || item.initValue }),\n {}\n );\n\n Object.keys(formattedObject).forEach(key => {\n if (!formattedObject[key]) {\n delete formattedObject[key];\n }\n });\n\n return formattedObject;\n }\n\n private formatValueToCurrency(field: any, value: any) {\n const language = this.languageService.getLanguage();\n return new Intl.NumberFormat(field.locale ? field.locale : language, {\n minimumFractionDigits: 2\n }).format(value);\n }\n\n private getFieldByProperty(fields: Array<PoDynamicFormField>, fieldName: string) {\n return fields.find((field: PoDynamicFormField) => field.property === fieldName);\n }\n\n private getFilterValueToDisclaimer(field: any, value: any, optionsServiceObjectsList?: Array<PoComboOption>) {\n if (field.optionsService && optionsServiceObjectsList) {\n return this.optionsServiceDisclaimerLabel(value, optionsServiceObjectsList);\n }\n\n if (field.type === PoDynamicFieldType.Currency && value) {\n return this.formatValueToCurrency(field, value);\n }\n\n if (field.type === PoDynamicFieldType.Date || field.type?.toLowerCase() === PoDynamicFieldType.DateTime) {\n return field.range ? this.formatDate(value.start) + ' - ' + this.formatDate(value.end) : this.formatDate(value);\n }\n\n if (field.options && value) {\n return this.applyDisclaimerLabelValue(field, value);\n }\n\n return value;\n }\n\n private emitChangesDisclaimers(currentDisclaimers: any) {\n this.changeDisclaimers.emit(currentDisclaimers);\n this.setFilters(this.formatArrayToObjectKeyValue(currentDisclaimers));\n }\n\n private onRemoveAllDisclaimers() {\n const disclaimersToKeep = this.getFixedFiltersDisclaimers();\n this.emitChangesDisclaimers(disclaimersToKeep);\n }\n\n private onRemoveDisclaimer(removeData: PoDisclaimerGroupRemoveAction) {\n const { currentDisclaimers } = removeData;\n\n const updatedDisclaimers = [...currentDisclaimers, ...this.getFixedFiltersDisclaimers(currentDisclaimers)];\n\n this.emitChangesDisclaimers(updatedDisclaimers);\n }\n\n private getFixedFiltersDisclaimers(currentDisclaimers?: Array<any>): Array<any> {\n const fixedFilters = this.filters.filter(\n filter =>\n filter.fixed === true &&\n filter.hasOwnProperty('initValue') &&\n filter.initValue !== undefined &&\n filter.initValue !== null\n );\n\n return fixedFilters\n .map(filter => ({\n property: filter.property,\n value: filter.initValue,\n label: `${filter.label}: ${filter.initValue}`,\n hideClose: true\n }))\n .filter(\n fixedFilter =>\n !currentDisclaimers || !currentDisclaimers.some(disclaimer => disclaimer.property === fixedFilter.property)\n );\n }\n\n private setDisclaimers(\n filters,\n optionsServiceObjects?: Array<PoComboOption>,\n visibleFilters?: Array<PoPageDynamicSearchFilters>\n ) {\n const disclaimers = [];\n const properties = Object.keys(filters);\n const visibleProperties = visibleFilters ? visibleFilters.map(filter => filter.property) : properties;\n\n properties.forEach(property => {\n if (visibleProperties.includes(property)) {\n const field = this.getFieldByProperty(this.filters, property);\n const label = field.label || capitalizeFirstLetter(field.property);\n const value = filters[property];\n const hideClose =\n this.hideCloseDisclaimers.some(hideCloseDisclaimer => hideCloseDisclaimer === property) || false;\n\n const valueDisplayedOnTheDisclaimerLabel = this.getFilterValueToDisclaimer(field, value, optionsServiceObjects);\n\n if (valueDisplayedOnTheDisclaimerLabel !== '') {\n disclaimers.push({\n label: `${label}: ${valueDisplayedOnTheDisclaimerLabel}`,\n property,\n value,\n hideClose\n });\n }\n }\n });\n\n return disclaimers;\n }\n\n private loadOptionsOnInitialize(onLoad: UrlOrPoCustomizationFunction) {\n this.loadSubscription = this.getPoDynamicPageOptions(onLoad).subscribe(responsePoOption =>\n this.poPageCustomizationService.changeOriginalOptionsToNewOptions(this, responsePoOption)\n );\n }\n\n private getPoDynamicPageOptions(onLoad: UrlOrPoCustomizationFunction): Observable<PoPageDynamicSearchOptions> {\n const originalOption: PoPageDynamicSearchOptions = {\n title: this.title,\n actions: this.actions,\n breadcrumb: this.breadcrumb,\n filters: this.filters,\n keepFilters: this.keepFilters,\n concatFilters: this.concatFilters,\n hideRemoveAllDisclaimer: this.hideRemoveAllDisclaimer,\n hideCloseDisclaimers: this.hideCloseDisclaimers,\n quickSearchWidth: this.quickSearchWidth\n };\n\n const pageOptionSchema: PoPageDynamicOptionsSchema<PoPageDynamicSearchOptions> = {\n schema: [\n {\n nameProp: 'filters',\n merge: true,\n keyForMerge: 'property'\n },\n {\n nameProp: 'actions',\n merge: true,\n keyForMerge: 'label'\n },\n {\n nameProp: 'breadcrumb'\n },\n {\n nameProp: 'title'\n },\n {\n nameProp: 'keepFilters'\n },\n {\n nameProp: 'concatFilters'\n },\n {\n nameProp: 'hideRemoveAllDisclaimer'\n },\n {\n nameProp: 'hideCloseDisclaimers'\n },\n {\n nameProp: 'quickSearchWidth'\n }\n ]\n };\n\n return this.poPageCustomizationService.getCustomOptions(onLoad, originalOption, pageOptionSchema);\n }\n\n private addComplexFilter(filter: object): object {\n let complexFilter;\n\n Object.keys(filter).forEach(property => {\n if (filter[property].start && filter[property].end) {\n if (!complexFilter) {\n complexFilter = '';\n } else {\n complexFilter += ' and ';\n }\n complexFilter += `${property} ge '${filter[property].start}' and ${property} le '${filter[property].end}'`;\n delete filter[property];\n }\n });\n\n if (complexFilter) {\n filter = Object.assign(filter, { $filter: complexFilter });\n }\n\n return filter;\n }\n}\n","<po-page-list\n #poPageList\n [p-actions]=\"actions\"\n [p-breadcrumb]=\"breadcrumb\"\n [p-components-size]=\"componentsSize\"\n [p-disclaimer-group]=\"disclaimerGroup\"\n [p-filter]=\"filterSettings\"\n [p-title]=\"title\"\n [p-quick-search-value]=\"quickSearchValue\"\n>\n <po-advanced-filter\n [p-components-size]=\"componentsSize\"\n [p-filters]=\"filters\"\n [p-keep-filters]=\"keepFilters\"\n [p-literals]=\"advancedFilterLiterals\"\n (p-search-event)=\"onAdvancedSearch($event, true)\"\n >\n </po-advanced-filter>\n\n <ng-content></ng-content>\n</po-page-list>\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { PoDynamicModule, PoLanguageModule, PoModalModule, PoPageModule } from '@po-ui/ng-components';\n\nimport { PoPageCustomizationModule } from '../../services/po-page-customization/po-page-customization.module';\n\nimport { PoAdvancedFilterComponent } from './po-advanced-filter/po-advanced-filter.component';\nimport { PoPageDynamicSearchComponent } from './po-page-dynamic-search.component';\n\n/**\n * @description\n *\n * Módulo do template do po-page-dynamic-search.\n */\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n RouterModule,\n\n PoDynamicModule,\n PoLanguageModule,\n PoModalModule,\n PoPageModule,\n PoPageCustomizationModule\n ],\n declarations: [PoAdvancedFilterComponent, PoPageDynamicSearchComponent],\n exports: [PoPageDynamicSearchComponent]\n})\nexport class PoPageDynamicSearchModule {}\n","import { Input, Directive, Output, EventEmitter } from '@angular/core';\n\nimport { InputBoolean, PoBreadcrumb, PoTableColumnSort } from '@po-ui/ng-components';\n\nimport { convertToBoolean } from '../../utils/util';\n\nimport { PoPageDynamicTableFilters } from './interfaces/po-page-dynamic-table-filters.interface';\n\n@Directive()\nexport class PoPageDynamicListBaseComponent {\n /** Objeto com propriedades do breadcrumb. */\n @Input('p-breadcrumb') breadcrumb?: PoBreadcrumb = { items: [] };\n\n /** Endpoint da API dos recursos que serão exibidos. */\n /**\n * @description\n *\n * Endpoint usado pelo template para requisição dos recursos que serão exibidos.\n *\n * Ao realizar requisições de busca, podem ser enviados os parâmetros (caso possuam valor): `page`, `pageSize`, `search` e `order`.\n *\n * Caso a coluna estiver ordenada descendentemente será enviada da seguinte forma: `-name`, se for ordenada\n * ascendentemente será enviada apenas com o nome da coluna, por exemplo: `name`.\n *\n * Exemplo de uma requisição de busca:\n *\n * > `GET {end-point}/{resource}?page=1&pageSize=10&search=components&order=-name`\n *\n * Caso a ação `remove` estiver configurada, será feito uma requisição de exclusão nesse mesmo endpoint passando os campos\n * setados como `key: true`.\n *\n * > `DELETE {end-point}/{keys}`\n *\n * ```\n * <po-page-dynamic-table\n * [p-actions]=\"{ remove: true }\"\n * [p-fields]=\"[ { property: 'id', key: true } ]\"\n * p-service=\"/api/po-samples/v1/people\"\n * ...>\n * </po-page-dynamic-table>\n * ```\n *\n * Resquisição disparada, onde a propriedade `id` é igual a 2:\n *\n * ```\n * DELETE /api/po-samples/v1/people/2 HTTP/1.1\n * Host: localhost:4000\n * Connection: keep-alive\n * Accept: application/json, text/plain\n * ...\n * ```\n *\n * Para a ação `removeAll`, será feito uma requisição de exclusão em lote para esse mesmo endpoint passando, uma lista\n * de objetos com os campos setados como `key: true` via `payload`.\n *\n * > `DELETE {end-point}`\n *\n * > `Payload: [ {key}, {key} ... {key} ]`\n *\n * ```\n * <po-page-dynamic-table\n * [p-actions]=\"{ removeAll: true }\"\n * [p-fields]=\"[ { property: 'id', key: true } ]\"\n * p-service=\"/api/po-samples/v1/people\"\n * ...>\n * </po-page-dynamic-table>\n * ```\n *\n * Resquisição disparada, onde foram selecionados 3 itens para serem removidos:\n *\n * ```\n * DELETE /api/po-samples/v1/people HTTP/1.1\n * Host: localhost:4000\n * Connection: keep-alive\n * Accept: application/json, text/plain\n * ...\n * ```\n *\n * Request payload:\n *\n * ```\n * [{\"id\":2},{\"id\":4},{\"id\":5}]\n * ```\n *\n * > Caso esteja usando metadados com o template, será disparado uma requisição na inicialização do template para buscar\n * > os metadados da página passando o tipo do metadado esperado e a versão cacheada pelo browser.\n * >\n * > `GET {end-point}/metadata?type=list&version={version}`\n */\n @Input('p-service-api') serviceApi: string;\n\n /** Título da página. */\n @Input('p-title') title: string;\n\n /**\n * @optional\n *\n * @description\n * Evento disparado ao fechar o popover do gerenciador de colunas após alterar as colunas visíveis.\n *\n * O componente envia como parâmetro um array de string com as colunas visíveis atualizadas.\n * Por exemplo: [\"idCard\", \"name\", \"hireStatus\", \"age\"].\n */\n @Output('p-change-visible-columns') changeVisibleColumns = new EventEmitter<Array<string>>();\n\n /**\n * @optional\n *\n * @description\n * Evento disparado ao clicar no botão de restaurar padrão no gerenciador de colunas.\n *\n * O componente envia como parâmetro um array de string com as colunas configuradas inicialmente.\n * Por exemplo: [\"idCard\", \"name\", \"hireStatus\", \"age\"].\n */\n @Output('p-restore-column-manager') columnRestoreManager = new EventEmitter<Array<string>>();\n\n /**\n * @optional\n *\n * @description\n *\n * Evento executado ao ordenar colunas da tabela.\n *\n * Recebe um objeto `{ column, type }` onde:\n *\n * - column (`PoTableColumn`): objeto da coluna que foi clicada/ordenada.\n * - type (`PoTableColumnSortType`): tipo da ordenação.\n */\n @Output('p-sort-by') sortBy: EventEmitter<PoTableColumnSort> = new EventEmitter<PoTableColumnSort>();\n\n private _autoRouter: boolean = false;\n private _columns: Array<any> = [];\n private _duplicates: Array<string> = [];\n private _fields: Array<any> = [];\n private _filters: Array<any> = [];\n private _keys: Array<string> = [];\n\n /**\n * @optional\n *\n * @description\n *\n * Cria automaticamente as rotas de edição (novo/duplicate) e detalhes caso sejam definidas ações na propriedade `p-actions`\n *\n * As rotas criadas serão baseadas na propriedade `p-actions`.\n *\n * > Para o correto funcionamento não pode haver nenhuma rota coringa (`**`) especificada.\n *\n * @default false\n */\n @Input('p-auto-router') set autoRouter(value: boolean) {\n this._autoRouter = convertToBoolean(value);\n }\n\n get autoRouter(): boolean {\n return this._autoRouter;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Lista dos campos usados na tabela e busca avançada.\n *\n *\n * > Caso não seja definido fields a tabela assumirá o comportamento padrão.\n */\n @Input('p-fields') set fields(fields: Array<PoPageDynamicTableFilters>) {\n this._fields = Array.isArray(fields) ? [...fields] : [];\n\n this.setFieldsProperties(this.fields);\n }\n\n get fields(): Array<PoPageDynamicTableFilters> {\n return this._fields;\n }\n\n set columns(value) {\n this._columns = [...(this._columns = this.sortColumnsByOrder(value))];\n }\n\n get columns() {\n return this._columns;\n }\n\n set duplicates(value: Array<string>) {\n this._duplicates = [...value];\n }\n\n get duplicates() {\n return this._duplicates;\n }\n\n set filters(value: Array<PoPageDynamicTableFilters>) {\n this._filters = [...value];\n }\n\n get filters() {\n return this._filters;\n }\n\n set keys(value: Array<string>) {\n this._keys = [...value];\n }\n\n get keys() {\n return this._keys;\n }\n\n private setFieldsProperties(fields: Array<any>) {\n let visibleFilter: boolean;\n this.filters = fields\n .filter(field => field.filter === true)\n .map(filterField => {\n visibleFilter = !(filterField.initValue && filterField.fixed);\n return { ...filterField, visible: visibleFilter };\n });\n this.columns = fields.filter(\n field => field.visible === undefined || field.visible === true || field.allowColumnsManager === true\n );\n this.keys = fields.filter(field => field.key === true).map(field => field.property);\n this.duplicates = fields.filter(field => field.duplicate === true).map(field => field.property);\n }\n\n /**\n * Ordena um array de colunas com base na propriedade `order` de cada coluna.\n *\n * Este método é utilizado para organizar as colunas de uma tabela ou qualquer coleção similar\n * que necessite de ordenação baseada em um critério numérico definido pela propriedade `order`.\n * A ordenação segue as seguintes regras:\n *\n * 1. Colunas que possuem a propriedade `order` com um valor numérico válido e maior que zero\n * são ordenadas em ordem crescente de acordo com este valor.\n *\n * 2. Colunas que não possuem a propriedade `order` ou que possuem um valor inválido ou não numérico\n * para esta propriedade são consideradas iguais em termos de ordenação e mantêm a ordem original\n * em que apareceram no array fornecido.\n *\n * 3. No caso de duas colunas com valores de `order` válidos e idênticos, a ordem entre essas duas colunas\n * é determinada pela sua ordem original no array fornecido.\n *\n * @param columns Array de colunas a ser ordenado. Cada coluna é um objeto que pode conter uma propriedade `order`.\n * O tipo `Array<any>` é utilizado aqui para permitir flexibilidade nos objetos de coluna que podem ser passados,\n * mas espera-se que cada objeto tenha pelo menos uma propriedade `order` para a ordenação adequada.\n *\n * @returns Um novo array de colunas ordenado com base na propriedade `order`.\n */\n private sortColumnsByOrder(columns: Array<any>): Array<any> {\n return columns.sort((a, b) => {\n // Checa se 'order' existe e é um número válido em ambos os objetos\n const hasValidOrderA = 'order' in a && typeof a.order === 'number' && a.order > 0;\n const hasValidOrderB = 'order' in b && typeof b.order === 'number' && b.order > 0;\n\n // Se ambos têm 'order' válido, compara diretamente\n if (hasValidOrderA && hasValidOrderB) {\n return a.order - b.order;\n }\n\n // Se apenas A tem 'order' válido, A vem antes de B\n if (hasValidOrderA) {\n return -1;\n }\n\n // Se apenas B tem 'order' válido, B vem antes de A\n if (hasValidOrderB) {\n return 1;\n }\n\n // Se nenhum dos dois tem 'order' válido, mantém a ordem original (considerando como iguais neste contexto)\n return 0;\n });\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { Observable, of } from 'rxjs';\n\nimport { PoPageDynamicTableActions } from './interfaces/po-page-dynamic-table-actions.interface';\nimport { PoPageDynamicTableBeforeDuplicate } from './interfaces/po-page-dynamic-table-before-duplicate.interface';\nimport { PoPageDynamicTableBeforeEdit } from './interfaces/po-page-dynamic-table-before-edit.interface';\nimport { PoPageDynamicTableBeforeNew } from './interfaces/po-page-dynamic-table-before-new.interface';\nimport { PoPageDynamicTableBeforeRemove } from './interfaces/po-page-dynamic-table-before-remove.interface';\nimport { PoPageDynamicTableBeforeDetail } from './interfaces/po-page-dynamic-table-before-detail.interface';\nimport { PoPageDynamicTableBeforeRemoveAll } from './interfaces/po-page-dynamic-table-before-remove-all.interface';\nimport { PoPageDynamicTableCustomAction } from './interfaces/po-page-dynamic-table-custom-action.interface';\n\ninterface ExecuteActionParameter {\n action: string | Function;\n resource?: any;\n id?: string | number;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PoPageDynamicTableActionsService {\n private http = inject(HttpClient);\n\n readonly headers: HttpHeaders = new HttpHeaders({\n 'X-PO-SCREEN-LOCK': 'true'\n });\n\n beforeDuplicate(\n action: PoPageDynamicTableActions['beforeDuplicate'],\n id: any,\n body: any\n ): Observable<PoPageDynamicTableBeforeDuplicate> {\n const resource = body ?? {};\n\n return this.executeAction({ action, resource, id });\n }\n\n beforeEdit(\n action: PoPageDynamicTableActions['beforeEdit'],\n id: any,\n body: any\n ): Observable<PoPageDynamicTableBeforeEdit> {\n const resource = body ?? {};\n\n return this.executeAction({ action, resource, id });\n }\n\n beforeNew(action?: PoPageDynamicTableActions['beforeNew']): Observable<PoPageDynamicTableBeforeNew> {\n return this.executeAction({ action });\n }\n\n beforeRemove(\n action: PoPageDynamicTableActions['beforeRemove'],\n id: string,\n resource: any\n ): Observable<PoPageDynamicTableBeforeRemove> {\n return this.executeAction({ action, id, resource });\n }\n\n beforeRemoveAll(\n action: PoPageDynamicTableActions['beforeRemoveAll'],\n resources: Array<any>\n ): Observable<PoPageDynamicTableBeforeRemoveAll> {\n return this.executeAction({ action, resource: resources });\n }\n\n beforeDetail(\n action: PoPageDynamicTableActions['beforeDetail'],\n id: string,\n resource: any\n ): Observable<PoPageDynamicTableBeforeDetail> {\n return this.executeAction({ action, id, resource });\n }\n\n customAction(action: PoPageDynamicTableCustomAction['action'], resource: any = []) {\n return this.executeAction({ action, resource });\n }\n\n private executeAction<T>({ action, resource = {}, id }: ExecuteActionParameter): Observable<T> {\n if (!action) {\n return of(<T>{});\n }\n\n if (typeof action === 'string') {\n const url = id ? `${action}/${id}` : action;\n\n return this.http.post<T>(url, resource, { headers: this.headers });\n }\n if (id) {\n return of(action(id, resource));\n }\n return of(action(resource));\n }\n}\n","export const poPageDynamicTableLiteralsDefault = {\n en: {\n pageAction: 'New',\n pageActionRemoveAll: 'Delete',\n tableActionView: 'View',\n tableActionEdit: 'Edit',\n tableActionDuplicate: 'Duplicate',\n tableActionDelete: 'Delete',\n confirmRemoveTitle: 'Confirm delete',\n confirmRemoveMessage: 'Are you sure you want to delete this record? You can not undo this action.',\n confirmRemoveAllTitle: 'Confirm batch deletion',\n confirmRemoveAllMessage: 'Are you sure you want to delete all these records? You can not undo this action.',\n loadDataErrorNotification: 'Service not found',\n removeSuccessNotification: 'Item deleted successfully',\n removeAllSuccessNotification: 'Items deleted successfully'\n },\n es: {\n pageAction: 'Nuevo',\n pageActionRemoveAll: 'Borrar',\n tableActionView: 'Visualizar',\n tableActionEdit: 'Editar',\n tableActionDuplicate: 'Duplicar',\n tableActionDelete: 'Borrar',\n confirmRemoveTitle: 'Confirmar la exclusión',\n confirmRemoveMessage: '¿Está seguro de que desea eliminar este registro? No puede deshacer esta acción.',\n confirmRemoveAllTitle: 'Confirmar la exclusión por lotes',\n confirmRemoveAllMessage: '¿Está seguro de que desea eliminar todos estos registros? No puede deshacer esta acción.',\n loadDataErrorNotification: 'Servicio no informado.',\n removeSuccessNotification: 'Elemento eliminado con éxito',\n removeAllSuccessNotification: 'Elementos eliminados con éxito'\n },\n pt: {\n pageAction: 'Novo',\n pageActionRemoveAll: 'Excluir',\n tableActionView: 'Visualizar',\n tableActionEdit: 'Editar',\n tableActionDuplicate: 'Duplicar',\n tableActionDelete: 'Excluir',\n confirmRemoveTitle: 'Confirmar exclusão',\n confirmRemoveMessage: 'Tem certeza de que deseja excluir esse registro? Você não poderá desfazer essa ação.',\n confirmRemoveAllTitle: 'Confirmar exclusão em lote',\n confirmRemoveAllMessage:\n 'Tem certeza de que deseja excluir todos esses registros? Você não poderá desfazer essa ação.',\n loadDataErrorNotification: 'Serviço não informado.',\n removeSuccessNotification: 'Item excluido com sucesso',\n removeAllSuccessNotification: 'Items excluidos com sucesso'\n },\n ru: {\n pageAction: 'Новый',\n pageActionRemoveAll: 'Удалить',\n tableActionView: 'Просмотр',\n tableActionEdit: 'Редактировать',\n tableActionDuplicate: 'Дублировать',\n tableActionDelete: 'Удалить',\n confirmRemoveTitle: 'Подтверждение удаления',\n confirmRemoveMessage: 'Вы уверены, что хотите удалить эту запись? Вы не можете отменить это действие.',\n confirmRemoveAllTitle: 'Подтвердите удаление пакета',\n confirmRemoveAllMessage: 'Вы уверены, что хотите удалить все эти записи? Вы не можете отменить это действие.',\n loadDataErrorNotification: 'Сервис не найден',\n removeSuccessNotification: 'Элемент успешно удален',\n removeAllSuccessNotification: 'Элементы успешно удалены'\n }\n};\n","import { Component, Input, OnDestroy, OnInit, inject } from '@angular/core';\nimport { ActivatedRoute, Route, Router } from '@angular/router';\n\nimport { EMPTY, Observable, Subscription, of } from 'rxjs';\nimport { map, switchMap, tap } from 'rxjs/operators';\n\nimport {\n PoDialogConfirmOptions,\n PoDialogService,\n PoLanguageService,\n PoNotificationService,\n PoPageAction,\n PoTableAction,\n PoTableColumnSort,\n PoTableColumnSortType,\n PoTableColumnSpacing,\n poLocaleDefault\n} from '@po-ui/ng-components';\n\nimport * as util from '../../utils/util';\nimport { convertToBoolean, getDefaultSizeFn, validateSizeFn } from '../../utils/util';\n\nimport { PoPageDynamicDetailComponent } from '../po-page-dynamic-detail/po-page-dynamic-detail.component';\n\nimport { PoPageDynamicService } from '../../services/po-page-dynamic/po-page-dynamic.service';\nimport { isExternalLink, openExternalLink, removeDuplicateItemsWithArrayKey } from '../../utils/util';\nimport { PoPageDynamicSearchLiterals } from '../po-page-dynamic-search/interfaces/po-page-dynamic-search-literals.interface';\nimport { PoPageCustomizationService } from './../../services/po-page-customization/po-page-customization.service';\nimport { PoPageDynamicOptionsSchema } from './../../services/po-page-customization/po-page-dynamic-options.interface';\nimport { PoPageDynamicTableActions } from './interfaces/po-page-dynamic-table-actions.interface';\nimport { PoPageDynamicTableBeforeDetail } from './interfaces/po-page-dynamic-table-before-detail.interface';\nimport { PoPageDynamicTableBeforeDuplicate } from './interfaces/po-page-dynamic-table-before-duplicate.interface';\nimport { PoPageDynamicTableBeforeEdit } from './interfaces/po-page-dynamic-table-before-edit.interface';\nimport { PoPageDynamicTableBeforeNew } from './interfaces/po-page-dynamic-table-before-new.interface';\nimport { PoPageDynamicTableBeforeRemoveAll } from './interfaces/po-page-dynamic-table-before-remove-all.interface';\nimport { PoPageDynamicTableBeforeRemove } from './interfaces/po-page-dynamic-table-before-remove.interface';\nimport { PoPageDynamicTableCustomAction } from './interfaces/po-page-dynamic-table-custom-action.interface';\nimport { PoPageDynamicTableCustomTableAction } from './interfaces/po-page-dynamic-table-custom-table-action.interface';\nimport { PoPageDynamicTableMetaData } from './interfaces/po-page-dynamic-table-metadata.interface';\nimport { PoPageDynamicTableOptions } from './interfaces/po-page-dynamic-table-options.interface';\nimport { PoPageDynamicListBaseComponent } from './po-page-dynamic-list-base.component';\nimport { PoPageDynamicTableActionsService } from './po-page-dynamic-table-actions.service';\nimport { poPageDynamicTableLiteralsDefault } from './po-page-dynamic-table-literals';\n\nconst PAGE_SIZE_DEFAULT = 10;\n\ntype UrlOrPoCustomizationFunction = string | (() => PoPageDynamicTableOptions);\n\n/**\n * @docsExtends PoPageDynamicListBaseComponent\n *\n * @description\n *\n * O `po-page-dynamic-table` é uma página que exibe uma lista de registros em uma tabela baseado em uma lista de fields,\n * o mesmo também suporta metadados conforme especificado na documentação.\n *\n * ### Utilização via rota\n *\n * Ao utilizar as rotas para inicializar o template, o `page-dynamic-table` disponibiliza propriedades que devem ser fornecidas no arquivo de configuração de rotas da aplicação, para\n * poder especificar o endpoint dos dados e dos metadados que serão carregados na inicialização.\n *\n * Exemplo de utilização:\n *\n * Arquivo de configuração de rotas da aplicação: `app-routing.module.ts`\n * ```\n * const routes: Routes = [\n * {\n * path: 'people',\n * component: PoPageDynamicTableComponent,\n * data: {\n * serviceApi: 'http://localhost:3000/v1/people', // endpoint dos dados\n * serviceMetadataApi: 'http://localhost:3000/v1/metadata', // endpoint dos metadados utilizando o método HTTP Get\n * serviceLoadApi: 'http://localhost:3000/load-metadata' // endpoint de customizações dos metadados utilizando o método HTTP Post\n * }\n * },\n * {\n * path: 'home',\n * component: HomeExampleComponent\n * }\n * ];\n *\n * ```\n * O componente primeiro irá carregar o metadado da rota definida na propriedade serviceMetadataApi\n * e depois irá buscar da rota definida na propriedade serviceLoadApi.\n *\n * A requisição dos metadados é feita na inicialização do template para buscar os metadados da página passando o\n * tipo do metadado esperado e a versão cacheada pelo browser.\n *\n * > Caso o servidor retornar um erro ao recuperar os metadados, serão repassados os metadados salvos em cache,\n * se o cache não existir será disparada uma notificação.\n *\n * O formato esperado na resposta da requisição está especificado na interface\n * [PoPageDynamicTableMetadata](/documentation/po-page-dynamic-table#po-page-dynamic-table-metadata). Por exemplo:\n *\n * ```\n * {\n * version: 1,\n * title: 'Person Table',\n * fields: [\n * { property: 'id', key: true, disabled: true },\n * { property: 'status' },\n * { property: 'name' },\n * { property: 'nickname' },\n * { property: 'birthdate', label: 'Birth date' },\n * { property: 'genre' },\n * { property: 'city' },\n * { property: 'country' }\n * ],\n * keepFilters: true\n * }\n * ```\n *\n * > Caso o endpoint dos metadados não seja especificado, será feito uma requisição utilizando o `serviceApi` da seguinte forma:\n * ```\n * GET {end-point}/metadata?type=list&version={version}\n * ```\n *\n * @example\n *\n * <example name=\"po-page-dynamic-table-basic\" title=\"PO Page Dynamic Table Basic\">\n * <file name=\"sample-po-page-dynamic-table-basic/sample-po-page-dynamic-table-basic.component.html\"> </file>\n * <file name=\"sample-po-page-dynamic-table-basic/sample-po-page-dynamic-table-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-dynamic-table-people\" title=\"PO Page Dynamic Table - People\">\n * <file name=\"sample-po-page-dynamic-table-people/sample-po-page-dynamic-table-people.component.html\"> </file>\n * <file name=\"sample-po-page-dynamic-table-people/sample-po-page-dynamic-table-people.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-dynamic-table-users\" title=\"PO Page Dynamic Table - Users\">\n * <file name=\"sample-po-page-dynamic-table-users/sample-po-page-dynamic-table-users.component.html\"> </file>\n * <file name=\"sample-po-page-dynamic-table-users/sample-po-page-dynamic-table-users.component.ts\"> </file>\n * <file name=\"sample-po-page-dynamic-table-users/sample-po-page-dynamic-table-users.service.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-dynamic-table-hotels\" title=\"PO Page Dynamic Table - Hotels\">\n * <file name=\"sample-po-page-dynamic-table-hotels/sample-po-page-dynamic-table-hotels.component.html\"> </file>\n * <file name=\"sample-po-page-dynamic-table-hotels/sample-po-page-dynamic-table-hotels.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-dynamic-table-drag-and-drop\" title=\"PO Page Dynamic Table - Drag and Drop\">\n * <file name=\"sample-po-page-dynamic-table-drag-and-drop/sample-po-page-dynamic-table-drag-and-drop.component.html\"> </file>\n * <file name=\"sample-po-page-dynamic-table-drag-and-drop/sample-po-page-dynamic-table-drag-and-drop.component.ts\"> </file>\n * </example>\n */\n@Component({\n selector: 'po-page-dynamic-table',\n templateUrl: './po-page-dynamic-table.component.html',\n providers: [PoPageDynamicService],\n standalone: false\n})\nexport class PoPageDynamicTableComponent extends PoPageDynamicListBaseComponent implements OnInit, OnDestroy {\n private router = inject(Router);\n private activatedRoute = inject(ActivatedRoute);\n private poDialogService = inject(PoDialogService);\n private poNotification = inject(PoNotificationService);\n private poPageDynamicService = inject(PoPageDynamicService);\n private poPageCustomizationService = inject(PoPageCustomizationService);\n private poPageDynamicTableActionsService = inject(PoPageDynamicTableActionsService);\n\n /**\n * Função ou serviço que será executado na inicialização do componente.\n *\n * A propriedade aceita os seguintes tipos:\n * - `string`: *Endpoint* usado pelo componente para requisição via `POST`.\n * - `function`: Método que será executado.\n *\n * O retorno desta função deve ser do tipo `PoPageDynamicTableOptions`,\n * onde o usuário poderá customizar novos campos, breadcrumb, title e actions\n *\n * Por exemplo:\n *\n * ```\n * getPageOptions(): PoPageDynamicTableOptions {\n * return {\n * actions:\n * { new: 'new', edit: 'edit/:id', remove: true },\n * fields: [\n * { property: 'idCard', gridColumns: 6 }\n * ]\n * };\n * }\n *\n * ```\n * Para referenciar a sua função utilize a propriedade `bind`, por exemplo:\n * ```\n * [p-load]=\"onLoadOptions.bind(this)\"\n * ```\n */\n @Input('p-load') onLoad: string | (() => PoPageDynamicTableOptions);\n\n /**\n * @optional\n *\n * @description\n *\n * Mantém na modal de `Busca Avançada` os valores preenchidos do último filtro realizado pelo usuário.\n *\n * @default `false`\n */\n @Input({ alias: 'p-keep-filters', transform: convertToBoolean }) keepFilters: boolean = false;\n\n /**\n * @optional\n *\n * @description\n *\n * Define que a coluna de ações ficará no lado direito da tabela.\n *\n * @default `false`\n */\n @Input({ alias: 'p-actions-right', transform: convertToBoolean }) actionRight: boolean = false;\n\n /**\n * @optional\n *\n * @description\n *\n * Permite a utilização da pesquisa rápida junto com a pesquisa avançada.\n *\n * Desta forma, ao ter uma pesquisa avançada estabelecida e ser\n * preenchido a pesquisa rápida, o filtro será concatenado adicionando a pesquisa\n * rápida também na lista de `disclaimers` a aplicando uma nova busca com a concatenação.\n *\n * Por exemplo, com os seguintes filtros aplicados:\n * - filtro avançado: `{ name: 'Mike', age: '12' }`\n * - filtro rápido: `{ search: 'paper' }`\n *\n * A requisição dos dados na API ficará com os parâmetros:\n * ```\n * page=1&pageSize=10&name=Mike&age=12&search=paper\n * ```\n *\n * @default `false`\n */\n @Input({ alias: 'p-concat-filters', transform: convertToBoolean }) concatFilters: boolean = false;\n\n /**\n * @optional\n *\n * @description\n *\n * Permite que o gerenciador de colunas, responsável pela definição de quais colunas serão exibidas, seja escondido.\n *\n * @default `false`\n */\n @Input({ alias: 'p-hide-columns-manager', transform: convertToBoolean })\n hideColumnsManager: boolean = false;\n\n /**\n * @optional\n *\n * @description\n *\n * Oculta o botão para remover todos os *disclaimers* do grupo.\n *\n * > Por padrão, o mesmo é exibido à partir de dois ou mais *disclaimers* com a opção `hideClose` habilitada.\n *\n * @default `false`\n */\n @Input({ alias: 'p-hide-remove-all-disclaimer', transform: convertToBoolean })\n hideRemoveAllDisclaimer: boolean = false;\n\n /**\n * @optional\n *\n * @description\n *\n * Se verdadeiro, ativa a funcionalidade de scroll infinito para a tabela e o botão \"Carregar Mais\" deixará de ser exibido. Ao chegar no fim da tabela\n * executará a função `p-show-more`.\n *\n * **Regras de utilização:**\n * - O scroll infinito só funciona para tabelas que utilizam a propriedade `p-height` e que possuem o scroll já na carga inicial dos dados.\n *\n * @default `false`\n */\n @Input({ alias: 'p-infinite-scroll', transform: convertToBoolean }) infiniteScroll: boolean = false;\n\n hasNext = false;\n items = [];\n literals;\n pageActions: Array<PoPageAction> = [];\n tableActions: Array<PoTableAction> = [];\n\n private _actions: PoPageDynamicTableActions = {};\n private _pageCustomActions: Array<PoPageDynamicTableCustomAction> = [];\n private _height: number;\n private _oldQuickSearchParam: string;\n private _quickSearchParam: string = 'search';\n private _quickSearchValue: string;\n private _quickSearchWidth: number;\n private _tableCustomActions: Array<PoPageDynamicTableCustomTableAction> = [];\n\n private page: number = 1;\n private currentPage: number = 1;\n private itemSelectedAction;\n private params = {};\n private sortedColumn: PoTableColumnSort;\n private subscriptions = new Subscription();\n private hasCustomActionWithSelectable = false;\n\n private _componentsSize?: string = undefined;\n private _customPageListActions: Array<PoPageAction> = [];\n private _customTableActions: Array<PoTableAction> = [];\n private _defaultPageActions: Array<PoPageAction> = [];\n private _defaultTableActions: Array<PoTableAction> = [];\n private _hideCloseDisclaimers: Array<string> = [];\n private _draggable = false;\n private _virtualScroll?: boolean = true;\n\n private set defaultPageActions(value: Array<PoPageAction>) {\n this._defaultPageActions = value;\n this.updatePageActions();\n }\n\n private set defaultTableActions(value: Array<PoTableAction>) {\n this._defaultTableActions = value;\n this.updateTableActions();\n }\n\n private set customPageListActions(value: Array<PoPageAction>) {\n this._customPageListActions = value;\n this.updatePageActions();\n }\n\n private set customTableActions(value: Array<PoTableAction>) {\n this._customTableActions = value;\n this.updateTableActions();\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Ações da página e da tabela.\n * > Caso utilizar a ação padrão de excluir, a mesma será exibida por último na tabela.\n */\n @Input('p-actions') set actions(value: PoPageDynamicTableActions) {\n this._actions = value && typeof value === 'object' && Object.keys(value).length > 0 ? value : {};\n\n this.setPageActions(this.actions);\n this.setRemoveAllAction();\n this.setTableActions(this.actions);\n }\n\n get actions(): PoPageDynamicTableActions {\n return this._actions;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Define o tamanho dos componentes de formulário no template:\n * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n * - `medium`: aplica a medida medium de cada componente.\n *\n * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n *\n * @default `medium`\n */\n @Input('p-components-size') set componentsSize(value: string) {\n this._componentsSize = validateSizeFn(value);\n }\n\n get componentsSize(): string {\n return this._componentsSize ?? getDefaultSizeFn();\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Lista de ações customizadas da página que serão incorporadas às ações\n * informadas através da propriedade `p-actions`.\n *\n * Essas ações ficam localizadas na parte superior da página em botões com ações.\n *\n * Exemplo de utilização:\n * ```\n * [\n * { label: 'Export', action: this.export.bind(this) },\n * { label: 'Print', action: this.print.bind(this) }\n * ];\n * ```\n */\n @Input('p-page-custom-actions') set pageCustomActions(value: Array<PoPageDynamicTableCustomAction>) {\n this._pageCustomActions = Array.isArray(value) ? value : [];\n\n this.customPageListActions = this.transformCustomActionsToPageListAction(this.pageCustomActions);\n this.hasCustomActionWithSelectable = this.pageCustomActions.some(customAction => customAction.selectable);\n }\n\n get pageCustomActions(): Array<PoPageDynamicTableCustomAction> {\n return this._pageCustomActions;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Lista de ações customizadas na tabela da página que serão incorporadas às ações\n * informadas através da propriedade `p-actions`.\n *\n * Exemplo de utilização:\n * ```\n * [\n * { label: 'Apply discount', action: this.applyDiscount.bind(this) },\n * { label: 'Details', action: this.details.bind(this) }\n * ];\n * ```\n * > Caso utilizar a ação padrão de excluir, a mesma será exibida por último na tabela.\n */\n @Input('p-table-custom-actions') set tableCustomActions(value: Array<PoPageDynamicTableCustomTableAction>) {\n this._tableCustomActions = Array.isArray(value) ? value : [];\n\n this.customTableActions = this.transformTableCustomActionsToTableActions(this.tableCustomActions);\n }\n\n get tableCustomActions(): Array<PoPageDynamicTableCustomTableAction> {\n return this._tableCustomActions;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Largura do campo de busca, utilizando o *Grid System*,\n * e limitado ao máximo de 6 colunas. O tamanho mínimo é controlado\n * conforme resolução de tela para manter a consistência do layout.\n */\n @Input('p-quick-search-width') set quickSearchWidth(value: number) {\n this._quickSearchWidth = util.convertToInt(value);\n }\n\n get quickSearchWidth(): number {\n return this._quickSearchWidth;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Define a altura da tabela em *pixels* e fixa o cabeçalho.\n */\n @Input('p-height') set height(value: number) {\n this._height = util.convertToInt(value);\n }\n\n get height(): number {\n return this._height;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Lista de filtros que terão a opção de fechar ocultada\n * em seu respectivo disclaimer. Utilizar o atributo `property` do campo.\n *\n * Exemplo de utilização:\n * ```\n * ['city','name'];\n * ```\n */\n @Input('p-hide-close-disclaimers') set hideCloseDisclaimers(value: Array<string>) {\n this._hideCloseDisclaimers = Array.isArray(value) ? value : [];\n }\n\n get hideCloseDisclaimers(): Array<string> {\n return this._hideCloseDisclaimers;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Identificador do parâmetro enviado ao serviço ao realizar uma busca rápida.\n *\n * @default 'search'\n */\n @Input('p-quick-search-param') set quickSearchParam(value: string) {\n this._quickSearchParam = value ?? 'search';\n }\n\n get quickSearchParam(): string {\n return this._quickSearchParam;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Valor padrão na busca rápida ao inicializar o componente\n *\n */\n @Input('p-quick-search-value') set quickSearchValue(value: string) {\n this._quickSearchValue = value;\n }\n\n get quickSearchValue(): string {\n return this._quickSearchValue;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Objeto com as literais usadas no `po-page-dynamic-table`.\n *\n * Existem duas maneiras de customizar o componente, passando um objeto com todas as literais disponíveis:\n *\n * ```\n * const customLiterals: PoPageDynamicSearchLiterals = {\n * disclaimerGroupTitle: 'Filtros aplicados:',\n * filterTitle: 'Filtro avançado',\n * filterCancelLabel: 'Fechar',\n * filterConfirmLabel: 'Aplicar',\n * quickSearchLabel: 'Valor pesquisado:',\n * searchPlaceholder: 'Pesquise aqui'\n * };\n * ```\n *\n * Ou passando apenas as literais que deseja customizar:\n *\n * ```\n * const customLiterals: PoPageDynamicSearchLiterals = {\n * filterTitle: 'Filtro avançado'\n * };\n * ```\n *\n * E para carregar as literais customizadas, basta apenas passar o objeto para o componente.\n *\n * ```\n * <po-page-dynamic-table\n * [p-literals]=\"customLiterals\">\n * </po-page-dynamic-table>\n * ```\n *\n * > O valor padrão será traduzido de acordo com o idioma configurado no [`PoI18nService`](/documentation/po-i18n) ou *browser*.\n */\n @Input('p-literals') searchLiterals: PoPageDynamicSearchLiterals;\n\n /**\n * @optional\n *\n * @description\n *\n * Define o espaçamento interno das células, impactando diretamente na altura das linhas do table. Os valores\n * permitidos são definidos pelo enum **PoTableColumnSpacing**.\n *\n * > Em nível de acessibilidade **AA**, caso o valor de `p-spacing` não seja definido, o valor padrão será\n * > `extraSmall` nos seguintes cenários:\n * > - Quando o valor de `p-components-size` for `small`;\n * > - Quando o valor padrão dos componentes for configurado como `small` no\n * > [serviço de tema](https://po-ui.io/documentation/po-theme).\n *\n * @default `medium`\n */\n @Input('p-spacing') spacing: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Habilita ou desabilita a quebra automática de texto. Quando ativada, o texto que excede\n * o espaço disponível é transferido para a próxima linha em pontos apropriados para uma\n * leitura clara.\n *\n * > Incompatível com `virtual-scroll`, que requer altura fixa nas linhas.\n *\n * @default `false`\n */\n @Input({ alias: 'p-text-wrap', transform: convertToBoolean }) textWrap?: boolean = false;\n\n /**\n * @optional\n *\n * @description\n *\n * Habilita o modo drag and drop para as colunas da tabela.\n *\n */\n @Input('p-draggable') set draggable(value: boolean) {\n this._draggable = value;\n }\n\n get draggable(): boolean {\n return this._draggable;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Habilita o `virtual-scroll` na tabela para melhorar a performance com grandes volumes de dados.\n * Requer altura (`p-height`) para funcionar corretamente.\n *\n * > Incompatível com `p-text-wrap` e `master-detail`, pois o `virtual-scroll` exige altura fixa nas linhas.\n *\n * @default `true`\n */\n @Input('p-virtual-scroll') set virtualScroll(value: boolean) {\n this._virtualScroll = convertToBoolean(value && this.height > 0);\n }\n\n get virtualScroll() {\n return this._virtualScroll;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Controla a visibilidade dos filtros fixos na página.\n *\n * - Quando `true` (default), todos os filtros, incluindo os fixos, são exibidos, permitindo que o usuário visualize os filtros aplicados.\n * - Quando `false`, os filtros fixos são ocultados, não sendo exibidos na interface, mas ainda sendo aplicados como filtros nas requisições.\n *\n * Esta propriedade trabalha em conjunto com a propriedade `fixed` dos filtros individuais. Filtros marcados como `fixed: true` não serão exibidos na interface do filtro avançado quando `visibleFixedFilters` for `false`, mas continuarão a ser aplicados de forma transparente ao usuário. Dessa forma, permite-se maior flexibilidade no controle de quais filtros devem ser visíveis ao usuário ou devem ser aplicados permanentemente sem interferência.\n *\n * **Exemplo de uso:**\n * ```html\n * <!-- Para ocultar os filtros fixos -->\n * <po-page-dynamic-table [p-visible-fixed-filters]=\"false\"></po-page-dynamic-table>\n * ```\n */\n @Input('p-visible-fixed-filters') visibleFixedFilters: boolean = true;\n\n /* eslint-disable max-params */\n constructor() {\n const languageService = inject(PoLanguageService);\n\n super();\n\n const language = languageService.getShortLanguage();\n\n this.literals = {\n ...poPageDynamicTableLiteralsDefault[poLocaleDefault],\n ...poPageDynamicTableLiteralsDefault[language]\n };\n }\n /* eslint-enable max-params */\n\n ngOnInit(): void {\n this.loadDataFromAPI();\n }\n\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n\n onAdvancedSearch(filter) {\n this.subscriptions.add(this.loadData({ page: 1, ...filter }).subscribe());\n this.params = filter;\n\n if (this.keepFilters) {\n this.updateFilterValue(filter);\n }\n }\n\n onChangeDisclaimers(disclaimers) {\n const filter = {};\n\n disclaimers.forEach(disclaimer => {\n filter[disclaimer.property] = disclaimer.value;\n });\n\n this.onAdvancedSearch(filter);\n }\n\n onQuickSearch(termTypedInQuickSearch) {\n const quickSearchParam = termTypedInQuickSearch ? { [this.quickSearchParam]: termTypedInQuickSearch } : {};\n this.params = this.concatFilters ? { ...this.params, ...quickSearchParam } : { ...quickSearchParam };\n\n if (this._oldQuickSearchParam in this.params && this._oldQuickSearchParam !== this.quickSearchParam) {\n delete this.params[this._oldQuickSearchParam];\n }\n\n this._oldQuickSearchParam = this.quickSearchParam;\n this.subscriptions.add(this.loadData(termTypedInQuickSearch ? { page: 1, ...this.params } : undefined).subscribe());\n }\n\n onSort(sortedColumn: PoTableColumnSort) {\n if (this.height) {\n const order = sortedColumn.type === 'ascending' ? true : false;\n util.sortArrayOfObjects(this.items, sortedColumn.column.property, order);\n }\n this.sortedColumn = sortedColumn;\n }\n\n onChangeVisibleColumns(value) {\n this.changeVisibleColumns.emit(value);\n }\n\n onColumnRestoreManager(value: Array<string>) {\n this.columnRestoreManager.emit(value);\n }\n\n onSortBy(sortedColumn: PoTableColumnSort) {\n this.sortBy.emit(sortedColumn);\n }\n\n showMore() {\n this.subscriptions.add(this.loadData({ page: ++this.page, ...this.params }).subscribe());\n }\n\n get enableSelectionTable() {\n return this.hasActionRemoveAll || this.hasCustomActionWithSelectable;\n }\n\n get hasActionRemoveAll() {\n return !!this.actions.removeAll;\n }\n\n /**\n * Função que realiza a atualização dos dados da tabela.\n *\n * Para utilizá-la é necessário capturar a instância do `page dynamic table`, como por exemplo:\n *\n * ``` html\n * <po-page-dynamic-table #dynamicTable [p-service-api]=\"serviceApi\"></po-page-dynamic-table>\n * ```\n *\n * ``` javascript\n * import { PoPageDynamicTableComponent, PoDynamicFormField } from '@po-ui/ng-components';\n *\n * ...\n *\n * @ViewChild('dynamicTable', { static: true }) dynamicTable: PoPageDynamicTableComponent;\n *\n * pageCustomActions: Array<PoPageDynamicTableCustomAction> = [\n * {\n * label: 'Update',\n * action: this.updateTable.bind(this),\n * icon: 'an-arrows-clockwise'\n * }]\n *\n * updateTable() {\n * this.dynamicTable.updateDataTable();\n * }\n * ```\n *\n *\n * @param {{page: number, key: value }} filter Propriedade para envio de um filtro customizado.\n * Exemplo de envio:\n *\n *```\n * this.dynamicTable.updateDataTable({page: 3, search: 'Brasil'});\n * ```\n * Caso não seja passado um filtro customizado para o método `updateDataTable` a tabela será atualizada conforme a página do ultimo item modificado.\n */\n public updateDataTable(filter?: any) {\n const indexItemSelected = this.items.findIndex(item => item === this.itemSelectedAction);\n const pageNumber = Math.floor(indexItemSelected / PAGE_SIZE_DEFAULT);\n this.currentPage = pageNumber < 0 ? this.currentPage : pageNumber + 1;\n if (this.currentPage === undefined) {\n this.currentPage = 1;\n }\n\n if (filter) {\n this.subscriptions.add(this.loadData(filter).subscribe());\n } else {\n this.subscriptions.add(this.loadData({ page: this.currentPage, ...this.params }).subscribe());\n }\n }\n\n private confirmRemove(\n actionRemove: PoPageDynamicTableActions['remove'],\n actionBeforeRemove: PoPageDynamicTableActions['beforeRemove'],\n item\n ) {\n const confirmOptions: PoDialogConfirmOptions = {\n title: this.literals.confirmRemoveTitle,\n message: this.literals.confirmRemoveMessage,\n componentsSize: this.componentsSize,\n confirm: this.remove.bind(this, item, actionRemove, actionBeforeRemove)\n };\n\n this.poDialogService.confirm(confirmOptions);\n }\n\n private confirmRemoveAll(\n actionRemoveAll: PoPageDynamicTableActions['remove'],\n actionBeforeRemoveAll: PoPageDynamicTableActions['beforeRemove']\n ) {\n const confirmOptions: PoDialogConfirmOptions = {\n title: this.literals.confirmRemoveAllTitle,\n message: this.literals.confirmRemoveAllMessage,\n confirm: this.removeAll.bind(this, actionRemoveAll, actionBeforeRemoveAll)\n };\n\n this.poDialogService.confirm(confirmOptions);\n }\n\n private formatUniqueKey(item) {\n const keys = util.mapObjectByProperties(item, this.keys);\n\n return util.valuesFromObject(keys).join('|');\n }\n\n private getOrderParam(sortedColumn: PoTableColumnSort = { type: undefined }) {\n const { column, type } = sortedColumn;\n\n if (!column) {\n return {};\n }\n\n if (type === PoTableColumnSortType.Descending) {\n return { order: `-${column.property}` };\n }\n\n return { order: `${column.property}` };\n }\n\n private loadData(params: { page?: number; search?: string } = {}) {\n if (!this.serviceApi) {\n this.poNotification.error(this.literals.loadDataErrorNotification);\n return EMPTY;\n }\n\n const orderParam = this.getOrderParam(this.sortedColumn);\n const defaultParams: any = { page: 1, pageSize: PAGE_SIZE_DEFAULT };\n const fullParams: any = { ...defaultParams, ...params, ...orderParam };\n\n return this.poPageDynamicService.getResources(fullParams).pipe(\n tap(response => {\n let newArray;\n if (fullParams.page === 1) {\n newArray = removeDuplicateItemsWithArrayKey(response.items, response.items, this.keys);\n } else {\n newArray = removeDuplicateItemsWithArrayKey(this.items, response.items, this.keys);\n }\n this.items = newArray ? [...newArray] : this.items;\n this.page = fullParams.page;\n this.hasNext = response.hasNext;\n })\n );\n }\n\n private getMetadata(\n serviceApiFromRoute: string,\n onLoad: UrlOrPoCustomizationFunction\n ): Observable<PoPageDynamicTableMetaData> {\n if (serviceApiFromRoute) {\n return this.poPageDynamicService.getMetadata<PoPageDynamicTableMetaData>().pipe(\n tap(response => {\n this.autoRouter = response.autoRouter || this.autoRouter;\n this.actions = response.actions || this.actions;\n this.breadcrumb = response.breadcrumb || this.breadcrumb;\n this.fields = response.fields || this.fields;\n this.title = response.title || this.title;\n this.pageCustomActions = response.pageCustomActions || this.pageCustomActions;\n this.tableCustomActions = response.tableCustomActions || this.tableCustomActions;\n this.keepFilters = response.keepFilters || this.keepFilters;\n this.concatFilters = response.concatFilters || this.concatFilters;\n this.hideRemoveAllDisclaimer = response.hideRemoveAllDisclaimer || this.hideRemoveAllDisclaimer;\n this.hideCloseDisclaimers = response.hideCloseDisclaimers || this.hideCloseDisclaimers;\n this.quickSearchWidth = response.quickSearchWidth || this.quickSearchWidth;\n }),\n switchMap(() => this.loadOptionsOnInitialize(onLoad))\n );\n }\n\n return this.loadOptionsOnInitialize(onLoad);\n }\n\n // @todo Validar rotas na mão pois se existir uma rota '**' o catch do navigation não funciona.\n private navigateTo(\n route: { path: string; component?; url?: string; params?: any },\n forceStopAutoRouter: boolean = false\n ) {\n if (isExternalLink(route.path)) {\n return openExternalLink(route.path);\n }\n\n this.router.navigate([route.url || route.path], { queryParams: route.params }).catch(() => {\n if (forceStopAutoRouter || !this.autoRouter) {\n return;\n }\n\n this.router.config.unshift(<Route>{\n path: route.path,\n component: route.component,\n data: { serviceApi: this.serviceApi, autoRouter: true }\n });\n\n this.navigateTo(route, true);\n });\n }\n\n private createConcatenatedUrl(concatKeys: boolean, url: string, selectedItem): string {\n const keys = this.keys.map(key => encodeURIComponent(selectedItem[key])).join();\n return concatKeys ? `${url}/${keys}` : url;\n }\n\n private openDetail(action: PoPageDynamicTableActions['detail'], item) {\n const id = this.formatUniqueKey(item);\n this.subscriptions.add(\n this.poPageDynamicTableActionsService\n .beforeDetail(this.actions.beforeDetail, id, item)\n .subscribe((beforeDetailResult: PoPageDynamicTableBeforeDetail) =>\n this.executeDetail(action, beforeDetailResult, id, item)\n )\n );\n }\n\n private executeDetail(\n action: PoPageDynamicTableActions['detail'],\n beforeDetailResult?: PoPageDynamicTableBeforeNew,\n id?: string,\n item?: any\n ) {\n const before = beforeDetailResult ?? {};\n const allowAction = typeof before.allowAction === 'boolean' ? before.allowAction : true;\n const { newUrl } = before;\n\n if (allowAction && action) {\n if (newUrl) {\n const path = this.getPathFromNewUrl(newUrl, id);\n return this.navigateTo({ path });\n }\n\n if (typeof action === 'string') {\n const url = this.resolveUrl(item, action);\n this.navigateTo({ path: action, url, component: PoPageDynamicDetailComponent });\n } else {\n action(id, item);\n }\n }\n }\n\n private getPathFromNewUrl(newUrl: string, id: string): string {\n if (newUrl.includes(':id')) {\n return newUrl.replace(/:id/g, id);\n }\n return newUrl;\n }\n\n private openDuplicate(actionDuplicate: PoPageDynamicTableActions['duplicate'], item: any) {\n const id = this.formatUniqueKey(item);\n const duplicates = util.removeKeysProperties(this.keys, util.mapObjectByProperties(item, this.duplicates));\n\n this.subscriptions.add(\n this.poPageDynamicTableActionsService\n .beforeDuplicate(this.actions.beforeDuplicate, id, duplicates)\n .subscribe((beforeDuplicateResult: PoPageDynamicTableBeforeDuplicate) =>\n this.executeDuplicate(actionDuplicate, beforeDuplicateResult, duplicates)\n )\n );\n }\n\n private executeDuplicate(\n actionDuplicate: PoPageDynamicTableActions['duplicate'],\n beforeDuplicateResult: PoPageDynamicTableBeforeDuplicate,\n duplicates: any\n ) {\n const before = beforeDuplicateResult ?? {};\n const allowAction = typeof before.allowAction === 'boolean' ? before.allowAction : true;\n const beforeDuplicateResource = before.resource;\n const newAction = before.newUrl ?? actionDuplicate;\n\n if (allowAction && actionDuplicate) {\n if (typeof beforeDuplicateResource === 'object' && beforeDuplicateResource !== null) {\n duplicates = util.removeKeysProperties(this.keys, beforeDuplicateResource);\n }\n\n if (typeof newAction === 'string') {\n return this.navigateTo({ path: newAction, params: { duplicate: JSON.stringify(duplicates) } });\n }\n\n return newAction(duplicates);\n }\n }\n\n private openEdit(actionEdit: PoPageDynamicTableActions['edit'], item) {\n const id = this.formatUniqueKey(item);\n\n this.subscriptions.add(\n this.poPageDynamicTableActionsService\n .beforeEdit(this.actions.beforeEdit, id, item)\n .pipe(\n switchMap((beforeEditResult: PoPageDynamicTableBeforeEdit) =>\n this.executeEditAction(actionEdit, beforeEditResult, item, id)\n )\n )\n .subscribe()\n );\n }\n\n private executeEditAction(\n action: PoPageDynamicTableActions['edit'],\n beforeEditResult: PoPageDynamicTableBeforeEdit,\n item: any,\n id: string\n ) {\n const newEditAction = beforeEditResult?.newUrl ?? action;\n const allowAction = beforeEditResult?.allowAction ?? true;\n\n if (!allowAction) {\n return EMPTY;\n }\n\n if (typeof newEditAction === 'string') {\n this.openEditUrl(newEditAction, item);\n } else {\n const updatedItem = newEditAction(id, item);\n if (typeof updatedItem === 'object' && updatedItem !== null) {\n this.modifyUITableItem(item, util.removeKeysProperties(this.keys, updatedItem));\n }\n }\n\n return EMPTY;\n }\n\n private openEditUrl(path: string, item) {\n const url = this.resolveUrl(item, path);\n\n this.navigateTo({ path, url });\n }\n\n private modifyUITableItem(currentItem, newItemValue) {\n const tableItem = this.items.findIndex(item => item === currentItem);\n this.items[tableItem] = { ...currentItem, ...newItemValue };\n }\n\n private openNew(actionNew: PoPageDynamicTableActions['new']) {\n this.subscriptions.add(\n this.poPageDynamicTableActionsService\n .beforeNew(this.actions.beforeNew)\n .subscribe((beforeNewResult: PoPageDynamicTableBeforeNew) => this.executeNew(actionNew, beforeNewResult))\n );\n }\n\n private executeNew(actionNew: PoPageDynamicTableActions['new'], beforeNewResult?: PoPageDynamicTableBeforeNew) {\n const before = beforeNewResult ?? {};\n const allowAction = typeof before.allowAction === 'boolean' ? before.allowAction : true;\n const { newUrl } = before;\n\n if (allowAction && actionNew) {\n if (newUrl) {\n return this.navigateTo({ path: newUrl });\n }\n\n if (typeof actionNew === 'string') {\n return this.navigateTo({ path: actionNew });\n }\n\n return actionNew();\n }\n }\n\n /**\n * Caso exista mais de um identificador, será concatenado com '|'.\n *\n * Ex: { id: 1, company: 'po' }\n *\n * Para o endpoint /resources/:id será executada a url /resources/1|po\n */\n private remove(\n item,\n actionRemove: PoPageDynamicTableActions['remove'],\n actionBeforeRemove: PoPageDynamicTableActions['beforeRemove']\n ) {\n const uniqueKey = this.formatUniqueKey(item);\n\n this.subscriptions.add(\n this.poPageDynamicTableActionsService\n .beforeRemove(actionBeforeRemove, uniqueKey, item)\n .pipe(switchMap(beforeRemove => this.deleteAction(item, actionRemove, beforeRemove)))\n .subscribe()\n );\n }\n\n private deleteAction(\n item,\n actionRemove: PoPageDynamicTableActions['remove'],\n beforeRemove: PoPageDynamicTableBeforeRemove\n ): Observable<any> {\n const { allowAction, newUrl } = beforeRemove || {};\n const allow = allowAction ?? true;\n\n if (allow) {\n let uniqueKey = this.formatUniqueKey(item);\n const resourceToRemoveKey = this.returnResourcesKeys([item]);\n\n if (typeof actionRemove === 'boolean' || newUrl) {\n uniqueKey = newUrl ? undefined : uniqueKey;\n return this.poPageDynamicService\n .deleteResource(uniqueKey, newUrl)\n .pipe(map(() => this.removeFromUI(resourceToRemoveKey, this.literals.removeSuccessNotification)));\n }\n\n return of(actionRemove(uniqueKey, item)).pipe(\n tap(remove => {\n const removeItem = remove ?? false;\n this.removeFromUI(resourceToRemoveKey, this.literals.removeSuccessNotification, removeItem);\n })\n );\n }\n\n return of({});\n }\n\n private removeFromUI(items: Array<any>, message: string, remove = true) {\n if (remove === true && items?.length) {\n this.removeLocalItems(items);\n this.poNotification.success(message);\n }\n }\n\n private removeAll(\n actionRemoveAll: PoPageDynamicTableActions['removeAll'],\n actionBeforeRemoveAll: PoPageDynamicTableActions['beforeRemoveAll']\n ) {\n const originalResourcesKeys = this.getSelectedItemsKeys();\n this.subscriptions.add(\n this.poPageDynamicTableActionsService\n .beforeRemoveAll(actionBeforeRemoveAll, originalResourcesKeys)\n .pipe(switchMap(beforeRemove => this.deleteAllAction(actionRemoveAll, beforeRemove, originalResourcesKeys)))\n .subscribe()\n );\n }\n\n private getSelectedItemsKeys() {\n const resources = this.items.filter(item => item.$selected);\n\n if (resources.length === 0) {\n return;\n }\n return this.returnResourcesKeys(resources);\n }\n\n private returnResourcesKeys(resources) {\n return util.mapArrayByProperties(resources, this.keys);\n }\n\n private deleteAllAction(\n actionRemoveAll: PoPageDynamicTableActions['removeAll'],\n beforeRemoveAll: PoPageDynamicTableBeforeRemoveAll,\n originalResources: Array<any>\n ) {\n const { allowAction, newUrl, resources } = beforeRemoveAll ?? {};\n const allow = allowAction ?? true;\n const resourcestoDelete = resources ?? originalResources;\n\n if (allow && Array.isArray(resourcestoDelete)) {\n if (typeof actionRemoveAll === 'boolean' || newUrl) {\n return this.poPageDynamicService.deleteResources(resourcestoDelete, newUrl).pipe(\n tap(() => {\n this.removeFromUI(resourcestoDelete, this.literals.removeAllSuccessNotification);\n })\n );\n }\n return of(actionRemoveAll(resourcestoDelete)).pipe(\n tap(removeItems => this.removeFromUI(removeItems, this.literals.removeSuccessNotification))\n );\n }\n\n return of({});\n }\n\n private removeLocalItems(itemsKeysToRemove = []) {\n if (itemsKeysToRemove.length) {\n this.items = this.items.filter(item => {\n const itemKey = this.formatUniqueKey(item);\n return !itemsKeysToRemove.find(itemKeyToRemove => util.valuesFromObject(itemKeyToRemove).join('|') === itemKey);\n });\n }\n }\n\n private resolveUrl(item: any, path: string) {\n const uniqueKey = this.formatUniqueKey(item);\n\n return path.replace(/:id/g, uniqueKey);\n }\n\n private setPageActions(actions: PoPageDynamicTableActions) {\n if (actions?.new) {\n this.defaultPageActions = [{ label: this.literals.pageAction, action: this.openNew.bind(this, actions.new) }];\n }\n }\n\n private transformCustomActionsToPageListAction(\n customActions: Array<PoPageDynamicTableCustomAction>\n ): Array<PoPageAction> {\n /* istanbul ignore next */\n return customActions.map(customAction => ({\n label: customAction.label,\n action: this.callPageCustomAction.bind(this, customAction),\n disabled: this.isDisablePageCustomAction.bind(this, customAction),\n ...(customAction.icon && { icon: customAction.icon }),\n visible: customAction.visible\n }));\n }\n\n private transformTableCustomActionsToTableActions(\n tableCustomActions: Array<PoPageDynamicTableCustomTableAction>\n ): Array<PoTableAction> {\n return tableCustomActions.map(tableCustomAction => ({\n label: tableCustomAction.label,\n icon: tableCustomAction.icon,\n action: this.callTableCustomAction.bind(this, tableCustomAction),\n disabled: tableCustomAction.disabled,\n visible: tableCustomAction.visible\n }));\n }\n\n private isDisablePageCustomAction(customAction): boolean {\n return customAction.selectable && !this.getSelectedItemsKeys();\n }\n\n private callPageCustomAction(customAction: PoPageDynamicTableCustomAction) {\n if (customAction.action) {\n const selectedItems = customAction.selectable ? this.getSelectedItemsKeys() : undefined;\n\n const sendCustomActionSubscription = this.poPageDynamicTableActionsService\n .customAction(customAction.action, selectedItems)\n .subscribe();\n\n this.subscriptions.add(sendCustomActionSubscription);\n } else if (customAction.url) {\n this.navigateTo({ path: customAction.url });\n }\n }\n\n private callTableCustomAction(customAction: PoPageDynamicTableCustomTableAction, selectedItem) {\n this.itemSelectedAction = selectedItem;\n if (customAction.action) {\n const sendCustomActionSubscription = this.poPageDynamicTableActionsService\n .customAction(customAction.action, selectedItem)\n .subscribe(updatedItem => {\n if (typeof updatedItem === 'object' && updatedItem !== null) {\n this.modifyUITableItem(selectedItem, util.removeKeysProperties(this.keys, updatedItem));\n }\n });\n\n this.subscriptions.add(sendCustomActionSubscription);\n } else if (customAction.url) {\n if (isExternalLink(customAction.url)) {\n openExternalLink(this.createConcatenatedUrl(customAction.concatKeys, customAction.url, selectedItem));\n } else {\n this.navigateTo({\n path: this.createConcatenatedUrl(customAction.concatKeys, customAction.url, selectedItem)\n });\n }\n }\n }\n\n private setRemoveAllAction() {\n const action = this._actions;\n if (this.showRemove(action.removeAll)) {\n this.defaultPageActions = [\n ...this._defaultPageActions,\n {\n label: this.literals.pageActionRemoveAll,\n action: this.confirmRemoveAll.bind(this, action.removeAll, action.beforeRemoveAll),\n disabled: this.disableRemoveAll.bind(this),\n type: 'danger'\n }\n ];\n }\n }\n\n private disableRemoveAll(): boolean {\n return !this.getSelectedItemsKeys();\n }\n\n private setTableActions(actions: PoPageDynamicTableActions) {\n if (actions) {\n const visibleRemove = this.showRemove(actions.remove);\n this.defaultTableActions = [\n {\n action: this.openDetail.bind(this, actions.detail),\n label: this.literals.tableActionView,\n visible: !!this._actions.detail\n },\n {\n action: this.openEdit.bind(this, actions.edit),\n label: this.literals.tableActionEdit,\n visible: !!this._actions.edit\n },\n {\n action: this.openDuplicate.bind(this, actions.duplicate),\n label: this.literals.tableActionDuplicate,\n visible: !!this._actions.duplicate\n },\n {\n action: this.confirmRemove.bind(this, actions.remove, actions.beforeRemove),\n label: this.literals.tableActionDelete,\n separator: true,\n type: 'danger',\n visible: visibleRemove\n }\n ];\n }\n }\n\n private loadDataFromAPI() {\n const { serviceApi: serviceApiFromRoute, serviceMetadataApi, serviceLoadApi } = this.activatedRoute.snapshot.data;\n\n const onLoad = serviceLoadApi || this.onLoad;\n this.serviceApi = serviceApiFromRoute || this.serviceApi;\n\n this.poPageDynamicService.configServiceApi({ endpoint: this.serviceApi, metadata: serviceMetadataApi });\n\n const metadata$ = this.getMetadata(serviceApiFromRoute, onLoad);\n let data$;\n if (this.quickSearchValue) {\n const paramsQuickSearchValue = { [this.quickSearchParam]: this.quickSearchValue };\n data$ = this.loadData(paramsQuickSearchValue);\n } else {\n data$ = this.loadData();\n }\n\n this.subscriptions.add(\n metadata$\n .pipe(\n switchMap(() => {\n const initialFilters = this.getInitialValuesFromFilter();\n\n if (!Object.keys(initialFilters).length) {\n return data$;\n }\n\n return EMPTY;\n })\n )\n .subscribe()\n );\n }\n\n private getInitialValuesFromFilter() {\n const initialFilters = this.filters.reduce(\n (result, item) => Object.assign(result, { [item.property]: item.initValue }),\n {}\n );\n\n Object.keys(initialFilters).forEach(key => {\n if (!initialFilters[key]) {\n delete initialFilters[key];\n }\n });\n\n return initialFilters;\n }\n\n private loadOptionsOnInitialize(onLoad: UrlOrPoCustomizationFunction) {\n if (onLoad) {\n return this.getPoDynamicPageOptions(onLoad).pipe(\n tap(responsePoOption =>\n this.poPageCustomizationService.changeOriginalOptionsToNewOptions(this, responsePoOption)\n )\n );\n }\n\n return of(null);\n }\n\n private getPoDynamicPageOptions(onLoad: UrlOrPoCustomizationFunction): Observable<PoPageDynamicTableOptions> {\n const originalOption: PoPageDynamicTableOptions = {\n fields: this.fields,\n actions: this.actions,\n breadcrumb: this.breadcrumb,\n title: this.title,\n keepFilters: this.keepFilters,\n concatFilters: this.concatFilters,\n hideRemoveAllDisclaimer: this.hideRemoveAllDisclaimer,\n hideCloseDisclaimers: this.hideCloseDisclaimers,\n pageCustomActions: this.pageCustomActions,\n tableCustomActions: this.tableCustomActions,\n quickSearchWidth: this.quickSearchWidth\n };\n\n const pageOptionSchema: PoPageDynamicOptionsSchema<PoPageDynamicTableOptions> = {\n schema: [\n {\n nameProp: 'fields',\n merge: true,\n keyForMerge: 'property'\n },\n {\n nameProp: 'actions',\n merge: true\n },\n {\n nameProp: 'breadcrumb'\n },\n {\n nameProp: 'title'\n },\n {\n nameProp: 'keepFilters'\n },\n {\n nameProp: 'quickSearchWidth'\n },\n {\n nameProp: 'concatFilters'\n },\n {\n nameProp: 'hideRemoveAllDisclaimer'\n },\n {\n nameProp: 'hideCloseDisclaimers'\n },\n {\n nameProp: 'pageCustomActions',\n merge: true,\n keyForMerge: 'label'\n },\n {\n nameProp: 'tableCustomActions',\n merge: true,\n keyForMerge: 'label'\n }\n ]\n };\n\n return this.poPageCustomizationService.getCustomOptions(onLoad, originalOption, pageOptionSchema);\n }\n\n private showRemove<T>(actionRemove: T): boolean {\n const action = actionRemove ?? false;\n if (typeof action === 'boolean') {\n return action;\n }\n return true;\n }\n\n private updateFilterValue(filter) {\n return this.fields.map(item => {\n if (filter.hasOwnProperty(item.property)) {\n item.initValue = filter[item.property];\n }\n });\n }\n\n private updatePageActions() {\n this.pageActions = [...this._defaultPageActions, ...this._customPageListActions];\n }\n\n private updateTableActions() {\n const defaultTableActionsWithoutActionDelete = this._defaultTableActions.filter(\n tableAction => tableAction.label !== this.literals.tableActionDelete\n );\n\n const tableActionDelete = this._defaultTableActions.find(\n tableAction => tableAction.label === this.literals.tableActionDelete\n );\n\n const newTableActions = [...defaultTableActionsWithoutActionDelete, ...this._customTableActions];\n\n if (tableActionDelete) {\n newTableActions.push(tableActionDelete);\n }\n\n this.tableActions = newTableActions;\n }\n}\n","<po-page-dynamic-search\n [p-actions]=\"pageActions\"\n [p-breadcrumb]=\"breadcrumb\"\n [p-components-size]=\"componentsSize\"\n [p-hide-close-disclaimers]=\"hideCloseDisclaimers\"\n [p-filters]=\"filters\"\n [p-keep-filters]=\"keepFilters\"\n [p-literals]=\"searchLiterals\"\n [p-concat-filters]=\"concatFilters\"\n [p-hide-remove-all-disclaimer]=\"hideRemoveAllDisclaimer\"\n [p-quick-search-width]=\"quickSearchWidth\"\n [p-title]=\"title\"\n [p-visible-fixed-filters]=\"visibleFixedFilters\"\n (p-advanced-search)=\"onAdvancedSearch($event)\"\n (p-change-disclaimers)=\"onChangeDisclaimers($event)\"\n (p-quick-search)=\"onQuickSearch($event)\"\n [p-quick-search-value]=\"quickSearchValue || ''\"\n>\n <po-table\n [p-sort]=\"true\"\n [p-actions]=\"tableActions\"\n [p-actions-right]=\"actionRight\"\n [p-selectable]=\"enableSelectionTable\"\n [p-columns]=\"columns\"\n [p-components-size]=\"componentsSize\"\n [p-items]=\"items\"\n [p-height]=\"height\"\n [p-hide-columns-manager]=\"hideColumnsManager\"\n [p-infinite-scroll]=\"infiniteScroll\"\n [p-show-more-disabled]=\"!hasNext\"\n (p-show-more)=\"showMore()\"\n (p-sort-by)=\"onSort($event)\"\n (p-change-visible-columns)=\"onChangeVisibleColumns($event)\"\n (p-restore-column-manager)=\"onColumnRestoreManager($event)\"\n (p-sort-by)=\"onSortBy($event)\"\n [p-text-wrap]=\"textWrap\"\n [p-draggable]=\"draggable\"\n [p-spacing]=\"spacing\"\n [p-virtual-scroll]=\"virtualScroll\"\n >\n </po-table>\n</po-page-dynamic-search>\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { PoTableModule } from '@po-ui/ng-components';\n\nimport { PoPageDynamicSearchModule } from '../po-page-dynamic-search/po-page-dynamic-search.module';\n\nimport { PoPageDynamicTableComponent } from './po-page-dynamic-table.component';\nimport { PoPageCustomizationModule } from '../../services/po-page-customization/po-page-customization.module';\nimport { PoPageDynamicModule } from '../../services/po-page-dynamic/po-page-dynamic.module';\n\n/**\n * @description\n *\n * Módulo do template do po-page-dynamic-table.\n */\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n RouterModule,\n\n PoTableModule,\n PoPageDynamicSearchModule,\n PoPageCustomizationModule,\n PoPageDynamicModule\n ],\n declarations: [PoPageDynamicTableComponent],\n exports: [PoPageDynamicTableComponent]\n})\nexport class PoPageDynamicTableModule {}\n","import { PoJobSchedulerInternal } from './interfaces/po-job-scheduler-internal.interface';\n\nexport class PoPageJobSchedulerInternal implements PoJobSchedulerInternal {\n periodicity = 'single';\n firstExecution = new Date();\n firstExecutionHour = this.getCurrentHour(this.firstExecution);\n recurrent = true;\n frequency = {};\n\n private getCurrentHour(date: Date): string {\n const hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours();\n const minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();\n\n return `${hours}:${minutes}`;\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { addZero, convertDateToISOExtended } from '../../utils/util';\nimport { PoDynamicFormField } from '@po-ui/ng-components';\n\nimport { PoJobScheduler } from './interfaces/po-job-scheduler.interface';\nimport { PoJobSchedulerInternal } from './interfaces/po-job-scheduler-internal.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PoPageJobSchedulerService {\n private http = inject(HttpClient);\n\n readonly headers: HttpHeaders = new HttpHeaders({\n 'X-PO-SCREEN-LOCK': 'true'\n });\n\n private endpoint = '/';\n\n configServiceApi(config: { endpoint?: string } = {}) {\n this.endpoint = config.endpoint;\n }\n\n // Cria um recurso\n createResource(resource): Observable<any> {\n const newResouce = this.convertToJobScheduler(resource);\n\n return this.http.post(`${this.endpoint}`, newResouce, { headers: this.headers });\n }\n\n getHeadProcesses() {\n const headers = { 'X-PO-No-Error': 'true' };\n\n return this.http.head(`${this.endpoint}/processes`, { headers });\n }\n\n // Busca parametros pelo processo id\n getParametersByProcess(processId: string | number): Observable<any> {\n return this.http\n .get(`${this.endpoint}/processes/${processId}/parameters`, { headers: this.headers })\n .pipe(map((resource: { items: Array<PoDynamicFormField> }) => resource.items));\n }\n\n // Busca um único recurso\n getProcess(id: string | number): Observable<any> {\n return this.http.get(`${this.endpoint}/processes/${id}`, { headers: this.headers });\n }\n\n // Busca uma lista de processos\n getProcesses(params: {} = {}): Observable<any> {\n return this.http.get(`${this.endpoint}/processes`, { params });\n }\n\n // Busca um único recurso\n getResource(id: string | number): Observable<any> {\n return this.http\n .get(`${this.endpoint}/${id}`, { headers: this.headers })\n .pipe(map(resource => this.convertToJobSchedulerInternal(resource)));\n }\n\n // Atualiza um recurso\n updateResource(id, resource): Observable<any> {\n const newResouce = this.convertToJobScheduler(resource);\n return this.http.put(`${this.endpoint}/${id}`, newResouce, { headers: this.headers });\n }\n\n convertToJobScheduler(jobSchedulerInternal): PoJobScheduler {\n const jobScheduler = { ...jobSchedulerInternal };\n\n if (jobSchedulerInternal.periodicity) {\n if (jobSchedulerInternal.periodicity === 'single') {\n jobScheduler.recurrent = false;\n } else {\n Object.assign(jobScheduler, this.convertToPeriodicity(jobSchedulerInternal));\n }\n }\n\n if (jobSchedulerInternal.firstExecutionHour) {\n jobScheduler.firstExecution = this.replaceHourFirstExecution(\n jobSchedulerInternal.firstExecution,\n jobSchedulerInternal.firstExecutionHour\n );\n }\n\n if (jobSchedulerInternal.frequency && jobSchedulerInternal.frequency.type) {\n jobScheduler.rangeExecutions = {\n frequency: { ...jobSchedulerInternal.frequency }\n };\n\n if (jobSchedulerInternal.rangeLimitHour) {\n const splitRangeLimitHour = jobSchedulerInternal.rangeLimitHour.split(':');\n\n jobScheduler.rangeExecutions.rangeLimit = {\n hour: parseInt(splitRangeLimitHour[0], 10),\n minute: parseInt(splitRangeLimitHour[1], 10)\n };\n }\n\n if (jobSchedulerInternal.rangeLimitDay) {\n jobScheduler.rangeExecutions.rangeLimit = {\n ...jobScheduler.rangeExecutions.rangeLimit,\n day: jobSchedulerInternal.rangeLimitDay\n };\n }\n }\n\n if (!Object.keys(this.returnValidExecutionParameter(jobScheduler.executionParameter)).length) {\n delete jobScheduler.executionParameter;\n }\n\n this.removeInvalidKeys(jobScheduler);\n\n return jobScheduler;\n }\n\n convertToJobSchedulerInternal(jobScheduler = <any>{}): PoJobSchedulerInternal {\n const jobSchedulerInternal = { ...jobScheduler };\n\n if (jobScheduler.firstExecution) {\n jobSchedulerInternal.firstExecutionHour = this.getHourFirstExecution(jobScheduler.firstExecution);\n }\n\n Object.assign(jobSchedulerInternal, this.convertToPeriodicityInternal(jobScheduler));\n\n if (jobScheduler.rangeExecutions) {\n jobSchedulerInternal.rangeLimitHour = `${\n jobScheduler.rangeExecutions.rangeLimit.hour < 10\n ? '0' + jobScheduler.rangeExecutions.rangeLimit.hour\n : jobScheduler.rangeExecutions.rangeLimit.hour\n }:${\n jobScheduler.rangeExecutions.rangeLimit.minute < 10\n ? '0' + jobScheduler.rangeExecutions.rangeLimit.minute\n : jobScheduler.rangeExecutions.rangeLimit.minute\n }`;\n jobSchedulerInternal.rangeLimitDay = jobScheduler.rangeExecutions.rangeLimit.day;\n jobSchedulerInternal.frequency = {\n type: jobScheduler.rangeExecutions.frequency.type,\n value: jobScheduler.rangeExecutions.frequency.value\n };\n }\n\n this.removeInvalidKeys(jobSchedulerInternal, ['weekly', 'monthly', 'daily']);\n\n return jobSchedulerInternal;\n }\n\n private convertToPeriodicity(value: {\n periodicity: string;\n dayOfMonth?: string;\n daysOfWeek?: number;\n hour?: string;\n }) {\n const newValue = {};\n const valuePeriodicity = value.periodicity;\n\n if (valuePeriodicity) {\n newValue[valuePeriodicity] = {};\n\n if (valuePeriodicity === 'monthly') {\n newValue[valuePeriodicity].day = value.dayOfMonth ? parseInt(value.dayOfMonth, 10) : 0;\n } else if (valuePeriodicity === 'weekly') {\n newValue[valuePeriodicity].daysOfWeek = value.daysOfWeek;\n }\n\n newValue[valuePeriodicity].hour = value.hour ? parseInt(value.hour.split(':')[0], 10) : 0;\n newValue[valuePeriodicity].minute = value.hour ? parseInt(value.hour.split(':')[1], 10) : 0;\n }\n\n return newValue;\n }\n\n private convertToPeriodicityInternal(value = <any>{}) {\n if (value.monthly) {\n return {\n periodicity: 'monthly',\n hour: `${addZero(value.monthly.hour)}:${addZero(value.monthly.minute)}`,\n dayOfMonth: value.monthly.day\n };\n } else if (value.daily) {\n return {\n periodicity: 'daily',\n hour: `${addZero(value.daily.hour)}:${addZero(value.daily.minute)}`\n };\n } else if (value.weekly) {\n return {\n periodicity: 'weekly',\n hour: `${addZero(value.weekly.hour)}:${addZero(value.weekly.minute)}`,\n daysOfWeek: [...value.weekly.daysOfWeek]\n };\n } else {\n return {\n periodicity: 'single'\n };\n }\n }\n\n private getCurrentHour(date: Date): string {\n const hours = addZero(date.getHours());\n const minutes = addZero(date.getMinutes());\n\n return `${hours}:${minutes}`;\n }\n\n private getHourFirstExecution(firstExecutionDate: string): string {\n return this.getCurrentHour(new Date(firstExecutionDate));\n }\n\n private removeInvalidKeys(value: object, keys?: Array<string>) {\n const invalidKeys = keys || [\n 'periodicity',\n 'hour',\n 'minute',\n 'day',\n 'daysOfWeek',\n 'dayOfMonth',\n 'firstExecutionHour',\n 'frequency',\n 'rangeLimitHour',\n 'rangeLimitDay'\n ];\n\n Object.keys(value).forEach(key => {\n if (invalidKeys.includes(key)) {\n delete value[key];\n } else if (key === 'rangeExecutions' && value['periodicity'] === 'single') {\n delete value[key];\n }\n });\n }\n\n private replaceHourFirstExecution(date: string, time: string): string {\n try {\n if (!date) {\n return date;\n }\n\n const dateSplited = date.split('-');\n const timeSplited = time.split(':');\n\n if (dateSplited.length < 2 || timeSplited.length < 1) {\n return date;\n }\n\n const year = parseInt(dateSplited[0]);\n const monthIndex = parseInt(dateSplited[1]) - 1;\n const day = parseInt(dateSplited[2]);\n\n const hours = parseInt(timeSplited[0], 10);\n const minutes = parseInt(timeSplited[1], 10);\n\n const firstExecutionDate = new Date(year, monthIndex, day, hours, minutes);\n\n if (!(firstExecutionDate instanceof Date && !isNaN(firstExecutionDate.getTime()))) {\n return date;\n }\n\n return convertDateToISOExtended(firstExecutionDate);\n } catch {\n return date;\n }\n }\n\n private returnValidExecutionParameter(parameter: object) {\n const newParameter = { ...parameter };\n\n for (const key in newParameter) {\n if (newParameter.hasOwnProperty(key) && newParameter[key] === undefined) {\n delete newParameter[key];\n }\n }\n\n return newParameter;\n }\n}\n","import { Directive, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\n\nimport { PoBreadcrumb, PoDynamicFormField, PoStepperOrientation } from '@po-ui/ng-components';\n\nimport { Subscription } from 'rxjs';\nimport { getDefaultSizeFn, validateSizeFn } from '../../utils/util';\nimport { PoJobSchedulerInternal } from './interfaces/po-job-scheduler-internal.interface';\nimport { PoPageJobSchedulerInternal } from './po-page-job-scheduler-internal';\nimport { PoPageJobSchedulerService } from './po-page-job-scheduler.service';\n\n/**\n * @description\n *\n * O `po-page-job-scheduler` é uma página para criação e atualização de agendamentos da execução de processos (Job Scheduler),\n * como por exemplo: a geração da folha de pagamento dos funcionários.\n *\n * Para utilizar esta página, basta informar o serviço (endpoint) para consumo,\n * sem a necessidade de criar componentes e tratamentos dos dados.\n *\n * Veja mais sobre os padrões utilizados nas requisições no [Guia de implementação de APIs](guides/api).\n */\n@Directive()\nexport class PoPageJobSchedulerBaseComponent implements OnDestroy {\n private _componentsSize?: string = undefined;\n\n /** Objeto com as propriedades do breadcrumb. */\n @Input('p-breadcrumb') breadcrumb?: PoBreadcrumb = { items: [] };\n\n /**\n * @optional\n *\n * @description\n *\n * Define o tamanho dos componentes de formulário no template:\n * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n * - `medium`: aplica a medida medium de cada componente.\n *\n * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n *\n * @default `medium`\n */\n @Input('p-components-size') set componentsSize(value: string) {\n this._componentsSize = validateSizeFn(value);\n }\n\n get componentsSize(): string {\n return this._componentsSize ?? getDefaultSizeFn();\n }\n\n /**\n * Endpoint usado pelo componente para busca dos processos e parâmetros que serão utilizados para criação e edição dos agendamentos.\n *\n * #### Processos\n *\n * Os processos são as tarefas que estarão disponíveis para o usuário poder fazer os agendamentos.\n * Ao inicializar o componente, será feito uma requisição `GET` para o endpoint `{service-api}/processes`, para buscar\n * essa lista de processos.\n *\n * Este endpoint `{service-api}/processes` deve retornar uma lista de objetos que seguem a definição de dados abaixo:\n *\n * ```\n * GET {service-api}/processes\n * ```\n *\n * ```\n * {\n * items: [\n * { \"processID\": \"ac4f\", \"description\": \"Gerar folha de pagamento\" },\n * { \"processID\": \"df6l\", \"description\": \"Relatório de imposto a recolher\" },\n * { \"processID\": \"dk3p\", \"description\": \"Títulos em aberto\" },\n * ]\n * }\n * ```\n *\n * Desta forma será renderizado um componente para selecionar o processo e/ou filtrá-los.\n *\n * Para realizar o filtro de busca do processo, será feita uma requisição enviando o conteúdo digitado na busca através do\n * parâmetro `search`. Da seguinte forma:\n *\n * ```\n * GET {service-api}/processes?search=relatorio\n * ```\n *\n * > Veja mais sobre paginação e filtros no [Guia de implementação de APIs](guides/api).\n * Caso seja informada a propriedade `p-parameters` não serão realizadas as requisições de processos e nem de parametros automaticamente.\n *\n * Também é possível fazer um agendamento de um processo específico, sem que seja necessário um endpoint para busca desses\n * processos. Então, caso o endpoint `{service-api}/processes` não seja válido, será apresentado um campo de entrada de\n * texto para o usuário informar diretamente\n * o **identificador do processo - `processID`** e ao salvar será enviado um `POST` para o endpoint difinido `serviceApi` conforme abaixo:\n *\n * ```\n * POST {service-api}\n * ```\n *\n * *Request payload* - estrutura de dados enviada no corpo da requisição conforme interface `PoJobScheduler`:\n *\n * ```\n * {\n * \"daily\": { \"hour\": 10, \"minute\": 12 },\n * \"firstExecution\": \"2018-12-07T00:00:01-00:00\",\n * \"recurrent\": true,\n * \"processID\": \"ac0405\"\n * ...\n * }\n * ```\n *\n * Caso seja necessário informar parâmetros e adicionar configurações no processo selecionado, será realizado um `GET`\n * como exemplificado abaixo. Os parâmetros devem retornar uma lista de objetos que seguem a interface\n * [PoDynamicFormField](/documentation/po-dynamic-form). Porém, caso utilizar a propriedade `p-parameters` o componente não\n * realizará a busca automática e o campo de processos não será exibido.\n *\n * ```\n * GET {service-api}/processes/:id/parameters\n * ...\n * {\n * items: [\n * { \"property\": \"vencimento\", type: \"date\" },\n * { \"property\": \"imposto-retido\", \"label\": \"Imposto Retido\", type: \"boolean\" }\n * ]\n * }\n * ```\n *\n * #### Salvar e Atualizar\n *\n * Para salvar o agendamento, será feita uma requisição de criação, passando os valores preenchidos pelo usuário via *payload*.\n * Abaixo uma requisição `POST` disparada, onde as propriedades do *Job Scheduler* foram preenchidas:\n *\n * ```\n * POST {service-api}\n * ```\n *\n * *Request payload* - estrutura de dados enviada no corpo da requisição conforme interface `PoJobScheduler`:\n *\n * ```\n * {\n * \"firstExecution\": \"2018-12-07T00:00:01-00:00\",\n * \"recurrent\": true,\n * \"monthly\": { \"day\": 1, \"hour\": 10, \"minute\": 0 },\n * \"processID\": \"ac0405\",\n * \"rangeExecutions: { \"frequency\": { \"type\": \"hour\", \"value\": 2 }, \"rangeLimit\": { \"hour\": 18, \"minute\": 0, \"day\": 20 } }\n * }\n * ```\n *\n * Caso queira que o componente carregue um agendamento já existente, deve ser incluído um parâmetro na rota chamado `id`.\n *\n * Exemplo de configuração de rota:\n *\n * ```\n * RouterModule.forRoot([\n * ...\n * { path: 'edit/:id', component: ExampleJobSchedulerComponent },\n * ...\n * ],\n * ```\n *\n * Baseado nisso, na inicialização do template será disparado uma requisição para buscar o recurso que será editado.\n *\n * ```\n * GET {service-api}/{id}\n * ```\n *\n * Ao atualizar o agendamento, será disparado um `PUT` com os dados preenchidos.\n * Veja abaixo uma requisição `PUT` disparada, onde a propriedade *recurrent* e *daily* foram atualizadas:\n *\n * ```\n * PUT {service-api}/{id}\n * ```\n *\n * *Request payload* - estrutura de dados enviada no corpo da requisição conforme interface `PoJobScheduler`:\n *\n * ```\n * {\n * \"firstExecution\": \"2018-12-07T00:00:01-00:00\",\n * \"recurrent\": true,\n * \"processID\": \"ac0405\",\n * \"monthly\": { \"day\": 1, \"hour\": 10, \"minute\": 0 },\n * \"processID\": \"ac0405\",\n * \"rangeExecutions: { \"frequency\": { \"type\": \"hour\", \"value\": 2 }, \"rangeLimit\": { \"hour\": 18, \"minute\": 0, \"day\": 20 } }\n * }\n * ```\n */\n @Input('p-service-api') serviceApi: string;\n\n /** Título da página. */\n @Input('p-title') title: string;\n\n /**\n * Parâmetros que serão utilizados para criação e edição dos agendamentos.\n *\n * Ao utilizar esta propriedade, o componente não buscará automaticamente os parâmetros da API e o campo para preenchimento do processo não será exibido.\n *\n */\n @Input('p-parameters') parameters: Array<PoDynamicFormField> = [];\n\n @Input('p-value') set value(value: any) {\n this.model = this.poPageJobSchedulerService.convertToJobSchedulerInternal(value);\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Define a orientação de exibição do `po-stepper`.\n *\n * > Quando não utilizada, segue o comportamento com base nas dimensões da tela.\n *\n * > Veja os valores válidos no *enum* [PoStepperOrientation](documentation/po-stepper#stepperOrientation).\n *\n */\n\n @Input('p-orientation') set stepperDefaultOrientation(value: PoStepperOrientation) {\n this._orientation = (<any>Object).values(PoStepperOrientation).includes(value) ? value : undefined;\n }\n\n get stepperDefaultOrientation(): PoStepperOrientation {\n return this._orientation;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Função chamada após realizar a confirmação da execução no PoPageJobScheduler.\n * Permite alterar os valores do model do PoPageJobScheduler antes de realizar o envio para a Api.\n *\n * > Deve retornar um objeto do tipo `PoPageJobScheduler` para ser adicionado ao model do PoPageJobScheduler.\n *\n * > Ao ser disparada, a mesma receberá por parâmetro o model do PoPageJobScheduler de interface `PoJobSchedulerInternal`.\n *\n * O contexto da função que será chamada, será o mesmo que o do `PoPageJobScheduler`, então para poder alterar\n * para o contexto do componente que o está utilizando, pode ser utilizado a propriedade `bind` do Javascript.\n * Por exemplo, para a função `beforeSend`:\n *\n * ```\n * <po-page-job-scheduler [p-service-api]=\"serviceApi\" [p-parameters]=\"params\" [p-before-send]=\"beforeSend.bind(this)\">\n * ...\n * </po-page-job-scheduler>\n * ```\n */\n @Input('p-before-send') beforeSendAction: (model: PoJobSchedulerInternal) => PoJobSchedulerInternal;\n\n /**\n * @optional\n *\n * @description\n *\n * Define se o step `Agendamento` deve ser exibido como o último na sequência de steps\n *\n * > Aplicável apenas quando utilizado `PoJobSchedulerParametersTemplateDirective`\n */\n @Input('p-step-execution-last') stepExecutionLast: boolean;\n\n /**\n * @optional\n *\n * @description\n *\n * Evento disparado ao concluir o processo de agendamento com sucesso.\n */\n @Output('p-success') success = new EventEmitter<any>();\n\n /**\n * @optional\n *\n * @description\n *\n * Evento disparado ao ocorrer um erro impossibilitando a conclusão do agendamento.\n * Para este evento será passado como parâmetro os detalhes do erro.\n */\n @Output('p-error') error = new EventEmitter<any>();\n\n model: PoJobSchedulerInternal = new PoPageJobSchedulerInternal();\n\n private _subscription = new Subscription();\n private _orientation;\n\n constructor(protected poPageJobSchedulerService: PoPageJobSchedulerService) {}\n\n ngOnDestroy() {\n this._subscription.unsubscribe();\n }\n\n protected loadData(id: string | number) {\n if (!id) {\n this.model = this.model || new PoPageJobSchedulerInternal();\n return;\n }\n\n this._subscription.add(\n this.poPageJobSchedulerService.getResource(id).subscribe(\n (response: PoJobSchedulerInternal) => {\n this.model = response;\n },\n () => {\n this.model = new PoPageJobSchedulerInternal();\n }\n )\n );\n }\n\n protected markAsDirtyInvalidControls(controls: { [key: string]: AbstractControl }) {\n for (const key in controls) {\n if (controls.hasOwnProperty(key)) {\n const control = controls[key];\n\n if (control.invalid) {\n control.markAsDirty();\n }\n }\n }\n }\n}\n","export const poPageJobSchedulerLiteralsDefault = {\n en: {\n at: 'at',\n back: 'Back',\n next: 'Next',\n periodicity: 'Periodicity',\n execution: 'Execution',\n process: 'Process',\n enterProcess: 'Enter a process',\n recurrent: 'Recurrent',\n single: 'Single',\n daily: 'Daily',\n weekly: 'Weekly',\n monthly: 'Monthly',\n scheduling: 'Scheduling',\n parameterization: 'Parameterization',\n conclude: 'Conclude',\n firstExecution: 'First Execution',\n startTime: 'Start time',\n endTime: 'End time',\n time: 'Time',\n hour: 'Hour',\n minute: 'Minute',\n day: 'Day',\n endDay: 'End day',\n startDay: 'Start day',\n weekDays: 'Week days',\n sunday: 'Sunday',\n monday: 'Monday',\n tuesday: 'Tuesday',\n wednesday: 'Wednesday',\n thursday: 'Thursday',\n friday: 'Friday',\n saturday: 'Saturday',\n parameters: 'Parameters',\n yes: 'Yes',\n no: 'No',\n notReported: 'Not reported',\n periodicityData: 'Periodicity data',\n confirmation: 'Confirmation',\n confirmSaveMessage: 'Are you sure you want to complete this schedule?',\n confirmUpdateMessage: 'Are you sure you want to update this schedule?',\n saveNotificationSuccessUpdate: 'Successfully updated scheduling',\n saveNotificationSuccessSave: 'Successfully saved scheduling',\n parametersNotFound: 'Parameters not found.',\n frequency: 'Frequency',\n to: 'to',\n from: 'from'\n },\n es: {\n at: 'a las',\n back: 'Volver',\n next: 'Avanzar',\n periodicity: 'Periodicidad',\n execution: 'Ejecución',\n process: 'Proceso',\n enterProcess: 'Informe un proceso',\n recurrent: 'Recurrente',\n single: 'Única',\n daily: 'Diaria',\n weekly: 'Semanal',\n monthly: 'Mensual',\n scheduling: 'Programación',\n parameterization: 'Parametrización',\n conclude: 'Completar',\n firstExecution: 'Primera ejecución',\n startTime: 'Hora de inicio',\n endTime: 'Hora de finalización',\n time: 'Horário',\n hour: 'Hora',\n minute: 'Minute',\n day: 'Día',\n endDay: 'Último Día',\n startDay: 'Día de inicio',\n weekDays: 'Dias de la semana',\n sunday: 'Domingo',\n monday: 'Lunes',\n tuesday: 'Martes',\n wednesday: 'Miércoles',\n thursday: 'Jueves',\n friday: 'Viernes',\n saturday: 'Sábado',\n parameters: 'Parámetros',\n yes: 'Sí',\n no: 'No',\n notReported: 'No informado',\n periodicityData: 'Dados da periodicidade',\n confirmation: 'Confirmación',\n confirmSaveMessage: '¿Está seguro de que desea completar esta programación de proceso?',\n confirmUpdateMessage: '¿Está seguro de que desea cambiar esta programación de proceso?',\n saveNotificationSuccessUpdate: 'Programación de proceso actualizada con éxito.',\n saveNotificationSuccessSave: 'Programación de proceso salvo con éxito.',\n parametersNotFound: 'No se encontraron parámetros.',\n frequency: 'Frecuencia',\n to: 'de',\n from: 'a'\n },\n pt: {\n at: 'às',\n back: 'Voltar',\n next: 'Avançar',\n periodicity: 'Periodicidade',\n execution: 'Execução',\n process: 'Processo',\n enterProcess: 'Informe um processo',\n recurrent: 'Recorrente',\n single: 'Única',\n daily: 'Diária',\n weekly: 'Semanal',\n monthly: 'Mensal',\n scheduling: 'Agendamento',\n parameterization: 'Parametrização',\n conclude: 'Concluir',\n firstExecution: 'Primeira execução',\n startTime: 'Horário inicial',\n endTime: 'Horário final',\n time: 'Horário',\n hour: 'Hora',\n minute: 'Minuto',\n day: 'Dia',\n endDay: 'Dia final',\n startDay: 'Dia inicial',\n weekDays: 'Dias de semana',\n sunday: 'Domingo',\n monday: 'Segunda-feira',\n tuesday: 'Terça-feira',\n wednesday: 'Quarta-feira',\n thursday: 'Quinta-feira',\n friday: 'Sexta-feira',\n saturday: 'Sábado',\n parameters: 'Parâmetros',\n yes: 'Sim',\n no: 'Não',\n notReported: 'Não informado',\n periodicityData: 'Dados da periodicidade',\n confirmation: 'Confirmação',\n confirmSaveMessage: 'Tem certeza que deseja concluir este agendamento de processo?',\n confirmUpdateMessage: 'Tem certeza que deseja alterar este agendamento de processo?',\n saveNotificationSuccessUpdate: 'Agendamento de processo atualizado com sucesso.',\n saveNotificationSuccessSave: 'Agendamento de processo salvo com sucesso.',\n parametersNotFound: 'Parâmetros não foram encontrados.',\n frequency: 'Frequência',\n to: 'das',\n from: 'até'\n },\n ru: {\n at: 'в',\n back: 'Назад',\n next: 'Следующий',\n periodicity: 'Периодичность',\n execution: 'Выполнение',\n process: 'Процесс',\n enterProcess: 'Укажите процесс',\n recurrent: 'Периодически',\n single: 'Одиночный',\n daily: 'Ежедневно',\n weekly: 'Еженедельно',\n monthly: 'Ежемесячно',\n scheduling: 'Планирование',\n parameterization: 'Параметризация',\n conclude: 'Завершить',\n firstExecution: 'Первичное выполнение',\n startTime: 'начальное время',\n endTime: 'время окончания',\n time: 'расписание',\n hour: 'Час',\n day: 'День',\n minute: 'минута',\n endDay: 'последний день',\n startDay: 'день начала',\n weekDays: 'Рабочие дни',\n sunday: 'Воскресенье',\n monday: 'Понедельник',\n tuesday: 'Вторник',\n wednesday: 'Среда',\n thursday: 'Четверг',\n friday: 'Пятница',\n saturday: 'Суббота',\n parameters: 'Параметры',\n yes: 'Да',\n no: 'Нет',\n notReported: 'Не сообщается',\n periodicityData: 'Данные о периодичности',\n confirmation: 'Подтверждение',\n confirmSaveMessage: 'Вы уверены, что хотите завершить это расписание?',\n confirmUpdateMessage: 'Вы уверены, что хотите обновить это расписание?',\n saveNotificationSuccessUpdate: 'Расписание успешно обновлено',\n saveNotificationSuccessSave: 'Расписание успешно сохранено ',\n parametersNotFound: 'Параметры не найдены',\n frequency: 'Частота',\n to: 'с',\n from: 'до'\n }\n};\n","import { Injectable, inject } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { PoLookupFilter } from '@po-ui/ng-components';\n\nimport { PoPageJobSchedulerService } from './po-page-job-scheduler.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PoPageJobSchedulerLookupService implements PoLookupFilter {\n private poPageJobSchedulerService = inject(PoPageJobSchedulerService);\n\n getFilteredItems({ filter, page, pageSize }): Observable<any> {\n const params = { page, pageSize, search: filter };\n\n return this.poPageJobSchedulerService.getProcesses(params);\n }\n\n getObjectByValue(processId: string): Observable<any> {\n return this.poPageJobSchedulerService.getProcess(processId);\n }\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n/**\n * @usedBy PoPageJobScheduler\n *\n * @description\n *\n * Esta diretiva permite personalizar o conteúdo da uma ou várias etapa(s) de parametrização do componente de PoPageJobScheduler.\n *\n * Para repassar as alterações realizadas no componente customizado ao model do PoPageJobScheduler, deve\n * ser atualizado os valores através da propriedade p-execution-parameter. Dessa forma as alterações serão adicionadas ao\n * atributo executionParameter do objeto de envio a Api.\n * É possível também controlar a permissão de avançar, fazendo uso da propriedade p-disable-advance.\n *\n * ```\n * ...\n * <po-page-job-scheduler [p-service-api]=\"serviceApi\">\n * <ng-template p-job-scheduler-parameters-template\n * [p-execution-parameter]=\"executionParameter\"\n * [p-disable-advance]=\"disableAdvance\"\n * p-label-step=\"titleStep\"\n * >\n * ...\n * </ng-template>\n * <ng-template p-job-scheduler-parameters-template\n * [p-execution-parameter]=\"executionParameter\"\n * [p-disable-advance]=\"disableAdvance\"\n * p-label-step=\"titleStep\"\n * >\n * ...\n * </ng-template>\n * </po-page-job-scheduler>\n * ...\n * ```\n *\n */\n@Directive({\n selector: '[p-job-scheduler-parameters-template]',\n standalone: false\n})\nexport class PoJobSchedulerParametersTemplateDirective {\n /**\n * @optional\n *\n * @description\n *\n * Objeto que deve conter as alterações feitas pelo componente de template que serão repassadas dentro do atributo\n * `executionParameter` para envio na api.\n *\n * > O componente deve manter essa propriedade atualizada. É chamada após o avançar da etapa de parametrização.\n */\n @Input('p-execution-parameter') executionParameter: object;\n\n /**\n * @optional\n *\n * @default false\n *\n * @description\n *\n * Determina se deve desabilitar o botão de avançar para a próxima etapa\n *\n * > Pode ser utilizado para validar campos antes de avançar.\n */\n @Input('p-disable-advance') disabledAdvance: boolean = false;\n\n /**\n * @optional\n *\n * @description\n *\n * Determina o label do step\n */\n @Input('p-label-step') title: string;\n\n // Necessário manter templateRef para o funcionamento do row template.\n constructor(public templateRef: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n/**\n * @usedBy PoPageJobScheduler\n *\n * @description\n *\n * Esta diretiva permite personalizar o conteúdo de resumo das informações de parâmetro na etapa de conclusão do componente de PoPageJobScheduler.\n *\n * Essa funcionalidade costuma ser útil em casos onde a propriedade parameters não tem valor e mesmo assim é necessário exibir\n * as informações de resumo na etapa de conclusão.\n *\n * ```\n * ...\n * <po-page-job-scheduler [p-service-api]=\"serviceApi\">\n * <ng-template p-job-scheduler-summary-template>\n * ...\n * <po-dynamic-view\n * [p-fields]=\"fieldsSummary\"\n * [p-value]=\"valueSummary\"\n * >\n * </po-dynamic-view\n * </ng-template>\n * </po-page-job-scheduler>\n * ...\n * ```\n *\n */\n@Directive({\n selector: '[p-job-scheduler-summary-template]',\n standalone: false\n})\nexport class PoJobSchedulerSummaryTemplateDirective {\n // Necessário manter templateRef para o funcionamento do row template.\n constructor(public templateRef: TemplateRef<any>) {}\n}\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n inject\n} from '@angular/core';\nimport { NgForm } from '@angular/forms';\n\nimport { PoCheckboxGroupOption, PoRadioGroupOption } from '@po-ui/ng-components';\n\nimport { isTypeof } from '../../../utils/util';\n\nimport { PoPageJobSchedulerLookupService } from '../po-page-job-scheduler-lookup.service';\nimport { PoPageJobSchedulerService } from '../po-page-job-scheduler.service';\n\n@Component({\n selector: 'po-page-job-scheduler-execution',\n templateUrl: 'po-page-job-scheduler-execution.component.html',\n standalone: false\n})\nexport class PoPageJobSchedulerExecutionComponent implements OnInit, AfterViewInit {\n private poPageJobSchedulerService = inject(PoPageJobSchedulerService);\n poPageJobSchedulerLookup = inject(PoPageJobSchedulerLookupService);\n\n @ViewChild('formExecution', { static: true }) form: NgForm;\n\n // templates\n @ViewChild('dailyTemplate', { static: true }) dailyTemplate;\n @ViewChild('monthlyTemplate', { static: true }) monthlyTemplate;\n @ViewChild('weeklyTemplate', { static: true }) weeklyTempalte;\n\n @Input('p-components-size') componentsSize: string;\n\n @Input('p-is-edit') isEdit: boolean = false;\n\n @Input('p-literals') literals = <any>{};\n\n @Input('p-no-parameters') noParameters: boolean = true;\n @Input('p-no-custom-params-component') noCustomParamsComponent: boolean = true;\n\n @Output('p-change-process') changeProcess: EventEmitter<any> = new EventEmitter<any>();\n\n dayPattern = '^(3[0-1]|[0-2][0-9]|[1-9]|0[1-9])$';\n existProcessAPI = true;\n minDateFirstExecution = new Date();\n periodicityOptions: Array<PoRadioGroupOption> = [];\n periodicityTemplates: { daily: TemplateRef<any>; weekly: TemplateRef<any>; monthly: TemplateRef<any> };\n timePattern = '^(2[0-3]|[01][0-9]):?([0-5][0-9])$';\n weekDays: Array<PoCheckboxGroupOption> = [];\n frequencyOptions: Array<PoRadioGroupOption> = [];\n containsFrequency = false;\n frequency: string = 'hour';\n rangeLimitHour: string;\n\n private _value: any = {};\n\n @Input('p-value') set value(value: any) {\n this._value = value && isTypeof(value, 'object') ? value : {};\n\n this.containsFrequency = this._value.frequency && this._value.frequency.value ? true : false;\n }\n\n get value() {\n return this._value;\n }\n\n get startDateFirstExecution() {\n return this.isEdit ? undefined : this.minDateFirstExecution;\n }\n\n get hourLabel() {\n return this.containsFrequency ? this.literals.startTime : this.literals.time;\n }\n\n get dayLabel() {\n return this.containsFrequency ? this.literals.startDay : this.literals.day;\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.subscribeProcessIdValueChanges();\n\n if (this.value.periodicity) {\n this.frequencyOptions = this.frequencyOptions.map(frequencyOption => ({\n ...frequencyOption,\n disabled: frequencyOption.value === 'day' && this.value.periodicity !== 'monthly'\n }));\n }\n });\n }\n\n ngOnInit() {\n this.periodicityTemplates = {\n daily: this.dailyTemplate,\n monthly: this.monthlyTemplate,\n weekly: this.weeklyTempalte\n };\n\n if (this.noParameters && this.noCustomParamsComponent) {\n this.checkExistsProcessesAPI();\n }\n\n this.periodicityOptions = this.getPeriodicityOptions();\n this.weekDays = this.getWeekDays();\n this.frequencyOptions = this.getFrequencyOptions();\n }\n\n onChangeContainsFrequency(containsFrequency) {\n if (containsFrequency) {\n this.value.frequency = { type: 'hour', value: null };\n } else {\n this.value.frequency = {};\n }\n\n this.value.rangeLimitHour = null;\n this.value.rangeLimitDay = null;\n this.value.dayOfMonth = null;\n }\n\n onChangePeriodicityOptions(periodicity) {\n this.frequencyOptions = this.frequencyOptions.map(frequencyOption => ({\n ...frequencyOption,\n disabled: frequencyOption.value === 'day' && periodicity !== 'monthly'\n }));\n\n this.value.frequency.type = null;\n }\n\n onChangeFrequencyOptions() {\n this.value.rangeLimitHour = null;\n }\n\n private checkExistsProcessesAPI() {\n this.poPageJobSchedulerService.getHeadProcesses().subscribe(undefined, error => {\n this.existProcessAPI = false;\n });\n }\n\n private getPeriodicityOptions() {\n return [\n { label: this.literals.single, value: 'single' },\n { label: this.literals.daily, value: 'daily' },\n { label: this.literals.weekly, value: 'weekly' },\n { label: this.literals.monthly, value: 'monthly' }\n ];\n }\n\n private getFrequencyOptions() {\n return [\n { label: this.literals.day, value: 'day' },\n { label: this.literals.hour, value: 'hour' },\n { label: this.literals.minute, value: 'minute' }\n ];\n }\n\n private getWeekDays() {\n return [\n { label: this.literals.sunday, value: 'Sunday' },\n { label: this.literals.monday, value: 'Monday' },\n { label: this.literals.tuesday, value: 'Tuesday' },\n { label: this.literals.wednesday, value: 'Wednesday' },\n { label: this.literals.thursday, value: 'Thursday' },\n { label: this.literals.friday, value: 'Friday' },\n { label: this.literals.saturday, value: 'Saturday' }\n ];\n }\n\n private subscribeProcessIdValueChanges() {\n this.form.controls['processID']?.valueChanges.subscribe(processId => {\n this.changeProcess.emit({ processId, existAPI: this.existProcessAPI });\n });\n }\n}\n","<form #formExecution=\"ngForm\">\n <div class=\"po-row\">\n @if (existProcessAPI) {\n @if (noParameters && noCustomParamsComponent) {\n <po-lookup\n class=\"po-md-12\"\n name=\"processID\"\n [(ngModel)]=\"value.processID\"\n p-field-label=\"description\"\n p-field-value=\"processID\"\n p-required\n [p-disabled]=\"isEdit\"\n [p-filter-service]=\"poPageJobSchedulerLookup\"\n [p-label]=\"literals.process\"\n [p-placeholder]=\"literals.enterProcess\"\n [p-size]=\"componentsSize\"\n >\n </po-lookup>\n }\n } @else {\n <po-input\n class=\"po-md-12\"\n name=\"processID\"\n [(ngModel)]=\"value.processID\"\n p-required\n [p-disabled]=\"isEdit\"\n [p-label]=\"literals.process\"\n [p-placeholder]=\"literals.enterProcess\"\n [p-size]=\"componentsSize\"\n >\n </po-input>\n }\n </div>\n\n <div class=\"po-row\">\n <po-divider class=\"po-md-12\" [p-label]=\"literals.firstExecution\"></po-divider>\n\n <po-datepicker\n class=\"po-md-4\"\n name=\"firstExecution\"\n [(ngModel)]=\"value.firstExecution\"\n p-placeholder=\"dd/mm/aaaa\"\n p-required\n [p-disabled]=\"isEdit\"\n [p-label]=\"literals.day\"\n [p-min-date]=\"startDateFirstExecution\"\n [p-size]=\"componentsSize\"\n >\n </po-datepicker>\n\n <po-input\n class=\"po-md-2\"\n name=\"firstExecutionHour\"\n [(ngModel)]=\"value.firstExecutionHour\"\n p-mask=\"99:99\"\n p-mask-format-model\n p-placeholder=\"HH:mm\"\n p-required\n [p-disabled]=\"isEdit\"\n [p-label]=\"literals.time\"\n [p-pattern]=\"timePattern\"\n [p-size]=\"componentsSize\"\n >\n </po-input>\n </div>\n\n <hr />\n\n <div class=\"po-row\">\n <po-radio-group\n class=\"po-sm-12\"\n name=\"periodicity\"\n [(ngModel)]=\"value.periodicity\"\n p-columns=\"4\"\n p-required\n [p-label]=\"literals.periodicity\"\n [p-options]=\"periodicityOptions\"\n [p-size]=\"componentsSize\"\n (p-change)=\"onChangePeriodicityOptions($event)\"\n >\n </po-radio-group>\n\n @if (value.periodicity !== 'single') {\n <div class=\"po-row\">\n <po-switch\n class=\"po-md-12\"\n name=\"containsFrequency\"\n [(ngModel)]=\"containsFrequency\"\n [p-label]=\"literals.frequency\"\n [p-label-off]=\"literals.no\"\n [p-label-on]=\"literals.yes\"\n [p-size]=\"componentsSize\"\n (p-change)=\"onChangeContainsFrequency($event)\"\n >\n </po-switch>\n @if (containsFrequency) {\n <po-radio-group\n class=\"po-md-10\"\n name=\"frequencyType\"\n p-required\n [(ngModel)]=\"value.frequency.type\"\n [p-columns]=\"3\"\n [p-options]=\"frequencyOptions\"\n [p-size]=\"componentsSize\"\n (p-change)=\"onChangeFrequencyOptions()\"\n >\n </po-radio-group>\n <po-number\n class=\"po-md-2\"\n name=\"frequencyValue\"\n p-required\n [p-size]=\"componentsSize\"\n [(ngModel)]=\"value.frequency.value\"\n >\n </po-number>\n }\n </div>\n <div class=\"po-row\">\n <po-divider class=\"po-md-12\" [p-label]=\"literals.periodicityData\"> </po-divider>\n <ng-container *ngTemplateOutlet=\"periodicityTemplates[value.periodicity]\"> </ng-container>\n </div>\n <div class=\"po-row\">\n <po-switch\n class=\"po-md-3\"\n name=\"recurrent\"\n [(ngModel)]=\"value.recurrent\"\n [p-label]=\"literals.recurrent\"\n [p-label-off]=\"literals.no\"\n [p-label-on]=\"literals.yes\"\n [p-size]=\"componentsSize\"\n >\n </po-switch>\n </div>\n }\n </div>\n\n <ng-template #dailyTemplate>\n <ng-container *ngTemplateOutlet=\"inputHourTemplate\"> </ng-container>\n </ng-template>\n\n <ng-template #weeklyTemplate>\n <div class=\"po-row\">\n <ng-container *ngTemplateOutlet=\"inputHourTemplate\"> </ng-container>\n </div>\n\n <po-checkbox-group\n class=\"po-md-12\"\n name=\"daysOfWeek\"\n [(ngModel)]=\"value.daysOfWeek\"\n p-columns=\"4\"\n p-required\n [p-label]=\"literals.weekDays\"\n [p-options]=\"weekDays\"\n [p-size]=\"componentsSize\"\n >\n </po-checkbox-group>\n </ng-template>\n\n <ng-template #monthlyTemplate>\n <po-number\n class=\"po-md-3\"\n name=\"dayOfMonth\"\n [(ngModel)]=\"value.dayOfMonth\"\n p-required\n [p-error-pattern]=\"'Dia inválido'\"\n [p-label]=\"dayLabel\"\n [p-max]=\"31\"\n [p-pattern]=\"dayPattern\"\n [p-size]=\"componentsSize\"\n >\n </po-number>\n\n @if (containsFrequency) {\n <po-number\n class=\"po-md-3\"\n name=\"rangeLimitDay\"\n [(ngModel)]=\"value.rangeLimitDay\"\n p-required\n [p-error-pattern]=\"'Dia inválido'\"\n [p-label]=\"literals.endDay\"\n [p-max]=\"31\"\n [p-pattern]=\"dayPattern\"\n [p-size]=\"componentsSize\"\n >\n </po-number>\n }\n\n <ng-container *ngTemplateOutlet=\"inputHourTemplate\"> </ng-container>\n </ng-template>\n\n <ng-template #inputHourTemplate>\n <po-input\n class=\"po-md-2\"\n name=\"hour\"\n [(ngModel)]=\"value.hour\"\n p-mask=\"99:99\"\n p-mask-format-model\n p-placeholder=\"HH:mm\"\n p-required\n [p-label]=\"hourLabel\"\n [p-pattern]=\"timePattern\"\n [p-size]=\"componentsSize\"\n >\n </po-input>\n\n @if (containsFrequency && value.frequency.type !== 'day') {\n <po-input\n class=\"po-md-2\"\n name=\"rangeLimitHour\"\n [(ngModel)]=\"value.rangeLimitHour\"\n p-mask=\"99:99\"\n p-mask-format-model\n p-placeholder=\"HH:mm\"\n p-required\n [p-label]=\"literals.endTime\"\n [p-pattern]=\"timePattern\"\n [p-size]=\"componentsSize\"\n >\n </po-input>\n }\n </ng-template>\n</form>\n","import { AfterViewInit, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { NgForm } from '@angular/forms';\n\nimport { PoDynamicFormField } from '@po-ui/ng-components';\n\n@Component({\n selector: 'po-page-job-scheduler-parameters',\n templateUrl: 'po-page-job-scheduler-parameters.component.html',\n standalone: false\n})\nexport class PoPageJobSchedulerParametersComponent implements AfterViewInit {\n @ViewChild('parametersForm') form: NgForm;\n\n @Input('p-components-size') componentsSize: string;\n\n @Input('p-literals') literals = <any>{};\n\n @Input('p-parameters') parameters: Array<PoDynamicFormField> = [];\n\n @Input('p-value') value;\n\n @Output('p-valueChange') valueChange: EventEmitter<any> = new EventEmitter<any>();\n\n ngAfterViewInit() {\n if (this.form) {\n setTimeout(() => {\n this.form.valueChanges.subscribe(value => {\n this.valueChange.emit(value);\n });\n });\n }\n }\n}\n","@if (parameters && parameters.length) {\n <form #parametersForm=\"ngForm\">\n <po-dynamic-form p-group-form [p-components-size]=\"componentsSize\" [p-fields]=\"parameters\" [p-value]=\"value\">\n </po-dynamic-form>\n </form>\n} @else {\n <div class=\"po-text-center\">\n <po-icon p-icon=\"ICON_INFO\"></po-icon>\n <span class=\"po-font-text-large\">\n {{ literals.parametersNotFound }}\n </span>\n </div>\n}\n","import { DatePipe } from '@angular/common';\nimport { Component, Input, OnInit, inject } from '@angular/core';\n\nimport { PoDynamicViewField, PoInfoOrientation } from '@po-ui/ng-components';\n\nimport { PoJobSchedulerInternal } from '../interfaces/po-job-scheduler-internal.interface';\n\n@Component({\n selector: 'po-page-job-scheduler-summary',\n templateUrl: 'po-page-job-scheduler-summary.component.html',\n standalone: false\n})\nexport class PoPageJobSchedulerSummaryComponent implements OnInit {\n private datePipe = inject(DatePipe);\n\n @Input('p-components-size') componentsSize: string;\n\n @Input('p-literals') literals = <any>{};\n\n @Input('p-parameters') parameters: Array<PoDynamicViewField> = [];\n\n @Input('p-value') value: PoJobSchedulerInternal = <any>{};\n\n @Input('p-no-parameters') noParameters: boolean = true;\n\n @Input('p-summary-template') jobSchedulerSummaryTemplate;\n\n executionValue = '';\n firstExecutionValue = '';\n infoOrientation = PoInfoOrientation.Horizontal;\n periodicityValue = '';\n frequencyValue = '';\n rangeLimitHour = '';\n rangeLimitDay = '';\n recurrentValue = '';\n\n ngOnInit() {\n const {\n periodicity,\n hour,\n dayOfMonth,\n daysOfWeek,\n recurrent,\n firstExecution,\n firstExecutionHour,\n frequency,\n rangeLimitHour,\n rangeLimitDay\n } = this.value;\n\n this.periodicityValue = this.getPeriodicityLabel(periodicity);\n if (frequency) {\n this.frequencyValue = this.getFrequencyValue(frequency, periodicity);\n }\n this.executionValue = this.getExecutionValue(\n periodicity,\n hour,\n daysOfWeek,\n dayOfMonth,\n rangeLimitHour,\n rangeLimitDay\n );\n this.firstExecutionValue = this.getFirstExecutionLabel(firstExecution, firstExecutionHour);\n this.recurrentValue = this.getRecurrentValue(recurrent);\n }\n\n private getFrequencyValue(frequency, periodicity) {\n return frequency['value'] && frequency['type'] && periodicity !== 'single'\n ? `${frequency['value']} - ${frequency['type']}`\n : '';\n }\n\n private getExecutionValue(\n periodicity: string,\n hour?: string,\n daysOfWeek?: Array<string>,\n dayOfMonth?: number,\n rangeLimitHour?: string,\n rangeLimitDay?: number\n ) {\n switch (periodicity) {\n case 'daily':\n return this.getHourLabel(hour, rangeLimitHour);\n case 'monthly':\n return this.getMonthlyLabelExecution(dayOfMonth, hour, rangeLimitHour, rangeLimitDay);\n case 'weekly':\n return this.getWeeklyLabelExecution(daysOfWeek, hour, rangeLimitHour);\n default:\n return this.literals.notReported;\n }\n }\n\n private getFirstExecutionLabel(firstExecution: Date, firstExecutionHour?: string): string {\n if (firstExecution) {\n const date = this.datePipe.transform(firstExecution, 'dd/MM/yyyy', '-0200');\n\n return `${date} ${this.getHourLabel(firstExecutionHour)}`;\n } else {\n return this.literals.notReported;\n }\n }\n\n private getHourLabel(hour: string, rangeLimitHour?) {\n return `${rangeLimitHour ? this.literals.from : this.literals.at} ${hour || '00:00'} ${\n rangeLimitHour ? this.literals.to + ' ' + rangeLimitHour : ''\n }`;\n }\n\n private getMonthlyLabelExecution(dayOfMonth: number, hour: string, rangeLimitHour?: string, rangeLimitDay?: number) {\n const hourLabel = this.getHourLabel(hour, rangeLimitHour);\n\n return `${rangeLimitDay ? this.literals.from : ''} ${dayOfMonth} ${rangeLimitDay ? this.literals.to : ''} ${\n rangeLimitDay ? rangeLimitDay : ''\n } ${hourLabel}`;\n }\n\n private getPeriodicityLabel(periodicity) {\n switch (periodicity) {\n case 'daily':\n return this.literals.daily;\n case 'monthly':\n return this.literals.monthly;\n case 'weekly':\n return this.literals.weekly;\n default:\n return this.literals.single;\n }\n }\n\n private getRecurrentValue(recurrent: boolean): string {\n return recurrent ? this.literals.yes : this.literals.no;\n }\n\n private getSorterWeekDays() {\n return {\n 'sunday': 0,\n 'monday': 1,\n 'tuesday': 2,\n 'wednesday': 3,\n 'thursday': 4,\n 'friday': 5,\n 'saturday': 6\n };\n }\n\n private getTranslateWeekDay(day: string): string {\n const days = {\n Sunday: this.literals.sunday,\n Monday: this.literals.monday,\n Tuesday: this.literals.tuesday,\n Wednesday: this.literals.wednesday,\n Thursday: this.literals.thursday,\n Friday: this.literals.friday,\n Saturday: this.literals.saturday\n };\n\n return days[day] || '';\n }\n\n private getWeekDaysLabel(days: Array<string> = []): string {\n const weekDaysSorted = this.sortWeekDays(days);\n\n return weekDaysSorted.map(day => this.getTranslateWeekDay(day)).join(', ');\n }\n\n private getWeeklyLabelExecution(daysOfWeek: Array<string>, hour: string, rangeLimitHour?: string) {\n if (daysOfWeek && Array.isArray(daysOfWeek)) {\n return `${this.getWeekDaysLabel(daysOfWeek)} ${this.getHourLabel(hour, rangeLimitHour)}`;\n } else {\n return this.literals.notReported;\n }\n }\n\n private sortWeekDays(days: Array<string> = []) {\n const sorterWeekDays = this.getSorterWeekDays();\n\n return days.sort((a: string, b: string) => {\n const currDay = a.toLowerCase();\n const nextDay = b.toLowerCase();\n\n return sorterWeekDays[currDay] > sorterWeekDays[nextDay] ? 1 : -1;\n });\n }\n}\n","<div class=\"po-md-12\">\n @if (!noParameters) {\n <po-info [p-label]=\"literals.process\" [p-orientation]=\"infoOrientation\" [p-value]=\"value.processID\"> </po-info>\n }\n\n <po-info [p-label]=\"literals.periodicity\" [p-orientation]=\"infoOrientation\" [p-value]=\"periodicityValue\"> </po-info>\n\n @if (frequencyValue !== '') {\n <po-info [p-label]=\"literals.frequency\" [p-orientation]=\"infoOrientation\" [p-value]=\"frequencyValue\"> </po-info>\n }\n\n @if (value.periodicity !== 'single') {\n <po-info [p-label]=\"literals.execution\" [p-orientation]=\"infoOrientation\" [p-value]=\"executionValue\"> </po-info>\n }\n\n <po-info [p-label]=\"literals.recurrent\" [p-orientation]=\"infoOrientation\" [p-value]=\"recurrentValue\"> </po-info>\n\n <po-info [p-label]=\"literals.firstExecution\" [p-orientation]=\"infoOrientation\" [p-value]=\"firstExecutionValue\">\n </po-info>\n</div>\n@if (parameters && parameters.length && !jobSchedulerSummaryTemplate) {\n <po-widget class=\"po-pt-1 po-pb-1 po-md-12\" [p-title]=\"literals.parameters\">\n <po-dynamic-view [p-fields]=\"parameters\" [p-value]=\"value.executionParameter\"> </po-dynamic-view>\n </po-widget>\n}\n@if (jobSchedulerSummaryTemplate) {\n <div class=\"po-pt-1 po-pb-1 po-md-12\">\n <ng-template [ngTemplateOutlet]=\"jobSchedulerSummaryTemplate?.templateRef\"></ng-template>\n </div>\n}\n","import {\n AfterContentInit,\n Component,\n ContentChild,\n ContentChildren,\n OnInit,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { Observable } from 'rxjs';\n\nimport {\n PoDialogService,\n PoDynamicFormField,\n PoLanguageService,\n PoNotificationService,\n PoPageAction,\n PoStepperItem,\n PoStepperStatus,\n poLocaleDefault\n} from '@po-ui/ng-components';\n\nimport { PoJobSchedulerInternal } from './interfaces/po-job-scheduler-internal.interface';\nimport { PoPageJobSchedulerBaseComponent } from './po-page-job-scheduler-base.component';\nimport { PoPageJobSchedulerInternal } from './po-page-job-scheduler-internal';\nimport { poPageJobSchedulerLiteralsDefault } from './po-page-job-scheduler-literals';\nimport { PoPageJobSchedulerLookupService } from './po-page-job-scheduler-lookup.service';\nimport { PoJobSchedulerParametersTemplateDirective } from './po-page-job-scheduler-parameters';\nimport { PoJobSchedulerSummaryTemplateDirective } from './po-page-job-scheduler-summary';\nimport { PoPageJobSchedulerService } from './po-page-job-scheduler.service';\n\n/**\n * @docsExtends PoPageJobSchedulerBaseComponent\n *\n * @example\n *\n * <example name=\"po-page-job-scheduler-background-process\" title=\"PO Page Job Scheduler - Background Process\">\n * <file name=\"sample-po-page-job-scheduler-background-process/sample-po-page-job-scheduler-background-process.component.html\"> </file>\n * <file name=\"sample-po-page-job-scheduler-background-process/sample-po-page-job-scheduler-background-process.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-job-scheduler-directives\" title=\"PO Page Job Scheduler - Directives\">\n * <file name=\"sample-po-page-job-scheduler-directives/sample-po-page-job-scheduler-directives.component.html\"> </file>\n * <file name=\"sample-po-page-job-scheduler-directives/sample-po-page-job-scheduler-directives.component.ts\"> </file>\n * </example>\n *\n */\n@Component({\n selector: 'po-page-job-scheduler',\n templateUrl: './po-page-job-scheduler.component.html',\n encapsulation: ViewEncapsulation.None,\n styles: [\n `\n po-container .po-container {\n overflow-y: unset;\n }\n `\n ],\n standalone: false\n})\nexport class PoPageJobSchedulerComponent extends PoPageJobSchedulerBaseComponent implements OnInit, AfterContentInit {\n poPageDynamicLookupService = inject(PoPageJobSchedulerLookupService);\n private activatedRoute = inject(ActivatedRoute);\n private poDialogService = inject(PoDialogService);\n private poNotification = inject(PoNotificationService);\n\n @ViewChild('schedulerExecution', { static: true }) schedulerExecution: { form: NgForm };\n @ViewChild('schedulerParameters') schedulerParameters: { form: NgForm };\n @ContentChildren(PoJobSchedulerParametersTemplateDirective)\n parametersTemplate: QueryList<PoJobSchedulerParametersTemplateDirective>;\n\n @ContentChild(PoJobSchedulerSummaryTemplateDirective)\n jobSchedulerSummaryTemplate: PoJobSchedulerSummaryTemplateDirective;\n\n isEdit = false;\n literals = {\n ...poPageJobSchedulerLiteralsDefault[poLocaleDefault]\n };\n\n publicValues: PoJobSchedulerInternal;\n saveOperation: Observable<any>;\n step: number = 1;\n parametersEmpty: boolean = true;\n\n stepParametersInitialized = false;\n\n protected steps: Array<PoStepperItem> = [];\n\n private backPageAction: PoPageAction = {\n label: this.literals.back,\n action: this.nextStepOperation.bind(this, 'back'),\n disabled: this.isDisabledBack.bind(this)\n };\n\n private concludePageAction: PoPageAction = {\n label: this.literals.conclude,\n action: this.confirmJobScheduler.bind(this)\n };\n\n private nextPageAction: PoPageAction = {\n label: this.literals.next,\n action: this.nextStepOperation.bind(this, 'next'),\n disabled: this.isDisabledAdvance.bind(this)\n };\n\n private concludePageActions: Array<PoPageAction> = [this.concludePageAction, this.backPageAction];\n\n private nextPageActions: Array<PoPageAction> = [this.nextPageAction, this.backPageAction];\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n jobSchedulerActions: Array<PoPageAction> = [...this.nextPageActions];\n\n protected stepExecution = 1;\n protected stepParameters = 2;\n protected stepSummary = 3;\n protected _stepExecutionLast: boolean;\n\n constructor() {\n const poPageJobSchedulerService = inject(PoPageJobSchedulerService);\n const languageService = inject(PoLanguageService);\n\n super(poPageJobSchedulerService);\n this.poPageJobSchedulerService = poPageJobSchedulerService;\n\n const language = languageService.getShortLanguage();\n\n this.literals = {\n ...this.literals,\n ...poPageJobSchedulerLiteralsDefault[language]\n };\n\n this.backPageAction.label = this.literals.back;\n this.concludePageAction.label = this.literals.conclude;\n this.nextPageAction.label = this.literals.next;\n }\n\n get stepperOrientation(): 'horizontal' | 'vertical' {\n return (\n this.stepperDefaultOrientation || (window.innerWidth > 481 && window.innerWidth < 960 ? 'horizontal' : 'vertical')\n );\n }\n\n ngOnInit() {\n const paramId = this.activatedRoute.snapshot.params['id'];\n\n this.isEdit = !!paramId;\n\n this.poPageJobSchedulerService.configServiceApi({ endpoint: this.serviceApi });\n\n if (this.parameters.length) {\n this.parametersEmpty = false;\n }\n\n this.loadData(paramId);\n }\n\n ngAfterContentInit(): void {\n this.checkStepExecutionLast();\n this.getSteps();\n }\n\n changePageActionsBySteps(currentStep: number, nextStep: number) {\n const stepsLength = this.steps.length;\n\n if (nextStep === stepsLength) {\n this.jobSchedulerActions = [...this.concludePageActions];\n } else if (currentStep === stepsLength && nextStep < currentStep) {\n this.jobSchedulerActions = [...this.nextPageActions];\n }\n }\n\n nextStep(stepNumber: number) {\n const operation: 'back' | 'next' = stepNumber > this.step ? 'next' : 'back';\n\n // Previne o usuário pular etapas\n const jumpStep = (stepNumber - this.step) * (operation === 'back' ? -1 : 1);\n if (jumpStep > 1) {\n return;\n }\n\n if (!this.validateStepExecution()) {\n return;\n }\n\n if (operation === 'next' && !this.validateStepSchedulerParameters()) {\n return;\n }\n\n if (operation === 'next' && !this.validateStepTemplateParameters()) {\n return;\n }\n\n if (this.step === this.stepExecution) {\n this.setModelRecurrent();\n }\n\n // Busca os parâmetros do template\n this.setPropertiesFromTemplate();\n\n if (stepNumber === this.steps.length) {\n const model = JSON.parse(JSON.stringify(this.model));\n this.publicValues = this.hidesSecretValues(model);\n }\n\n this.steps[this.step - 1].status = operation === 'next' ? PoStepperStatus.Done : PoStepperStatus.Default;\n\n this.changePageActionsBySteps(this.step, stepNumber);\n this.step = stepNumber;\n\n // Caso já tenha iniciado a etapa de parametrização,\n // guarda essa informação para não precisar renderizar novamente\n this.stepParametersInitialized = this.stepParametersInitialized || stepNumber === this.stepParameters;\n }\n\n onChangeProcess(process: { processId: string; existAPI: boolean }) {\n if (process.existAPI && process.processId && this.parametersEmpty && !this.parametersTemplate.length) {\n this.getParametersByProcess(process.processId);\n if (!this.isEdit) {\n this.model.executionParameter = {};\n }\n }\n }\n\n private checkStepExecutionLast() {\n if (!this.parametersTemplate.length) {\n this._stepExecutionLast = false;\n return;\n }\n\n this._stepExecutionLast = this.stepExecutionLast;\n }\n\n private confirmJobScheduler() {\n const paramId = this.activatedRoute.snapshot.params['id'];\n\n const confirmMessage = paramId ? this.literals.confirmUpdateMessage : this.literals.confirmSaveMessage;\n\n this.poDialogService.confirm({\n title: this.literals.confirmation,\n message: confirmMessage,\n confirm: () => {\n const beforeSendModel = this.beforeSendAction ? this.beforeSendAction(this.model) : undefined;\n\n const model = { ...(beforeSendModel || this.model) };\n\n this.save(model, paramId);\n }\n });\n }\n\n private emitSuccessMessage(msgSuccess: any, saveOperation: Observable<any>) {\n saveOperation.subscribe({\n next: () => {\n this.success.emit();\n this.poNotification.success(msgSuccess);\n this.resetJobSchedulerForm();\n },\n error: e => this.error.emit(e)\n });\n }\n\n private getParametersByProcess(process: any) {\n this.poPageJobSchedulerService.getParametersByProcess(process).subscribe(parameters => {\n this.parameters = parameters;\n });\n }\n\n private hidesSecretValues(model: PoJobSchedulerInternal): PoJobSchedulerInternal {\n const hiddenSecretValue = '**********';\n this.parameters.forEach(parameter => {\n if (this.isSecretParameter(model, parameter)) {\n model.executionParameter[parameter.property] = hiddenSecretValue;\n }\n });\n return model;\n }\n\n private getSteps() {\n const templateArray: Array<PoStepperItem> = [];\n\n this.parametersTemplate.toArray().forEach((value, index, array) => {\n templateArray.push({\n label: value.title || `${this.literals.parameterization} ${array.length > 1 ? index + 1 : ''}`\n });\n });\n\n let _steps = [];\n\n if (!this._stepExecutionLast) {\n _steps.push({ label: this.literals.scheduling });\n }\n\n if (!templateArray.length) {\n _steps.push({ label: this.literals.parameterization });\n } else {\n _steps = [..._steps, ...templateArray];\n }\n\n if (this._stepExecutionLast) {\n _steps.push({ label: this.literals.scheduling });\n }\n\n _steps.push({ label: this.literals.conclude });\n\n this.steps = _steps;\n\n this.stepSummary = this.steps.length;\n if (this._stepExecutionLast) {\n this.stepExecution = this.stepSummary - 1;\n }\n }\n\n private getTemplateCurrent() {\n const indexTemplate = this.step - (this.stepExecutionLast ? 1 : 2);\n return this.parametersTemplate.toArray()[indexTemplate];\n }\n\n private templateHasDisable(): boolean {\n const template = this.getTemplateCurrent();\n\n return !template?.disabledAdvance;\n }\n\n private isDisabledAdvance(): boolean {\n if (this.step === this.stepExecution) {\n return this.schedulerExecution?.form?.invalid;\n }\n\n if (this.schedulerParameters) {\n return this.schedulerParameters?.form?.invalid;\n }\n\n const templateCurrent = this.getTemplateCurrent();\n\n if (templateCurrent) {\n return templateCurrent.disabledAdvance;\n }\n\n return false;\n }\n\n private isDisabledBack(): boolean {\n return this.step === 1;\n }\n\n private isSecretParameter(model: PoJobSchedulerInternal, parameter: PoDynamicFormField): boolean {\n return (\n model.executionParameter &&\n parameter.hasOwnProperty('secret') &&\n parameter['secret'] === true &&\n model.executionParameter.hasOwnProperty(parameter.property)\n );\n }\n\n private nextStepOperation(operation?: 'back' | 'next') {\n const stepNumber = operation === 'back' ? this.step - 1 : this.step + 1;\n\n this.nextStep(stepNumber);\n }\n\n private resetJobSchedulerForm() {\n this.schedulerExecution.form.reset();\n\n // radiogroup não estava atribuindo novo valor, fica vermelho sem o timetout.\n setTimeout(() => {\n this.model = new PoPageJobSchedulerInternal();\n\n this.step = 1;\n this.steps.forEach(step => {\n step.status = PoStepperStatus.Default;\n });\n\n this.jobSchedulerActions = [...this.nextPageActions];\n });\n }\n\n private save(model: PoJobSchedulerInternal, paramId) {\n const saveOperation = paramId\n ? this.poPageJobSchedulerService.updateResource(paramId, model)\n : this.poPageJobSchedulerService.createResource(model);\n\n const msgSuccess = paramId\n ? this.literals.saveNotificationSuccessUpdate\n : this.literals.saveNotificationSuccessSave;\n\n this.emitSuccessMessage(msgSuccess, saveOperation);\n }\n\n private setModelRecurrent() {\n this.model.recurrent = this.model.periodicity === 'single' ? false : this.model.recurrent;\n }\n\n private setPropertiesFromTemplate() {\n const templateCurrent = this.getTemplateCurrent();\n\n if (!templateCurrent) {\n return;\n }\n\n this.model = {\n ...this.model,\n executionParameter: { ...this.model.executionParameter, ...templateCurrent.executionParameter }\n };\n }\n\n private validateStepExecution(): boolean {\n const stepCurrent = this.step;\n\n if (stepCurrent == this.stepExecution && this.schedulerExecution.form.invalid) {\n this.markAsDirtyInvalidControls(this.schedulerExecution.form.controls);\n return false;\n }\n\n return true;\n }\n\n private validateStepSchedulerParameters(): boolean {\n if (this.step === this.stepExecution || this.step === this.stepSummary) {\n return true;\n }\n\n if (this.schedulerParameters && this.schedulerParameters.form && this.schedulerParameters.form.invalid) {\n this.markAsDirtyInvalidControls(this.schedulerParameters.form.controls);\n return false;\n }\n\n return true;\n }\n\n private validateStepTemplateParameters(): boolean {\n if (this.step === this.stepExecution || this.step === this.stepSummary) {\n return true;\n }\n\n if (!this.parametersTemplate.length) {\n return true;\n }\n\n return this.templateHasDisable();\n }\n}\n","<po-page-default\n [p-actions]=\"jobSchedulerActions\"\n [p-breadcrumb]=\"breadcrumb\"\n [p-components-size]=\"componentsSize\"\n [p-title]=\"title\"\n>\n <div class=\"po-row\">\n <po-stepper\n [ngClass]=\"stepperDefaultOrientation === 'horizontal' ? 'po-lg-12 po-xl-12' : 'po-lg-3 po-xl-2'\"\n p-sequential=\"true\"\n [p-orientation]=\"stepperOrientation\"\n [p-step]=\"step\"\n [p-steps]=\"steps\"\n (p-change-step)=\"nextStep($event)\"\n >\n </po-stepper>\n\n <po-container [ngClass]=\"stepperDefaultOrientation === 'horizontal' ? 'po-lg-12 po-xl-12' : 'po-lg-8 po-xl-6'\">\n <form #formScheduler=\"ngForm\">\n <div class=\"po-row\">\n <po-page-job-scheduler-execution\n [p-no-parameters]=\"parametersEmpty\"\n [p-no-custom-params-component]=\"!parametersTemplate.length\"\n [hidden]=\"step !== stepExecution\"\n #schedulerExecution\n class=\"po-md-12\"\n [p-components-size]=\"componentsSize\"\n [p-is-edit]=\"isEdit\"\n [p-literals]=\"literals\"\n [p-value]=\"model\"\n (p-change-process)=\"onChangeProcess($event)\"\n >\n </po-page-job-scheduler-execution>\n\n @if (stepParametersInitialized && !parametersTemplate.length) {\n <po-page-job-scheduler-parameters\n [hidden]=\"step !== stepParameters\"\n #schedulerParameters\n class=\"po-md-12\"\n [p-components-size]=\"componentsSize\"\n [p-literals]=\"literals\"\n [p-parameters]=\"parameters || []\"\n [(p-value)]=\"model.executionParameter\"\n >\n </po-page-job-scheduler-parameters>\n }\n\n @if (step === stepSummary) {\n <po-page-job-scheduler-summary\n [p-no-parameters]=\"!parameters.length\"\n [p-summary-template]=\"jobSchedulerSummaryTemplate\"\n class=\"po-md-12\"\n [p-components-size]=\"componentsSize\"\n [p-literals]=\"literals\"\n [p-parameters]=\"parameters\"\n [p-value]=\"publicValues\"\n >\n </po-page-job-scheduler-summary>\n }\n </div>\n </form>\n\n @for (template of parametersTemplate; track template; let index = $index) {\n <div [hidden]=\"step !== index + (_stepExecutionLast ? 1 : 2)\">\n <ng-template [ngTemplateOutlet]=\"template?.templateRef\"></ng-template>\n </div>\n }\n </po-container>\n </div>\n</po-page-default>\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\n\nimport {\n PoButtonModule,\n PoContainerModule,\n PoDialogModule,\n PoDividerModule,\n PoDynamicModule,\n PoFieldModule,\n PoIconModule,\n PoInfoModule,\n PoPageModule,\n PoStepperModule,\n PoWidgetModule\n} from '@po-ui/ng-components';\n\nimport { PoPageJobSchedulerComponent } from './po-page-job-scheduler.component';\nimport { PoPageJobSchedulerExecutionComponent } from './po-page-job-scheduler-execution/po-page-job-scheduler-execution.component';\nimport { PoPageJobSchedulerLookupService } from './po-page-job-scheduler-lookup.service';\nimport { PoPageJobSchedulerParametersComponent } from './po-page-job-scheduler-parameters/po-page-job-scheduler-parameters.component';\nimport { PoPageJobSchedulerService } from './po-page-job-scheduler.service';\nimport { PoPageJobSchedulerSummaryComponent } from './po-page-job-scheduler-summary/po-page-job-scheduler-summary.component';\nimport { PoJobSchedulerParametersTemplateDirective } from './po-page-job-scheduler-parameters';\nimport { PoJobSchedulerSummaryTemplateDirective } from './po-page-job-scheduler-summary/po-job-scheduler-summary-template';\n\n@NgModule({\n declarations: [\n PoPageJobSchedulerComponent,\n PoPageJobSchedulerExecutionComponent,\n PoPageJobSchedulerParametersComponent,\n PoPageJobSchedulerSummaryComponent,\n PoJobSchedulerParametersTemplateDirective,\n PoJobSchedulerSummaryTemplateDirective\n ],\n exports: [\n PoPageJobSchedulerComponent,\n PoJobSchedulerParametersTemplateDirective,\n PoJobSchedulerSummaryTemplateDirective\n ],\n imports: [\n CommonModule,\n FormsModule,\n PoButtonModule,\n PoContainerModule,\n PoDialogModule,\n PoDividerModule,\n PoDynamicModule,\n PoFieldModule,\n PoIconModule,\n PoInfoModule,\n PoPageModule,\n PoStepperModule,\n PoWidgetModule\n ],\n providers: [PoPageJobSchedulerService, PoPageJobSchedulerLookupService]\n})\nexport class PoPageJobSchedulerModule {}\n","/**\n * @usedBy PoPageLoginComponent\n *\n * @description\n *\n * *Enum* para definição do tipo de autenticação.\n */\nexport enum PoPageLoginAuthenticationType {\n /** Autenticação Basic */\n Basic = 'Basic',\n\n /** Autenticação Bearer */\n Bearer = 'Bearer'\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { PoPageLogin } from './interfaces/po-page-login.interface';\nimport { PoPageLoginAuthenticationType } from './enums/po-page-login-authentication-type.enum';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PoPageLoginService {\n constructor(private http: HttpClient) {}\n\n onLogin(url: string, type: PoPageLoginAuthenticationType, loginForm: PoPageLogin): Observable<object> {\n if (type === PoPageLoginAuthenticationType.Bearer) {\n loginForm.password = btoa(loginForm.password);\n return this.http.post(url, loginForm);\n } else {\n const user = `(${loginForm.login}:${loginForm.password})`;\n const headers = new HttpHeaders({\n 'Authorization': `${type} ` + btoa(user)\n });\n delete loginForm.login;\n delete loginForm.password;\n return this.http.post(url, loginForm, { headers });\n }\n }\n}\n","import { Directive, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\n\nimport {\n convertToBoolean,\n convertToInt,\n getDefaultSizeFn,\n getShortBrowserLanguage,\n isExternalLink,\n isTypeof,\n validateSizeFn\n} from './../../utils/util';\n\nimport { PoLanguage, poLanguageDefault, PoLanguageService, poLocaleDefault } from '@po-ui/ng-components';\n\nimport { PoPageLoginAuthenticationType } from './enums/po-page-login-authentication-type.enum';\nimport { PoPageLoginCustomField } from './interfaces/po-page-login-custom-field.interface';\nimport { PoPageLoginLiterals } from './interfaces/po-page-login-literals.interface';\nimport { PoPageLoginRecovery } from './interfaces/po-page-login-recovery.interface';\nimport { PoPageLogin } from './interfaces/po-page-login.interface';\nimport { PoPageLoginService } from './po-page-login.service';\n\nconst poPageLoginContentMaxLength = 40;\n\nexport const poPageLoginLiteralsDefault = {\n en: <PoPageLoginLiterals>{\n title: 'Welcome',\n loginErrorPattern: 'Invalid Login',\n loginHint: `Your login user was given to you at your first day.\n If you don't have this information contact support`,\n loginPlaceholder: 'Insert your e-mail',\n passwordErrorPattern: 'Invalid Password',\n passwordPlaceholder: 'Insert your password',\n customFieldErrorPattern: 'Invalid value',\n customFieldPlaceholder: 'Please enter a value',\n rememberUser: 'Automatic login',\n rememberUserHint: 'You can disable this option in system configuration',\n submitLabel: 'Enter',\n submittedLabel: 'Loading...',\n forgotPassword: 'Forgot your Password?',\n highlightInfo: '',\n registerUrl: 'New register',\n titlePopover: 'Oops!',\n forgotYourPassword: 'Forgot your password?',\n ifYouTryHarder: 'If you try ',\n attempts: '{0} more time(s) ',\n yourUserWillBeBlocked:\n 'without success your user will be blocked and you will be left 24 hours without being able to access :(',\n createANewPasswordNow: 'Better create a new password now! You will be able to log into the system right away.',\n iForgotMyPassword: 'I forgot my password',\n welcome: 'Welcome',\n support: 'Support'\n },\n es: <PoPageLoginLiterals>{\n title: 'Bienvenido',\n loginErrorPattern: 'Login inválido',\n loginHint: `Su usuario ha sido entregado para usted en su primer día.\n Si no tiene esta información, póngase en contacto con el soporte técnico`,\n loginPlaceholder: 'Inserte su e-mail',\n passwordErrorPattern: 'Contraseña inválida',\n passwordPlaceholder: 'Inserte su contraseña',\n customFieldErrorPattern: 'Valor no válido.',\n customFieldPlaceholder: 'Por favor introduzca un valor',\n rememberUser: 'Inicio de sesión automáticamente',\n rememberUserHint: 'Puede deshabilitar esta opción en el menú del sistema.',\n submitLabel: 'Entrar',\n submittedLabel: 'Cargando...',\n forgotPassword: 'Olvidaste tu contraseña?',\n highlightInfo: '',\n registerUrl: 'Nuevo registro',\n titlePopover: 'Opa!',\n forgotYourPassword: 'Olvidaste tu contraseña?',\n ifYouTryHarder: 'Si intenta más ',\n attempts: '{0} vez/veces ',\n yourUserWillBeBlocked: 'sin éxito su usuario sera bloqueado y usted vás permanecer 24 horas sin poder acceder a :(',\n createANewPasswordNow:\n '¡Mejor crear una nueva contraseña ahora! Usted podrá entrar en el sistema inmediatamente después.',\n iForgotMyPassword: 'Olvide mi contraseña',\n welcome: 'Bienvenido',\n support: 'Soporte'\n },\n pt: <PoPageLoginLiterals>{\n title: 'Bem-vindo',\n loginErrorPattern: 'Login inválido',\n loginHint: `Seu usuário foi entregue a você no seu primeiro dia.\n Caso não tenha mais essa informação contacte o suporte`,\n loginPlaceholder: 'Insira seu e-mail',\n passwordErrorPattern: 'Senha inválida',\n passwordPlaceholder: 'Insira sua senha',\n customFieldErrorPattern: 'Valor inválido.',\n customFieldPlaceholder: 'Por favor insira um valor',\n rememberUser: 'Logar automaticamente',\n rememberUserHint: 'Você pode desabilitar essa opção no menu do sistema',\n submitLabel: 'Entrar',\n submittedLabel: 'Carregando...',\n forgotPassword: 'Esqueceu sua senha?',\n highlightInfo: '',\n registerUrl: 'Novo registro',\n titlePopover: 'Opa!',\n forgotYourPassword: 'Esqueceu sua senha?',\n ifYouTryHarder: 'Se tentar mais ',\n attempts: '{0} vez(es) ',\n yourUserWillBeBlocked: 'sem sucesso seu usuário será bloqueado e você fica 24 horas sem poder acessar :(',\n createANewPasswordNow: 'Melhor criar uma senha nova agora! Você vai poder entrar no sistema logo em seguida.',\n iForgotMyPassword: 'Esqueci minha senha',\n welcome: 'Boas-vindas',\n support: 'Suporte'\n },\n ru: <PoPageLoginLiterals>{\n title: 'Добро пожаловать!',\n loginErrorPattern: 'Неверный логин',\n loginHint: `Ваш логин был предоставлен вам в первый день.\n Если у вас нет этой информации, обратитесь в службу поддержки`,\n loginPlaceholder: 'Вставьте свой адрес электронной почты',\n passwordErrorPattern: 'Неверный пароль',\n passwordPlaceholder: 'Введите свой пароль',\n customFieldErrorPattern: 'Неверное значение.',\n customFieldPlaceholder: 'Пожалуйста, введите значение',\n rememberUser: 'Автоматический вход',\n rememberUserHint: 'Вы можете отключить эту опцию в конфигурации системы',\n submitLabel: 'Войти',\n submittedLabel: '3агрузка...',\n forgotPassword: 'Забыли пароль?',\n highlightInfo: '',\n registerUrl: 'Новый регистр',\n titlePopover: 'Ой!',\n forgotYourPassword: 'Забыли пароль?',\n ifYouTryHarder: 'Если вы безуспешно попытаетесь войти еще ',\n attempts: '{0} раз(а) ',\n yourUserWillBeBlocked: 'Ваш пользователь будет заблокирован, и Вы останетесь на 24 часа без возможности доступа :(',\n createANewPasswordNow: 'Лучше создайте новый пароль сейчас! Вы сможете сразу войти в систему.',\n iForgotMyPassword: 'Я забыл свой пароль',\n welcome: 'добро пожаловать',\n support: 'Поддержка'\n }\n};\n\nexport const poPageLoginLiteralIn = {\n en: 'in',\n es: 'en',\n pt: 'em',\n ru: 'в'\n};\n\n/**\n * @description\n *\n * O componente `po-page-login` é utilizado como template para tela de login.\n * Com ele é possível definirmos valores para usuário, senha e definir ações para recuperação de senha e gravação de dados do usuário.\n * Também é possível inserir uma imagem em conjunto com um texto de destaque.\n *\n *\n * A propriedade `p-authentication-url` automatiza a rotina do componente e simplifica o processo para autenticação do usuário, bastando\n * definir uma url para requisição da autenticação. A flexibilidade e praticidade podem chegar a um nível em que o desenvolvimento\n * da aplicação no *client side* é desprovida de qualquer código-fonte relacionado à rotina de login de usuário.\n * Seu detalhamento para uso pode ser visto logo abaixo em *propriedades*.\n * Caso julgue necessário, pode-se também definir manualmente a rotina do componente.\n *\n *\n * Para que as imagens sejam exibidas corretamente, é necessário incluir o caminho delas ao projeto. Para isso, edite\n * o *assets* no arquivo **angular.json** da aplicação na seguinte ordem:\n * ```\n * \"assets\": [\n * \"src/assets\",\n * \"src/favicon.ico\",\n * {\n * \"glob\": \"**\\/*\",\n * \"input\": \"node_modules/@po-ui/style/images\",\n * \"output\": \"assets/images\"\n * }\n * ]\n * ```\n */\n@Directive()\nexport abstract class PoPageLoginBaseComponent implements OnDestroy {\n /**\n * O `p-background` permite inserir uma imagem de destaque ao lado direito do formulário de login, caso a propriedade\n * não seja preenchida o formulário será centralizado no espaço disponível.\n *\n * A fonte da imagem pode ser de um caminho local ou uma url de um servidor externo.\n *\n * Além da imagem, é possível adicionar um texto informativo por cima da imagem da imagem de destaque, para isso informe\n * um valor para a literal `highlightInfo`.\n *\n * > Veja mais sobre as literais na propriedade `p-literals`.\n *\n * Exemplos de valores válidos:\n * - **local**: `./assets/images/login-background.png`\n * - **url externa**: `https://po-ui.io/assets/images/login-background.png`\n *\n * > Essa propriedade é ignorada para aplicações mobile.\n */\n @Input('p-background') background?: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Caminho para a logomarca localizada na parte superior.\n *\n * > Caso seja indefinida o espaço se mantém preservado porém vazio.\n */\n @Input('p-logo') logo?: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Expressão regular para validar o campo de login, caso a expressão não seja atentida, a literal `loginErrorPattern`\n * será exibida.\n *\n * Exemplos de valores válidos:\n * - email: `[expressao-regular-email]`\n * - cpf: `[expressao-regular-cpf]`\n *\n * > Veja a propriedade `p-literals` para customizar a literal `loginErrorPattern`.\n */\n @Input('p-login-pattern') loginPattern?: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Expressão regular para validar o campo de password, caso a expressão não seja atentida, a literal `passwordErrorPattern`\n * será exibida.\n *\n * Exemplos de valores válidos:\n * - Apenas números: `\\d?`\n * - Letras mínusculas: `\\z?`\n *\n * > Veja a propriedade `p-literals` para customizar a literal `passwordErrorPattern`.\n */\n @Input('p-password-pattern') passwordPattern?: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Caminho para a logomarca localizada no rodapé.\n */\n @Input('p-secondary-logo') secondaryLogo?: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Evento disparado quando o usuário alterar o input do campo login.\n *\n * Esse evento receberá como parâmetro uma variável do tipo `string` com o texto informado no campo.\n *\n * > Esta propriedade será ignorada se for definido valor para a propriedade `p-authentication-url`.\n */\n @Output('p-login-change') loginChange: EventEmitter<string> = new EventEmitter<string>();\n\n /**\n * Evento disparado ao submeter o formulário de login (apertando `Enter` dentro dos campos ou pressionando o botão de confirmação).\n *\n * Esse evento receberá como parâmetro um objeto do tipo `PoPageLogin` com os dados informados no formulário.\n *\n * > Esta propriedade será ignorada se for definido valor para a propriedade `p-url-recovery`.\n *\n * > Para mais detalhes consulte a documentação sobre a interface `PoPageLogin` mais abaixo.\n */\n @Output('p-login-submit') loginSubmit = new EventEmitter<PoPageLogin>();\n\n /**\n * @optional\n *\n * @description\n *\n * Evento disparado quando o usuário alterar o input do campo password.\n *\n * Esse evento receberá como parâmetro uma variável do tipo `string` com o texto informado no campo.\n *\n * > Esta propriedade será ignorada se for definido valor para a propriedade `p-authentication-url`.\n */\n @Output('p-password-change') passwordChange: EventEmitter<string> = new EventEmitter<string>();\n\n /**\n * @optional\n *\n * @description\n *\n * Evento disparado quando o usuário alterar o idioma da página.\n *\n * Esse evento receberá como parâmetro um objeto do tipo `PoLanguage` com a linguagem selecionada.\n *\n */\n @Output('p-language-change') languageChange: EventEmitter<PoLanguage> = new EventEmitter<PoLanguage>();\n\n /**\n * @optional\n *\n * @description\n *\n * Define a propriedade nativa `autocomplete` do campo como `off`.\n *\n * @default `true`\n */\n @Input('p-no-autocomplete-login') noAutocompleteLogin: boolean = true;\n\n /**\n * @optional\n *\n * @description\n *\n * Define a propriedade nativa `autocomplete` do campo como `off`.\n *\n * > No componente `po-password` será definido como `new-password`.\n *\n * @default `true`\n */\n @Input('p-no-autocomplete-password') noAutocompletePassword: boolean = true;\n\n /**\n * @optional\n *\n * @description\n *\n * Indica se o status do `model` do switch de lembrar o usuário será escondido visualmente.\n *\n * > Por padrão será atribuído `false`.\n * @default `false`\n */\n @Input({ alias: 'p-hide-label-status', transform: convertToBoolean }) hideLabelStatus: boolean = false;\n\n /**\n * @optional\n *\n * @description\n *\n * Permite esconder a função de espiar a senha digitada.\n *\n * @default `false`\n */\n @Input('p-hide-password-peek') hidePasswordPeek: boolean;\n\n allLoginErrors: Array<string> = [];\n allPasswordErrors: Array<string> = [];\n customFieldObject: PoPageLoginCustomField;\n customFieldType: string;\n loginSubscription: Subscription;\n password: string;\n rememberUser: boolean = false;\n selectedLanguage: string;\n showExceededAttemptsWarning = false;\n\n private _authenticationType: PoPageLoginAuthenticationType = PoPageLoginAuthenticationType.Basic;\n private _authenticationUrl: string;\n private _blockedUrl: string;\n private _componentsSize?: string = undefined;\n private _contactEmail: string;\n private _customField: string | PoPageLoginCustomField;\n private _environment?: string;\n private _exceededAttemptsWarning?: number;\n private _hideRememberUser: boolean = false;\n private _literals: PoPageLoginLiterals;\n private _loading?: boolean = false;\n private _login: string;\n private _loginErrors: Array<string> = [];\n private _passwordErrors: Array<string> = [];\n private _productName: string;\n private _recovery: string | PoPageLoginRecovery | Function;\n private _registerUrl: string;\n private _support: string | Function;\n private _languagesList: Array<PoLanguage>;\n\n /**\n * @optional\n *\n * @description\n *\n * Define o tamanho dos componentes de formulário no template:\n * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n * - `medium`: aplica a medida medium de cada componente.\n *\n * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n *\n * @default `medium`\n */\n @Input('p-components-size') set componentsSize(value: string) {\n this._componentsSize = validateSizeFn(value);\n }\n\n get componentsSize(): string {\n return this._componentsSize ?? getDefaultSizeFn();\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Ao informar um valor do tipo `string`, o mesmo será aplicado como a chave do campo customizado e utilizará\n * os valores padrões contidos na propriedade `literals` como `customFieldErrorPattern` e `customFieldPlaceholder`.\n *\n * Existe a possibilidade de informar um objeto que segue a definição da interface `PoPageLoginCustomField`, onde\n * através dos parâmetros enviados pode gerar um `po-input`, `po-combo` especificamente para serviços\n * ou `po-select` para valores fixos.\n *\n * Abaixo seguem os exemplos de cada tipo de campo.\n *\n * `po-input`:\n *\n * ```\n * {\n * property: 'domain',\n * value: 'jv01',\n * placeholder: 'Enter your domain',\n * pattern: '[a-z]',\n * errorPattern: 'Invalid value'\n * }\n * ```\n *\n * `po-combo`:\n *\n * ```\n * {\n * property: 'domain',\n * value: 'jv01',\n * placeholder: 'Enter your domain',\n * url: 'https://po-ui.io/sample/api/comboOption/domains',\n * fieldValue: 'nickname'\n * }\n * ```\n *\n * `po-select`:\n *\n * ```\n * {\n * property: 'domain',\n * value: 'jv01',\n * placeholder: 'Enter your domain',\n * options: [{label: 'Domain 1', value: '1'}, {label: 'Domain 2', value: '2'}]\n * }\n * ```\n *\n * Caso o customField possua options, url e fieldValue preenchidos, será priorizado o po-select\n * utilizando o options.\n *\n */\n @Input('p-custom-field') set customField(value: string | PoPageLoginCustomField) {\n if (value) {\n if (isTypeof(value, 'string')) {\n this.customFieldType = 'input';\n this._customField = value;\n this.customFieldObject = this.getDefaultCustomFieldObject(value);\n return;\n }\n\n if (isTypeof(value, 'object') && !Array.isArray(value) && value['property']) {\n this._customField = value;\n this.customFieldObject = <PoPageLoginCustomField>value;\n\n if (!this.customFieldObject.options && !this.customFieldObject.url) {\n this.customFieldType = 'input';\n } else {\n this.customFieldType = this.customFieldObject.options ? 'select' : 'combo';\n }\n\n return;\n }\n }\n\n this._customField = undefined;\n this.customFieldObject = undefined;\n }\n\n get customField(): string | PoPageLoginCustomField {\n return this._customField;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Personaliza o e-mail que é exibido na mensagem de dica de login padrão para contato de suporte.\n */\n @Input('p-contact-email') set contactEmail(value: string) {\n this._contactEmail = value;\n }\n get contactEmail() {\n return this._contactEmail;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Texto customizado que fica entre a logo e a mensagem de boas-vindas.\n */\n @Input('p-product-name') set productName(value: string) {\n this._productName = value;\n }\n get productName() {\n return this._productName;\n }\n\n /**\n * @optional\n *\n * @description\n * Adiciona uma `tag` abaixo do título que especifica o ambiente que o usuário está fazendo o login.\n *\n * > Essa propriedade limita o texto em 40 caracteres.\n */\n @Input('p-environment') set environment(environment: string) {\n if (environment && environment.length > poPageLoginContentMaxLength) {\n this._environment = environment.substring(0, poPageLoginContentMaxLength);\n } else {\n this._environment = environment;\n }\n }\n get environment() {\n return this._environment;\n }\n\n /**\n * @optional\n *\n * @description\n * Exibe um aviso de bloqueio de acordo com a quantidade restante de tentativas.\n * O aviso será exibido somente se a quantidade for maior que zero.\n *\n * > Caso tenha algum valor atribuído para o atributo `p-authentication-url` e o retorno da requisição estiver atribuindo valor\n * para o `p-exceeded-attempts-warning`, o valor considerado será o do retorno da requisição.\n *\n * @default `0`\n */\n @Input('p-exceeded-attempts-warning') set exceededAttemptsWarning(value: number) {\n this._exceededAttemptsWarning = convertToInt(value);\n this.showExceededAttemptsWarning = this.exceededAttemptsWarning > 0;\n }\n\n get exceededAttemptsWarning(): number {\n return this._exceededAttemptsWarning;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Esconde a função \"Lembrar usuário\" do formulário de login.\n *\n * Quando essa propriedade é setada com `true` a propriedade `rememberUser` enviada no evento `p-login-submit` será sempre\n * `false`.\n *\n * > Veja a propriedade `p-literals` para customizar a literal `rememberUser`.\n *\n * @default `false`\n */\n @Input('p-hide-remember-user') set hideRememberUser(value: boolean) {\n this._hideRememberUser = <any>value === '' ? true : convertToBoolean(value);\n\n if (this._hideRememberUser) {\n this.rememberUser = false;\n }\n }\n get hideRememberUser(): boolean {\n return this._hideRememberUser;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Objeto com as literais usadas no `po-page-login`.\n *\n * Existem duas maneiras de customizar o componente, passando um objeto com todas as literais disponíveis:\n *\n * ```\n * const customLiterals: PoPageLoginLiterals = {\n * attempts: '{0} vez(es) ',\n * createANewPasswordNow: 'Melhor criar uma senha nova agora! Você vai poder entrar no sistema logo em seguida.',\n * forgotPassword: 'Esqueceu sua senha?',\n * forgotYourPassword: 'Esqueceu sua senha?',\n * highlightInfo: '',\n * iForgotMyPassword: 'Esqueci minha senha',\n * ifYouTryHarder: 'Se tentar mais ',\n * welcome: 'Boas-vindas',\n * loginErrorPattern: 'Login obrigatório',\n * loginHint: 'Caso não possua usuário entre em contato com o suporte',\n * loginLabel: 'Insira seu usuário',\n * loginPlaceholder: 'Insira seu usuário de acesso',\n * passwordErrorPattern: 'Senha obrigatória',\n * passwordLabel: 'Insira sua senha',\n * passwordPlaceholder: 'Insira sua senha de acesso',\n * customFieldErrorPattern: 'Campo customizado inválido',\n * customFieldPlaceholder: 'Por favor insira um valor',\n * registerUrl: 'Novo registro',\n * rememberUser: 'Lembrar usuário',\n * rememberUserHint: 'Esta opção pode ser desabilitada nas configurações do sistema',\n * submitLabel: 'Acessar sistema',\n * submittedLabel: 'Carregando...',\n * titlePopover: 'Opa!',\n * yourUserWillBeBlocked: 'sem sucesso seu usuário será bloqueado e você fica 24 horas sem poder acessar :('\n * };\n * ```\n *\n * Ou passando apenas as literais que deseja customizar:\n *\n * ```\n * const customLiterals: PoPageLoginLiterals = {\n * loginPlaceholder: 'Insira seu usuário de acesso',\n * passwordPlaceholder: 'Insira sua senha de acesso',\n * submitLabel: 'Acessar sistema'\n * };\n * ```\n *\n * E para carregar as literais customizadas, basta apenas passar o objeto para o componente.\n *\n * ```\n * <po-page-login\n * [p-literals]=\"customLiterals\">\n * </po-page-login>\n * ```\n *\n * > O objeto padrão de literais será traduzido de acordo com o idioma do browser (pt, en, es).\n * > É também possível alternar o objeto padrão de literais através do seletor de idiomas localizado na parte inferior do template,\n * nesse caso, há também a opção do idioma russo.\n */\n @Input('p-literals') set literals(value: PoPageLoginLiterals) {\n this._literals = value;\n }\n\n get literals() {\n return this._literals;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Habilita um estado de carregamento ao botão de *login*.\n *\n * > É necessário atribuir `true` à esta propriedade na função definida em `p-login-submit`.\n *\n * @default `false`\n */\n @Input('p-loading') set loading(value: boolean) {\n this._loading = convertToBoolean(value);\n }\n\n get loading(): boolean {\n return this._loading;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Valor do modelo do campo de login.\n */\n @Input('p-login') set login(value: string) {\n this._login = value;\n\n if (!this.authenticationUrl) {\n this.loginChange.emit(this._login);\n }\n }\n\n get login(): string {\n return this._login;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Atributo que recebe uma lista de erros e exibe abaixo do campo de login.\n */\n @Input('p-login-errors') set loginErrors(value: Array<string>) {\n this._loginErrors = value || [];\n this.setLoginErrors(this._loginErrors);\n }\n get loginErrors() {\n return this._loginErrors;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Atributo que recebe uma lista de erros e exibe abaixo do campo de password.\n */\n @Input('p-password-errors') set passwordErrors(value: Array<string>) {\n this._passwordErrors = value || [];\n this.setPasswordErrors(this._passwordErrors);\n }\n get passwordErrors() {\n return this._passwordErrors;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Exibe um link abaixo do formulário de login para que os usuários da aplicação façam a recuperação dos dados de autenticação.\n *\n * A propriedade aceita os seguintes tipos:\n *\n * - **String**: informe uma url externa ou uma rota válida;\n * - **Function**: pode-se customizar a ação. Para esta possilidade basta atribuir:\n * ```\n * <po-page-login>\n * [recovery]=\"this.myRecovery.bind(this)\">\n * </po-page-login>\n * ```\n *\n * - **PoPageLoginRecovery**: cria-se vínculo automático com o template **po-modal-password-recovery**.\n * O objeto deve conter a **url** para requisição dos recursos e pode-se definir o **tipo** de modal para recuperação de senha,\n * **email** para contato e **máscara** do campo de telefone.\n */\n @Input('p-recovery') set recovery(value: string | Function | PoPageLoginRecovery) {\n this._recovery = value;\n }\n\n get recovery() {\n return this._recovery;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Caso a aplicação tenha um link para novos cadastros, informe uma url externa ou uma rota válida, dessa\n * forma será exibido um link abaixo do formulário de login para os usuários da aplicação.\n *\n * Exemplos de valores válidos:\n * - **local**: `/home`\n * - **url externa**: `https://po-ui.io`\n *\n * > Veja a propriedade `p-literals` para customizar a literal `registerUrl`.\n */\n @Input('p-register-url') set registerUrl(value: string) {\n this._registerUrl = isTypeof(value, 'string') ? value : undefined;\n }\n\n get registerUrl(): string {\n return this._registerUrl;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Atributo que recebe o tipo de esquema da autenticação, sendo suportados apenas os valores `Basic` e `Bearer`.\n *\n * > Caso o tipo definido seja `Basic`, o componente fará uma requisição `POST` contendo:\n *\n * ```\n * headers {\n * Authorization: Basic base64(login:password)\n * }\n *\n * body {\n * rememberUser: rememberUser\n * }\n * ```\n *\n * > Caso o tipo definido seja `Bearer`, o componente fará uma requisição `POST` contendo:\n *\n * ```\n * body {\n * login: login,\n * password: base64(password),\n * rememberUser: rememberUser\n * }\n * ```\n *\n * @default `PoPageLoginAuthenticationType.Basic`\n */\n @Input('p-authentication-type') set authenticationType(value: PoPageLoginAuthenticationType) {\n this._authenticationType = (<any>Object).values(PoPageLoginAuthenticationType).includes(value)\n ? value\n : PoPageLoginAuthenticationType.Basic;\n }\n\n get authenticationType(): PoPageLoginAuthenticationType {\n return this._authenticationType;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Endpoint usado pelo template para requisição do recurso. Quando preenchido, o método `p-login-submit` será ignorado e o\n * componente adquirirá automatização para o processo de autenticação.\n *\n * ### Processos\n * Ao digitar um valor válido no campo de login/password e pressionar **Enter**, o componente fará uma requisição `POST`\n * na url especificada nesta propriedade passando o objeto contendo o valor definido pelo usuário:\n *\n * ```\n * headers {\n * Authorization: Basic base64(login:password)\n * }\n *\n * body {\n * rememberUser: rememberUser\n * }\n * ```\n *\n * Em caso de **sucesso**, o objeto de retorno é armazenado no `sessionStorage` e o usuário é redirecionado para a página inicial da\n * aplicação `/`.\n *\n * ```\n * 200:\n * {\n * user: user\n * }\n * ```\n *\n * Em caso de **erro** na autenticação, espera-se o seguinte retorno:\n *\n * ```\n * 400/401\n * {\n * code: 400/401,\n * message: message,\n * detailedMessage: detailedMessage,\n * helpUrl?: helpUrl\n * }\n * ```\n *\n * > Pode-se atribuir uma quantidade máxima de tentativas restantes (maxAttemptsRemaining) para o atributo `p-exceeded-attempts-warning`,\n * assim como os avisos relacionados aos campos login e password (loginWarnings, passwordWarnings) para os atributos `p-login-errors` e\n * `p-password-errors` conforme retorno abaixo:\n *\n * ```\n * 400\n * {\n * code: 400/401,\n * message: message,\n * detailedMessage: detailedMessage,\n * helpUrl?: helpUrl,\n * maxAttemptsRemaining?: maxAttemptsRemaining,\n * loginWarnings?: [loginWarnings],\n * passwordWarnings?: [passwordWarnings]\n * }\n * ```\n *\n * > Caso o valor atribuído para `p-exceeded-attempts-warning` seja igual a 0(zero), poderá ser passado um valor para o\n * atributo `p-blocked-url` e o usuário será redirecionado para uma tela de bloqueio.\n *\n * *Processo finalizado.*\n *\n * _______________\n *\n * #### Praticidade\n * As informações do serviço de autenticação também podem ser transmitidas diretamente pelas configuraçãos de rota e, desta maneira,\n * dispensa-se qualquer menção e/ou importação do componente `po-page-login` no restante da aplicação. O exemplo abaixo exemplifica\n * a forma dinâmica com a qual o template de tela de login pode ser gerado ao navegar para rota `/login`, e também como ele se comunica\n * com o serviço para efetuação do processo de autenticação do usuário e solicitação de nova senha.\n * Basta definir nas configurações de rota:\n *\n *\n * ```\n * import { PoPageLoginComponent, PoPageLoginAthenticationType } from '@po-ui/ng-templates';\n *\n * ...\n * const routes: Routes = [\n * {\n * path: 'login', component: PoPageLoginComponent, data: {\n * serviceApi: 'https://po-ui.io/sample/api/users/authentication',\n * environment: 'development',\n * recovery: {\n * url: 'https://po-ui.io/sample/api/users',\n * type: PoModalPasswordRecoveryType.All,\n * contactMail: 'dev.po@po-ui.com',\n * phoneMask: '9-999-999-9999'\n * },\n * registerUrl: '/new-password',\n * authenticationType: PoPageLoginAthenticationType.Basic\n * }\n * }\n * ...\n * ];\n *\n * @NgModule({\n * imports: [RouterModule.forRoot(routes)],\n * exports: [RouterModule]\n * })\n * export class AppRoutingModule { }\n * ```\n *\n *\n * O metadado `serviceApi` deve ser a **url** para requisição dos recursos de autenticação, o `environment` alimenta a propriedade\n * `p-environment`, `recovery` é a interface `PoPageLoginRecovery` responsável pelas especificações contidas na modal de recuperação de\n * senha, `registerUrl` alimenta a propriedade `p-register-url` e `authenticationType` que define a propriedade `p-authentication-type`.\n *\n * > É essencial que siga a nomenclatura dos atributos exemplificados acima para sua efetiva funcionalidade.\n *\n */\n @Input('p-authentication-url') set authenticationUrl(value: string) {\n this._authenticationUrl = isTypeof(value, 'string') ? value : undefined;\n }\n\n get authenticationUrl(): string {\n return this._authenticationUrl;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Caso o valor atribuído para `p-exceeded-attempts-warning` seja igual a 0(zero) e a aplicação tenha um link de bloqueio de usuário,\n * informe uma url externa ou uma rota válida, dessa forma em caso de bloqueio o usuário será redirecionado.\n */\n @Input('p-blocked-url') set blockedUrl(value: string) {\n this._blockedUrl = isTypeof(value, 'string') ? value : undefined;\n }\n\n get blockedUrl(): string {\n return this._blockedUrl;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Exibe um botão para suporte.\n *\n * A propriedade aceita os seguintes tipos:\n *\n * - **String**: URL externa ou uma rota válida;\n * - **Function**: Função a ser disparada ao clicar no botão de suporte;\n * ```\n * <po-page-login>\n * [p-support]=\"this.mySupport.bind(this)\">\n * </po-page-login>\n * ```\n *\n */\n @Input('p-support') set support(value: string | Function) {\n this._support = value;\n }\n\n get support() {\n return this._support;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Coleção de idiomas que o componente irá tratar e disponibilizará para o usuário escolher.\n *\n * Caso essa propriedade não seja utilizada o componente mostrará no combo os idiomas que ele suporta por padrão.\n *\n * Caso a coleção tenha um idioma, a página estará nesse idioma e não mostrará o combo.\n *\n * Caso seja passado um array vazio, a página terá o idioma configurado no `i18n` e não mostrará o combo de seleção.\n *\n * > Se for passado um idioma não suportado, será preciso passar as literais pela propriedade `p-literals`.\n *\n *\n */\n @Input('p-languages') set languagesList(languagesList: Array<PoLanguage>) {\n if (languagesList) {\n if (languagesList.length) {\n this._languagesList = languagesList;\n } else {\n this._languagesList = poLanguageDefault.filter(language => language.language === this.language);\n }\n }\n }\n\n get languagesList(): Array<PoLanguage> {\n if (this._languagesList) {\n return this._languagesList;\n }\n return poLanguageDefault;\n }\n\n get showLanguage() {\n return this.languagesList.length > 1;\n }\n\n get language(): string {\n return this.selectedLanguage || getShortBrowserLanguage();\n }\n\n get pageLoginLiterals(): PoPageLoginLiterals {\n const loginHintWithContactEmail = this.contactEmail\n ? this.concatenateLoginHintWithContactEmail(this.contactEmail)\n : undefined;\n\n return {\n ...poPageLoginLiteralsDefault[poLocaleDefault],\n ...poPageLoginLiteralsDefault[this.language],\n ...loginHintWithContactEmail,\n ...this.literals\n };\n }\n\n constructor(\n private loginService: PoPageLoginService,\n public router: Router,\n public poLanguageService: PoLanguageService\n ) {\n this.selectedLanguage = this.poLanguageService.getShortLanguage();\n }\n\n ngOnDestroy() {\n if (this.loginSubscription) {\n this.loginSubscription.unsubscribe();\n }\n }\n\n closePopover() {\n this.showExceededAttemptsWarning = false;\n }\n\n onLoginSubmit(): void {\n const loginForm: PoPageLogin = {\n login: this.login,\n password: this.password,\n rememberUser: this.rememberUser\n };\n\n if (this.customField) {\n loginForm[this.customFieldObject.property] = this.customFieldObject.value;\n }\n\n if (this.authenticationUrl) {\n this.loading = true;\n this.loginSubscription = this.loginService\n .onLogin(this.authenticationUrl, this.authenticationType, loginForm)\n .subscribe(\n data => {\n this.setValuesToProperties();\n sessionStorage.setItem('PO_USER_LOGIN', JSON.stringify(data));\n this.openInternalLink('/');\n this.loading = false;\n },\n error => {\n if (error.error.code === '400' || error.error.code === '401') {\n this.setValuesToProperties(error);\n this.redirectBlockedUrl(this.exceededAttemptsWarning, this.blockedUrl);\n }\n this.loading = false;\n }\n );\n } else {\n this.loginSubmit.emit(loginForm);\n this.showExceededAttemptsWarning = this.exceededAttemptsWarning > 0;\n }\n }\n\n private getDefaultCustomFieldObject(property): PoPageLoginCustomField {\n return { property };\n }\n\n private openExternalLink(url: string) {\n window.open(url, '_blank');\n }\n\n private openInternalLink(url: string) {\n this.router.navigate([url]);\n }\n\n private redirectBlockedUrl(attempts: number, blockedUrl: string) {\n if (attempts === 0 && blockedUrl) {\n this.showExceededAttemptsWarning = false;\n isExternalLink(blockedUrl) ? this.openExternalLink(blockedUrl) : this.openInternalLink(blockedUrl);\n }\n }\n\n private setValuesToProperties(result?) {\n if (result) {\n this.exceededAttemptsWarning = result.error.maxAttemptsRemaining;\n this.loginErrors = result.error.loginWarnings;\n this.passwordErrors = result.error.passwordWarnings;\n this.blockedUrl = result.error.blockedUrl;\n } else {\n this.exceededAttemptsWarning = 0;\n this.loginErrors = [];\n this.passwordErrors = [];\n this.blockedUrl = '';\n }\n }\n\n protected abstract concatenateLoginHintWithContactEmail(contactEmail: string);\n\n protected abstract setLoginErrors(value: Array<string>): void;\n\n protected abstract setPasswordErrors(value: Array<string>): void;\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { isExternalLink, isTypeof } from '../../../utils/util';\n\nimport { PoPageLoginLiterals } from '../interfaces/po-page-login-literals.interface';\nimport { PoPageLoginRecovery } from '../interfaces/po-page-login-recovery.interface';\n\n@Component({\n selector: 'po-page-login-popover',\n templateUrl: './po-page-login-popover.component.html',\n standalone: false\n})\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente para definição da mensagem de aviso de bloqueio do `po-page-login`.\n */\nexport class PoPageLoginPopoverComponent {\n @Input('p-literals') literals: PoPageLoginLiterals;\n\n /** exibe o link de 'esqueci minha senha' e verifica se o valor é um link interno ou externo */\n @Input('p-recovery') set recovery(value: string | Function | PoPageLoginRecovery) {\n this._recovery = value;\n\n if (isTypeof(value, 'string')) {\n this.recoveryType = isExternalLink(value) ? 'externalLink' : 'internalLink';\n }\n }\n\n get recovery() {\n return this._recovery;\n }\n\n /** define se a mensagem deverá ser exibida caso seja maior que 0(zero) */\n @Input('p-remaining-attempts') remainingAttempts: number;\n\n /** se 'p-recovery' for do tipo Function ou PoPageLoginRecovery, emite para o método 'openUrl' do componente 'po-page-login' */\n @Output('p-forgot-password') forgotPassword = new EventEmitter<any>();\n\n recoveryType: string;\n\n private _recovery: string | Function | PoPageLoginRecovery;\n\n onForgotPasswordClick(recovery) {\n this.forgotPassword.emit(recovery);\n }\n}\n","<div class=\"po-page-login-popover-container\">\n <div class=\"po-page-login-popover\">\n <div class=\"po-page-login-popover-arrow\"></div>\n <div class=\"po-page-login-popover-content\">\n <p class=\"po-font-text-bold po-page-login-popover-title\">\n {{ literals?.titlePopover }}\n </p>\n <p class=\"po-font-text\">\n {{ literals?.forgotYourPassword }}\n </p>\n <p class=\"po-font-text\">\n {{ literals?.ifYouTryHarder }}\n <span class=\"po-font-text-bold po-page-login-popover-attempts\">\n {{ literals?.attempts | poI18n: remainingAttempts }} </span\n >{{ literals?.yourUserWillBeBlocked }}\n </p>\n <br />\n <p class=\"po-font-text\">\n {{ literals?.createANewPasswordNow }}\n </p>\n @if (recovery) {\n <div class=\"po-font-text-bold po-mt-1 po-page-login-popover-link-container\">\n @if (recoveryType === 'internalLink') {\n <a class=\"po-page-login-popover-link\" [routerLink]=\"recovery\">\n {{ literals?.iForgotMyPassword }}\n </a>\n }\n @if (recoveryType === 'externalLink') {\n <a class=\"po-page-login-popover-link\" [href]=\"recovery\" target=\"_blank\">\n {{ literals?.iForgotMyPassword }}\n </a>\n }\n @if (!recoveryType) {\n <a class=\"po-page-login-popover-link\" (click)=\"onForgotPasswordClick(recovery)\">\n {{ literals?.iForgotMyPassword }}\n </a>\n }\n </div>\n }\n </div>\n </div>\n</div>\n","import {\n AfterViewChecked,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n IterableDiffers,\n OnInit,\n ViewChild,\n ViewContainerRef,\n inject\n} from '@angular/core';\nimport { AbstractControl, NgForm } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { PoLanguageService } from '@po-ui/ng-components';\n\nimport { PoComponentInjectorService } from '@po-ui/ng-components';\nimport { isExternalLink } from '../../utils/util';\n\nimport { PoModalPasswordRecoveryType } from '../po-modal-password-recovery/enums/po-modal-password-recovery-type.enum';\nimport { PoModalPasswordRecoveryComponent } from '../po-modal-password-recovery/po-modal-password-recovery.component';\nimport { PoPageLoginRecovery } from './interfaces/po-page-login-recovery.interface';\nimport {\n PoPageLoginBaseComponent,\n poPageLoginLiteralIn,\n poPageLoginLiteralsDefault\n} from './po-page-login-base.component';\nimport { PoPageLoginService } from './po-page-login.service';\n\n/**\n * @docsExtends PoPageLoginBaseComponent\n *\n * @example\n *\n * <example name=\"po-page-login-basic\" title=\"PO Page Login Basic\">\n * <file name=\"sample-po-page-login-basic/sample-po-page-login-basic.component.html\"> </file>\n * <file name=\"sample-po-page-login-basic/sample-po-page-login-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-login-labs\" title=\"PO Page Login Labs\">\n * <file name=\"sample-po-page-login-labs/sample-po-page-login-labs.component.html\"> </file>\n * <file name=\"sample-po-page-login-labs/sample-po-page-login-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-login-human-resources\" title=\"PO Page Login - Human Resources\">\n * <file name=\"sample-po-page-login-human-resources/sample-po-page-login-human-resources.component.html\"> </file>\n * <file name=\"sample-po-page-login-human-resources/sample-po-page-login-human-resources.component.ts\"> </file>\n * <file name=\"sample-po-page-login-human-resources/sample-po-page-login-human-resources.module.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-login-automatic-service\" title=\"PO Page Login - Automatic Service\">\n * <file name=\"sample-po-page-login-automatic-service/sample-po-page-login-automatic-service.component.html\"> </file>\n * <file name=\"sample-po-page-login-automatic-service/sample-po-page-login-automatic-service.component.ts\"> </file>\n * </example>\n */\n\n@Component({\n selector: 'po-page-login',\n templateUrl: './po-page-login.component.html',\n standalone: false\n})\nexport class PoPageLoginComponent extends PoPageLoginBaseComponent implements AfterViewChecked, OnInit {\n changeDetector = inject(ChangeDetectorRef);\n private activatedRoute = inject(ActivatedRoute);\n private poComponentInjector = inject(PoComponentInjectorService);\n\n @ViewChild('loginForm', { read: NgForm, static: true }) loginForm: NgForm;\n @ViewChild('pageLogin', { read: ViewContainerRef, static: true }) pageLogin: ViewContainerRef;\n\n initialSelectLanguage: string;\n\n private componentRef: ComponentRef<any> = null;\n private differ: any;\n private readonly customPasswordError = { custom: false };\n\n constructor() {\n const differs = inject(IterableDiffers);\n const loginService = inject(PoPageLoginService);\n const router = inject(Router);\n const poLanguageService = inject(PoLanguageService);\n\n super(loginService, router, poLanguageService);\n this.differ = differs.find([]).create(null);\n }\n\n ngAfterViewChecked() {\n if (this.differ) {\n this.validateArrayChanges(this.differ, [\n { array: this.loginErrors, callback: this.generateLoginError.bind(this) },\n { array: this.passwordErrors, callback: this.generatePasswordError.bind(this) }\n ]);\n }\n }\n\n ngOnInit() {\n this.checkingForRouteMetadata(this.activatedRoute.snapshot.data);\n this.selectedLanguage = this.initializeLanguage();\n this.initialSelectLanguage = this.selectedLanguage;\n }\n\n activateSupport() {\n switch (typeof this.support) {\n case 'string': {\n this.setUrlRedirect(this.support);\n break;\n }\n case 'function': {\n this.support();\n break;\n }\n }\n }\n\n changeLoginModel() {\n if (this.authenticationUrl) {\n this.loginErrors = [];\n } else {\n this.setLoginErrors(this.loginErrors);\n this.loginChange.emit(this.login);\n }\n }\n\n changePasswordModel() {\n if (this.authenticationUrl) {\n this.passwordErrors = [];\n } else {\n this.setPasswordErrors(this.passwordErrors);\n this.passwordChange.emit(this.password);\n }\n }\n\n onSelectedLanguage(language: string) {\n this.languageChange.emit(this.languagesList.find(languageItem => languageItem.language === language));\n this.selectedLanguage = language;\n }\n\n openUrl(recovery: any): void {\n switch (typeof recovery) {\n case 'string': {\n this.setUrlRedirect(recovery);\n break;\n }\n case 'function': {\n recovery();\n break;\n }\n case 'object': {\n this.createModalPasswordRecoveryComponent(recovery);\n break;\n }\n }\n }\n\n protected concatenateLoginHintWithContactEmail(contactEmail: string) {\n const defaultLoginHintLiteral = poPageLoginLiteralsDefault[this.language].loginHint;\n const prepositionLiteral = poPageLoginLiteralIn[this.language];\n\n return this.concatenateLiteral(contactEmail, 'loginHint', defaultLoginHintLiteral, prepositionLiteral);\n }\n\n protected setLoginErrors(errors: Array<string>) {\n const control = this.loginForm.form.controls['login'];\n this.setControlErrors('allLoginErrors', control, errors, this.pageLoginLiterals.loginErrorPattern);\n }\n\n protected setPasswordErrors(errors: Array<string>) {\n const control = this.loginForm.form.controls['password'];\n this.setControlErrors('allPasswordErrors', control, errors, this.pageLoginLiterals.passwordErrorPattern);\n }\n\n private checkingForMetadataProperty(object, property) {\n if (Object.prototype.hasOwnProperty.call(object, property)) {\n return object[property];\n }\n }\n\n private checkingForRouteMetadata(data) {\n if (Object.keys(data).length !== 0) {\n this.authenticationUrl = this.checkingForMetadataProperty(data, 'serviceApi') || this.authenticationUrl;\n this.authenticationType = this.checkingForMetadataProperty(data, 'authenticationType') || this.authenticationType;\n this.environment = this.checkingForMetadataProperty(data, 'environment') || this.environment;\n this.recovery = this.checkingForMetadataProperty(data, 'recovery') || this.recovery;\n this.registerUrl = this.checkingForMetadataProperty(data, 'registerUrl') || this.registerUrl;\n }\n }\n\n private concatenate(defaultLiteral: string, prefixLiteral: string, value: string) {\n return `${defaultLiteral} ${prefixLiteral} ${value}`;\n }\n\n private concatenateLiteral(value: string, literal: string, defaultLiteral: string, prepositionLiteral: string) {\n return { [literal]: this.concatenate(defaultLiteral, prepositionLiteral, value) };\n }\n\n private createModalPasswordRecoveryComponent(poPageLoginRecovery: PoPageLoginRecovery) {\n if (this.componentRef) {\n this.poComponentInjector.destroyComponentInApplication(this.componentRef);\n }\n\n this.componentRef = this.poComponentInjector.createComponentInApplication(PoModalPasswordRecoveryComponent);\n this.componentRef.instance.urlRecovery = poPageLoginRecovery.url;\n this.componentRef.instance.contactEmail = poPageLoginRecovery.contactMail;\n this.componentRef.instance.phoneMask = poPageLoginRecovery.phoneMask;\n this.componentRef.instance.type = poPageLoginRecovery.type || PoModalPasswordRecoveryType.Email;\n this.componentRef.changeDetectorRef.detectChanges();\n setTimeout(() => {\n this.componentRef.instance.open();\n });\n }\n\n private generateLoginError() {\n if (this.loginErrors && this.loginErrors.length) {\n this.setLoginErrors(this.loginErrors);\n } else {\n const control = this.loginForm.form.controls['login'];\n if (control) {\n this.resetControl(control);\n }\n }\n }\n\n private generatePasswordError() {\n if (this.passwordErrors && this.passwordErrors.length) {\n this.setPasswordErrors(this.passwordErrors);\n } else {\n const control = this.loginForm.form.controls['password'];\n\n if (control) {\n this.resetControl(control);\n }\n }\n }\n\n private resetControl(control: AbstractControl) {\n control.markAsPristine();\n control.markAsUntouched();\n control.updateValueAndValidity();\n }\n\n private setControlErrors(allErrors: string, control: AbstractControl, errors: Array<string>, patternError: string) {\n if (control) {\n this[allErrors] = control.hasError('pattern') ? [...errors, ...[patternError]] : [...errors];\n\n if (errors && errors.length && (control.valid || control.pristine)) {\n control.markAsTouched();\n control.markAsDirty();\n control.setErrors(this.customPasswordError);\n }\n }\n }\n\n private setUrlRedirect(url) {\n isExternalLink(url) ? window.open(url, '_blank') : this.router.navigate([url]);\n }\n\n private validateArrayChanges(differ: any, array: Array<{ array: Array<any>; callback: any }>) {\n array.forEach(element => {\n const changes = differ.diff(element.array);\n if (changes) {\n element.callback();\n this.changeDetector.detectChanges();\n }\n });\n }\n\n private initializeLanguage() {\n const language = this.languagesList.find(languageItem => languageItem.language === this.language);\n return language?.language || this.languagesList[0].language;\n }\n}\n","<button class=\"po-page-login-support\" (click)=\"activateSupport()\" [hidden]=\"!support\">\n <po-icon p-icon=\"ICON_HELP\"></po-icon>\n {{ pageLoginLiterals?.support }}\n</button>\n\n<po-page-background\n #pageLogin\n [p-components-size]=\"componentsSize\"\n [p-show-select-language]=\"showLanguage\"\n [p-languages]=\"languagesList\"\n [p-initial-language]=\"initialSelectLanguage\"\n [p-background]=\"background\"\n [p-highlight-info]=\"pageLoginLiterals.highlightInfo\"\n [p-logo]=\"logo\"\n [p-secondary-logo]=\"secondaryLogo\"\n (p-selected-language)=\"onSelectedLanguage($event)\"\n>\n <header class=\"po-page-login-header\">\n <div class=\"po-page-login-header-product-name\">\n <h1>{{ productName }}</h1>\n </div>\n\n <div class=\"po-page-login-header-product-environment po-mb-md-4 po-mb-sm-1\">\n @if (environment) {\n <po-tag p-type=\"warning\" [p-value]=\"environment\"> </po-tag>\n }\n </div>\n <div class=\"po-page-login-header-welcome po-mb-md-4 po-mb-sm-2\">{{ pageLoginLiterals.welcome }}</div>\n </header>\n\n <form #loginForm=\"ngForm\" class=\"po-page-login-form\">\n <div class=\"po-row\">\n <div class=\"po-lg-12\">\n <div class=\"po-page-login-hint po-page-login-info-container\">\n <po-login\n class=\"po-page-login-info-field\"\n [class.po-page-login-info-field-dynamic]=\"\n !pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\n \"\n name=\"login\"\n [(ngModel)]=\"login\"\n p-auto-focus\n p-required\n [p-label]=\"pageLoginLiterals.loginLabel\"\n [p-no-autocomplete]=\"noAutocompleteLogin\"\n [p-pattern]=\"loginPattern\"\n [p-placeholder]=\"pageLoginLiterals.loginPlaceholder\"\n [p-size]=\"componentsSize\"\n (click)=\"closePopover()\"\n (keyup.enter)=\"loginForm.valid && onLoginSubmit()\"\n (p-change-model)=\"changeLoginModel()\"\n >\n </po-login>\n\n @if (pageLoginLiterals.loginHint || pageLoginLiterals.rememberUserHint) {\n <div\n class=\"po-page-login-info-icon-container\"\n [class.po-page-login-info-icon-container-dynamic]=\"\n !pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\n \"\n >\n @if (pageLoginLiterals.loginHint) {\n <po-icon\n p-icon=\"ICON_INFO po-field-icon\"\n p-tooltip-position=\"right\"\n [p-tooltip]=\"pageLoginLiterals.loginHint\"\n >\n </po-icon>\n }\n </div>\n }\n </div>\n\n <div class=\"po-field-container-bottom po-field-container-error-container\">\n @for (error of allLoginErrors; track error) {\n <div class=\"po-field-container-bottom-text-error po-field-container-error-item\">\n <po-icon p-icon=\"ICON_EXCLAMATION\"></po-icon>\n <span class=\"po-field-container-error-text\">{{ error }}</span>\n </div>\n }\n </div>\n </div>\n\n <div class=\"po-lg-12\">\n <div class=\"po-page-login-password-container\">\n <po-password\n class=\"po-page-login-field-size po-page-login-password-item\"\n [class.po-page-login-field-size-dynamic]=\"\n !pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\n \"\n name=\"password\"\n [(ngModel)]=\"password\"\n p-required\n [p-hide-password-peek]=\"hidePasswordPeek\"\n [p-label]=\"pageLoginLiterals.passwordLabel\"\n [p-no-autocomplete]=\"noAutocompletePassword\"\n [p-pattern]=\"passwordPattern\"\n [p-placeholder]=\"pageLoginLiterals.passwordPlaceholder\"\n [p-size]=\"componentsSize\"\n (click)=\"closePopover()\"\n (keyup.enter)=\"loginForm.valid && onLoginSubmit()\"\n (p-change-model)=\"changePasswordModel()\"\n >\n </po-password>\n @if (pageLoginLiterals.loginHint || pageLoginLiterals.rememberUserHint) {\n <div class=\"po-page-login-password-item po-page-login-password-popover-container\">\n @if (showExceededAttemptsWarning && exceededAttemptsWarning) {\n <po-page-login-popover\n [p-literals]=\"pageLoginLiterals\"\n [p-recovery]=\"recovery\"\n [p-remaining-attempts]=\"exceededAttemptsWarning\"\n (p-forgot-password)=\"openUrl($event)\"\n >\n </po-page-login-popover>\n }\n </div>\n }\n </div>\n <div class=\"po-field-container-bottom po-field-container-error-container\">\n @for (error of allPasswordErrors; track error) {\n <div class=\"po-field-container-bottom-text-error po-field-container-error-item\">\n <po-icon p-icon=\"ICON_EXCLAMATION\"></po-icon>\n <span class=\"po-field-container-error-text\">{{ error }}</span>\n </div>\n }\n </div>\n </div>\n\n @if (customField && customFieldType === 'input') {\n <po-input\n [class.po-page-login-field-size-dynamic]=\"!pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\"\n class=\"po-page-login-field-size po-lg-12\"\n name=\"customFieldInput\"\n [(ngModel)]=\"customFieldObject.value\"\n p-required\n [p-error-pattern]=\"customFieldObject.errorPattern || pageLoginLiterals.customFieldErrorPattern\"\n [p-pattern]=\"customFieldObject.pattern\"\n [p-placeholder]=\"customFieldObject.placeholder || pageLoginLiterals.customFieldPlaceholder\"\n [p-size]=\"componentsSize\"\n (keyup.enter)=\"loginForm.valid && onLoginSubmit()\"\n >\n </po-input>\n }\n\n @if (customField && customFieldType === 'combo') {\n <po-combo\n [class.po-page-login-field-size-dynamic]=\"!pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\"\n class=\"po-page-login-field-size po-lg-12\"\n name=\"customFieldCombo\"\n [(ngModel)]=\"customFieldObject.value\"\n p-required\n [p-field-value]=\"customFieldObject.fieldValue\"\n [p-filter-service]=\"customFieldObject.url\"\n [p-placeholder]=\"customFieldObject.placeholder || pageLoginLiterals.customFieldPlaceholder\"\n [p-size]=\"componentsSize\"\n >\n </po-combo>\n }\n\n @if (customField && customFieldType === 'select') {\n <po-select\n [class.po-page-login-field-size-dynamic]=\"!pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\"\n class=\"po-page-login-field-size po-lg-12\"\n name=\"customFieldSelect\"\n [(ngModel)]=\"customFieldObject.value\"\n p-required\n [p-placeholder]=\"customFieldObject.placeholder || pageLoginLiterals.customFieldPlaceholder\"\n [p-options]=\"customFieldObject.options\"\n [p-size]=\"componentsSize\"\n >\n </po-select>\n }\n\n <div class=\"po-lg-12\">\n @if (!hideRememberUser) {\n <div class=\"po-page-login-hint po-page-login-info-container\">\n <po-switch\n class=\"po-page-login-info-field po-lg-7 po-offset-lg-5 po-offset-xl-5\"\n name=\"rememberUser\"\n [(ngModel)]=\"rememberUser\"\n p-label-position=\"1\"\n [p-label-off]=\"pageLoginLiterals.rememberUser\"\n [p-label-on]=\"pageLoginLiterals.rememberUser\"\n [p-size]=\"componentsSize\"\n (keyup.enter)=\"loginForm.valid && onLoginSubmit()\"\n [p-hide-label-status]=\"hideLabelStatus\"\n >\n </po-switch>\n @if (pageLoginLiterals.loginHint || pageLoginLiterals.rememberUserHint) {\n <div\n class=\"po-page-login-info-icon-container po-page-login-info-icon-remember-user\"\n [class.po-page-login-info-icon-container-dynamic]=\"!pageLoginLiterals.rememberUserHint\"\n >\n @if (pageLoginLiterals.rememberUserHint) {\n <po-icon\n p-icon=\"ICON_INFO po-field-icon\"\n p-tooltip-position=\"right\"\n [p-tooltip]=\"pageLoginLiterals.rememberUserHint\"\n >\n </po-icon>\n }\n </div>\n }\n </div>\n }\n </div>\n\n <po-button\n [class.po-page-login-button-dynamic]=\"!pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\"\n class=\"po-lg-12 po-page-login-button po-page-login-field-size\"\n p-kind=\"primary\"\n [p-disabled]=\"loginForm.invalid\"\n [p-label]=\"loading ? pageLoginLiterals.submittedLabel : pageLoginLiterals.submitLabel\"\n [p-loading]=\"loading\"\n [p-size]=\"componentsSize\"\n (p-click)=\"onLoginSubmit()\"\n >\n </po-button>\n\n @if (recovery) {\n <div class=\"po-page-login-recovery-link\">\n <a class=\"po-font-text-large-bold\" (click)=\"openUrl(recovery)\">{{ pageLoginLiterals.forgotPassword }}</a>\n </div>\n }\n\n @if (registerUrl) {\n <div class=\"po-page-login-register-link\">\n <a class=\"po-font-text-large-bold\" (click)=\"openUrl(registerUrl)\">{{ pageLoginLiterals.registerUrl }}</a>\n </div>\n }\n </div>\n </form>\n</po-page-background>\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { PoModule } from '@po-ui/ng-components';\n\nimport { PoModalPasswordRecoveryComponent } from '../po-modal-password-recovery/po-modal-password-recovery.component';\nimport { PoPageBackgroundModule } from '../po-page-background/index';\nimport { PoPageLoginComponent } from './po-page-login.component';\nimport { PoPageLoginPopoverComponent } from './po-page-login-popover/po-page-login-popover.component';\nimport { PoPageLoginService } from './po-page-login.service';\n\n/**\n * @description\n *\n * Módulo do template do po-page-login.\n */\n@NgModule({\n imports: [CommonModule, FormsModule, RouterModule, PoPageBackgroundModule, PoModule],\n declarations: [PoPageLoginComponent, PoPageLoginPopoverComponent],\n exports: [PoPageLoginComponent],\n providers: [PoPageLoginService]\n})\nexport class PoPageLoginModule {}\n","import { NgModule } from '@angular/core';\n\nimport { PoModalPasswordRecoveryModule } from './po-modal-password-recovery/po-modal-password-recovery.module';\nimport { PoPageBackgroundModule } from './po-page-background/po-page-background.module';\nimport { PoPageBlockedUserModule } from './po-page-blocked-user/po-page-blocked-user.module';\nimport { PoPageChangePasswordModule } from './po-page-change-password/po-page-change-password.module';\nimport { PoPageDynamicDetailModule } from './po-page-dynamic-detail/po-page-dynamic-detail.module';\nimport { PoPageDynamicEditModule } from './po-page-dynamic-edit/po-page-dynamic-edit.module';\nimport { PoPageDynamicSearchModule } from './po-page-dynamic-search/po-page-dynamic-search.module';\nimport { PoPageDynamicTableModule } from './po-page-dynamic-table/po-page-dynamic-table.module';\nimport { PoPageJobSchedulerModule } from './po-page-job-scheduler/po-page-job-scheduler.module';\nimport { PoPageLoginModule } from './po-page-login/po-page-login.module';\n\n@NgModule({\n imports: [\n PoModalPasswordRecoveryModule,\n PoPageBackgroundModule,\n PoPageBlockedUserModule,\n PoPageChangePasswordModule,\n PoPageDynamicDetailModule,\n PoPageDynamicEditModule,\n PoPageDynamicSearchModule,\n PoPageDynamicTableModule,\n PoPageJobSchedulerModule,\n PoPageLoginModule\n ],\n exports: [\n PoModalPasswordRecoveryModule,\n PoPageBackgroundModule,\n PoPageBlockedUserModule,\n PoPageChangePasswordModule,\n PoPageDynamicDetailModule,\n PoPageDynamicEditModule,\n PoPageDynamicSearchModule,\n PoPageDynamicTableModule,\n PoPageJobSchedulerModule,\n PoPageLoginModule\n ]\n})\nexport class PoComponentsModule {}\n","import { NgModule } from '@angular/core';\n\nimport { PoPageCustomizationModule } from './po-page-customization/po-page-customization.module';\nimport { PoPageDynamicModule } from './po-page-dynamic/po-page-dynamic.module';\n\n@NgModule({\n imports: [PoPageCustomizationModule, PoPageDynamicModule],\n exports: [PoPageCustomizationModule, PoPageDynamicModule]\n})\nexport class PoServicesModule {}\n","import { NgModule } from '@angular/core';\n\nimport { PoComponentsModule } from './components/components.module';\nimport { PoServicesModule } from './services/services.module';\n\n@NgModule({\n imports: [PoComponentsModule, PoServicesModule],\n exports: [PoComponentsModule, PoServicesModule]\n})\nexport class PoTemplatesModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i4.PoModalPasswordRecoveryErrorMessageComponent","i2","i2.PoPageBackgroundComponent","i3.PoPageBlockedUserContactsComponent","i4.PoPageBlockedUserReasonComponent","i3","i4","i5.PoPageBackgroundComponent","i2.PoAdvancedFilterComponent","util.convertToInt","util.sortArrayOfObjects","util.mapObjectByProperties","util.valuesFromObject","util.removeKeysProperties","util.mapArrayByProperties","i2.PoPageDynamicSearchComponent","i1.PoPageJobSchedulerService","i4.PoPageJobSchedulerExecutionComponent","i5.PoPageJobSchedulerParametersComponent","i6.PoPageJobSchedulerSummaryComponent","i1.PoPageLoginService","i4.PoPageLoginPopoverComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"po-ui-ng-templates.mjs","sources":["../../../projects/templates/src/lib/components/enums/po-page-components-size.enum.ts","../../../projects/templates/src/lib/utils/util.ts","../../../projects/templates/src/lib/components/po-modal-password-recovery/enums/po-modal-password-recovery-modal-content.enum.ts","../../../projects/templates/src/lib/components/po-modal-password-recovery/enums/po-modal-password-recovery-type.enum.ts","../../../projects/templates/src/lib/components/po-modal-password-recovery/literals/i18n/po-modal-password-recovery-literals.ts","../../../projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery-base.component.ts","../../../projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery.service.ts","../../../projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery-error-message/po-modal-password-recovery-error-message.component.ts","../../../projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery-error-message/po-modal-password-recovery-error-message.component.html","../../../projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery.component.ts","../../../projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery.component.html","../../../projects/templates/src/lib/components/po-modal-password-recovery/po-modal-password-recovery.module.ts","../../../projects/templates/src/lib/components/po-page-background/po-page-background.component.ts","../../../projects/templates/src/lib/components/po-page-background/po-page-background.component.html","../../../projects/templates/src/lib/components/po-page-background/po-page-background.module.ts","../../../projects/templates/src/lib/components/po-page-blocked-user/enums/po-page-blocked-user-reason.enum.ts","../../../projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user-base.component.ts","../../../projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user-contacts/po-page-blocked-user-contacts.component.ts","../../../projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user-contacts/po-page-blocked-user-contacts.component.html","../../../projects/templates/src/lib/components/po-page-blocked-user/literals/i18n/po-page-blocked-user-literals.ts","../../../projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user-reason/po-page-blocked-user-reason.component.ts","../../../projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user-reason/po-page-blocked-user-reason.component.html","../../../projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user.component.ts","../../../projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user.component.html","../../../projects/templates/src/lib/components/po-page-blocked-user/po-page-blocked-user.module.ts","../../../projects/templates/src/lib/components/po-page-change-password/literals/i18n/po-page-change-password-literals.ts","../../../projects/templates/src/lib/components/po-page-change-password/po-page-change-password-base.component.ts","../../../projects/templates/src/lib/components/po-page-change-password/po-page-change-password.service.ts","../../../projects/templates/src/lib/components/po-page-change-password/po-page-change-password.component.ts","../../../projects/templates/src/lib/components/po-page-change-password/po-page-change-password.component.html","../../../projects/templates/src/lib/components/po-page-change-password/po-page-change-password.module.ts","../../../projects/templates/src/lib/services/po-page-dynamic/po-page-dynamic.service.ts","../../../projects/templates/src/lib/services/po-page-customization/po-page-customization.service.ts","../../../projects/templates/src/lib/components/po-page-dynamic-detail/po-page-dynamic-detail-actions.service.ts","../../../projects/templates/src/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.component.ts","../../../projects/templates/src/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.component.html","../../../projects/templates/src/lib/services/po-page-dynamic/po-page-dynamic.module.ts","../../../projects/templates/src/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.module.ts","../../../projects/templates/src/lib/components/po-page-dynamic-edit/po-page-dynamic-edit-actions.service.ts","../../../projects/templates/src/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.component.ts","../../../projects/templates/src/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.component.html","../../../projects/templates/src/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.module.ts","../../../projects/templates/src/lib/services/po-page-customization/po-page-customization.module.ts","../../../projects/templates/src/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter-base.component.ts","../../../projects/templates/src/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter.component.ts","../../../projects/templates/src/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter.component.html","../../../projects/templates/src/lib/components/po-page-dynamic-search/po-page-dynamic-search-base.component.ts","../../../projects/templates/src/lib/components/po-page-dynamic-search/po-page-dynamic-search.component.ts","../../../projects/templates/src/lib/components/po-page-dynamic-search/po-page-dynamic-search.component.html","../../../projects/templates/src/lib/components/po-page-dynamic-search/po-page-dynamic-search.module.ts","../../../projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-list-base.component.ts","../../../projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table-actions.service.ts","../../../projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table-literals.ts","../../../projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.ts","../../../projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.html","../../../projects/templates/src/lib/components/po-page-dynamic-table/po-page-dynamic-table.module.ts","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-internal.ts","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.service.ts","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-base.component.ts","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-literals.ts","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-lookup.service.ts","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-job-scheduler-parameters-template/po-job-scheduler-parameters-template.directive.ts","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-job-scheduler-summary-template/po-job-scheduler-summary-template.directive.ts","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-execution/po-page-job-scheduler-execution.component.ts","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-execution/po-page-job-scheduler-execution.component.html","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-page-job-scheduler-parameters.component.ts","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-page-job-scheduler-parameters.component.html","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.ts","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.html","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.ts","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.html","../../../projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.module.ts","../../../projects/templates/src/lib/components/po-page-login/enums/po-page-login-authentication-type.enum.ts","../../../projects/templates/src/lib/components/po-page-login/po-page-login.service.ts","../../../projects/templates/src/lib/components/po-page-login/po-page-login-base.component.ts","../../../projects/templates/src/lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.ts","../../../projects/templates/src/lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.html","../../../projects/templates/src/lib/components/po-page-login/po-page-login.component.ts","../../../projects/templates/src/lib/components/po-page-login/po-page-login.component.html","../../../projects/templates/src/lib/components/po-page-login/po-page-login.module.ts","../../../projects/templates/src/lib/components/components.module.ts","../../../projects/templates/src/lib/services/services.module.ts","../../../projects/templates/src/lib/po-templates.module.ts","../../../projects/templates/src/po-ui-ng-templates.ts"],"sourcesContent":["/**\n * @description\n *\n * Tamanhos da propriedade `p-components-size` para componentes de formulário no template. A medida `small` está\n * disponível apenas para acessibilidade AA.\n */\nexport enum PoPageComponentsSize {\n /** Aplica a medida `small` do componente. */\n Small = 'small',\n\n /** Aplica a medida `medium` do componente. */\n Medium = 'medium'\n}\n","import { poLocaleDefault, poLocales, PoThemeA11yEnum, PoThemeService } from '@po-ui/ng-components';\nimport { PoPageComponentsSize } from '../components/enums/po-page-components-size.enum';\n\n/**\n * Retorna o idioma atual do navegador\n */\nexport function getBrowserLanguage(): string {\n // navigator.userLanguage is the value for IE10\n return navigator.language || navigator['userLanguage'];\n}\n\n/**\n * Retorna o idioma do navegador, com somente as duas primeiras letras. Por exemplo: \"pt\" ou \"es\".\n *\n * Caso o valor retornado pelo navegador não estiver dentro dos idiomas suportados pelo PO,\n * será retornado a linguagem padrão (poLocaleDefault).\n */\nexport function getShortBrowserLanguage(): string {\n const language = (getBrowserLanguage() || poLocaleDefault).toLowerCase().substring(0, 2);\n\n if (!poLocales.includes(language)) {\n return poLocaleDefault;\n }\n\n return language;\n}\n\nexport function convertToBoolean(val: any): boolean {\n if (typeof val === 'string') {\n val = val.toLowerCase().trim();\n return val === 'true' || val === 'on' || val === '';\n }\n\n if (typeof val === 'number') {\n return val === 1;\n }\n\n return !!val;\n}\n\nexport function convertToInt(value: any, valueDefault?: any): number {\n const validNumber = parseInt(value, 10);\n const validDefaultValue = parseInt(valueDefault, 10);\n const defaultValue = validDefaultValue || validDefaultValue === 0 ? validDefaultValue : undefined;\n\n return validNumber || validNumber === 0 ? validNumber : defaultValue;\n}\n\nexport function isTypeof(object: any, type: any) {\n return typeof object === type;\n}\n\n/**\n *\n * @param fn Função que será executada dentro do contexto. Podendo ser o nome da função\n * ou a referência da mesma.\n *\n * @param context Contexto do qual a função será executada.\n */\nexport function callFunction(fn: any, context: any, param?): void {\n if (isTypeof(fn, 'function')) {\n fn.call(context, param);\n } else {\n context[fn](param);\n }\n}\n\nexport function convertIsoToDate(value: string, start: boolean, end: boolean) {\n if (value) {\n const day = parseInt(value.substring(8, 10), 10);\n const month = parseInt(value.substring(5, 7), 10);\n const year = parseInt(value.substring(0, 4), 10);\n if (start) {\n const date = new Date(year, month - 1, day, 0, 0, 0);\n\n setYearFrom0To100(date, year);\n\n return date;\n } else if (end) {\n const date = new Date(year, month - 1, day, 23, 59, 59);\n\n setYearFrom0To100(date, year);\n\n return date;\n } else {\n const milliseconds = Date.parse(value);\n const timezone = new Date().getTimezoneOffset() * 60000;\n return new Date(milliseconds + timezone);\n }\n }\n}\n\nexport function convertDateToISOExtended(date: Date, time?: string) {\n if (date) {\n const getMonth = date.getMonth() + 1;\n const day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();\n const month = getMonth < 10 ? '0' + getMonth : getMonth;\n const year = formatYear(date.getFullYear());\n\n const dateString = date.toString();\n\n if (time) {\n return year + '-' + month + '-' + day + time;\n } else {\n return (\n year +\n '-' +\n month +\n '-' +\n day +\n 'T' +\n dateString.substring(16, 24) +\n dateString.substring(28, 31) +\n ':' +\n dateString.substring(31, 33)\n );\n }\n } else {\n return null;\n }\n}\n\n/**\n * Transforma o ano em uma string no formato yyyy e caso o ano seja menor que 1000 preenche com zeros a esquerda.\n *\n * @param year Ano\n */\nexport function formatYear(year: number) {\n if (year >= 1000) {\n return year.toString();\n }\n\n if (year > 99 && year < 1000) {\n return `0${year}`;\n }\n\n if (year > 9 && year < 100) {\n return `00${year}`;\n }\n\n if (year >= 0 && year < 10) {\n return `000${year}`;\n }\n}\n\n/**\n * @deprecated use getDefaultSizeFn\n *\n * Retorna o tamanho padrão dos componentes conforme o nível de acessibilidade.\n */\nexport function getDefaultSize(poThemeService: PoThemeService): string {\n return poThemeService.getA11yDefaultSize() === 'small' ? PoPageComponentsSize.Small : PoPageComponentsSize.Medium;\n}\n\n/**\n * Retorna o tamanho padrão dos componentes conforme o nível de acessibilidade.\n */\nexport function getDefaultSizeFn(): string {\n return getA11yDefaultSize() === 'small' ? PoPageComponentsSize.Small : PoPageComponentsSize.Medium;\n}\n\nexport function isEquals(value, comparedValue) {\n return JSON.stringify(value) === JSON.stringify(comparedValue);\n}\n\n/**\n * Caso o ano original da data seja entre 0 e 100 atribui esse valor ao ano, pois o `new Date` do javascript transforma o ano para 190X.\n *\n * @param date Data\n * @param year Ano original\n */\nexport function setYearFrom0To100(date: Date, year: number) {\n if (year >= 0 && year < 100) {\n date.setFullYear(year);\n }\n}\n\nexport function sortOptionsByProperty(options: Array<any>, property: string) {\n options.sort((optionA, optionB) => {\n optionA = optionA[property].toString().toLowerCase();\n optionB = optionB[property].toString().toLowerCase();\n\n if (optionA < optionB) {\n return -1;\n }\n if (optionA > optionB) {\n return 1;\n }\n return 0;\n });\n}\n\nexport function removeDuplicatedOptions(list: Array<any>) {\n for (let i = 0; i < list.length; i++) {\n if (i === 0) {\n continue;\n }\n\n if (list.findIndex(op => op.value === list[i].value) !== i) {\n list.splice(i, 1);\n i--;\n }\n }\n}\n\nexport function removeUndefinedAndNullOptions(list: Array<any>) {\n for (let i = 0; i < list.length; i++) {\n if (list[i].value === undefined || list[i].value === null) {\n list.splice(i, 1);\n i--;\n }\n }\n}\n\nexport function validValue(value: any) {\n return (value !== null && value !== undefined && value !== '') || value === false;\n}\n\nexport function isExternalLink(url): boolean {\n return url ? url.startsWith('http') : false;\n}\n\nexport function openExternalLink(url): void {\n window.open(url, '_blank');\n}\n\nexport function getFormattedLink(link: string): string {\n let formattedLink = '';\n // Retira todos os pontos no começo da URL.\n if (link) {\n formattedLink = link.replace(/^(\\.)+/g, '');\n }\n // Verifica se foi utilizado uma rota que não comece com barra.\n if (!formattedLink.startsWith('/')) {\n formattedLink = '/'.concat(formattedLink);\n }\n return formattedLink;\n}\n\n/**\n * Método responsável por ordenar dois valores.\n *\n * @param leftSide Primeiro valor a ser comparado.\n * @param rightSide Segundo valor a ser comparado.\n * @param ascending Determina se será em ordem ascendente ou descendente.\n */\nexport function sortValues(leftSide: string, rightSide: string, ascending: boolean = true): number {\n if (ascending) {\n if (leftSide < rightSide) {\n return -1;\n } else if (leftSide > rightSide) {\n return 1;\n }\n } else if (ascending === false) {\n if (leftSide < rightSide) {\n return 1;\n } else if (leftSide > rightSide) {\n return -1;\n }\n }\n return 0;\n}\n\nexport function validateDateRange(date: Date, dateStart: Date, dateEnd: Date) {\n if (dateStart && dateEnd) {\n return date >= dateStart && date <= dateEnd;\n } else if (dateStart && !dateEnd) {\n return date >= dateStart;\n } else if (!dateStart && dateEnd) {\n return date <= dateEnd;\n } else {\n return true;\n }\n}\n\nexport function capitalizeFirstLetter(text: string): string {\n return `${text.charAt(0).toUpperCase()}${text.slice(1)}`;\n}\n\n/**\n * Mapeia um novo array apenas com as propriedades definidas pelo desenvolvedor baseado em um array de\n * origem.\n *\n * Exemplo:\n *\n * ```\n * const people = [\n * { id: 1, name: 'Fulano', birthdate: '1980-11-01', genre: 'Male', city: 'São Paulo', dependents: 2 },\n * { id: 2, name: 'Beltrano', birthdate: '1997-01-21', genre: 'Female', city: 'Joinville', dependents: 0 },\n * { id: 3, name: 'Siclano', birthdate: '1995-07-15', genre: 'Male', city: 'Joinville', dependents: 0 }\n * ];\n *\n * const properties = ['id', 'name'];\n *\n * const idAndName = mapArrayByProperties(people, properties);\n *\n * console.log(idAndName); // [{ id: 1, name: 'Fulano' }, { id: 2, name: 'Beltrano' }, { id: 3, name: 'Siclano' }]\n * ```\n *\n * Um outro uso para o método é \"parear\" todos os objetos do array com as mesmas propriedades.\n *\n * ```\n * const customers = [\n * { id: 1, name: 'Fulano', city: 'São Paulo', dependents: 2 }, // sem genre\n * { id: 2, name: 'Beltrano', genre: 'Female', city: 'Joinville' }, // sem dependents\n * { id: 3, name: 'Siclano', genre: 'Male', city: 'Joinville', dependents: 0 }\n * ];\n * const properties = ['id', 'name', 'city', 'genre', 'dependents'];\n *\n * const pattern = mapArrayByProperties(customers, properties);\n * console.log(pattern);\n *\n * // [\n * // { id: 1, name: 'Fulano', city: 'São Paulo', genre: undefined, dependents: 2 },\n * // { id: 2, name: 'Beltrano', city: 'Joinville', genre: 'Female', dependents: undefined },\n * // { id: 3, name: 'Siclano', city: 'Joinville', genre: 'Male', dependents: 0 }\n * // ]\n * ```\n *\n * @param items {Array<any>} Array de items original.\n * @param properties {Array<string>} Array de string com a lista de propriedades que devem ser retornadas.\n *\n * @returns Array<any>\n */\nexport function mapArrayByProperties(items: Array<any> = [], properties: Array<string> = []): Array<any> {\n return items.map(item => mapObjectByProperties(item, properties));\n}\n\n/**\n * Mapeia um novo objeto apenas com as propriedades definidas pelo desenvolvedor.\n *\n * Exemplo:\n *\n * ```\n * const person = { id: 1, name: 'Fulano', birthdate: '1980-11-01', genre: 'Male', city: 'São Paulo', dependents: 2 };\n *\n * const properties = ['id', 'name'];\n *\n * const idAndName = mapObjectByProperties(person, properties);\n *\n * console.log(idAndName); // { id: 1, name: 'Fulano' }\n * ```\n *\n * @param object {Array<any>} Array de items original.\n * @param properties {Array<string>} Array de string com a lista de propriedades que devem ser retornadas.\n *\n * @returns Array<any>\n */\nexport function mapObjectByProperties(object: any = {}, properties: Array<string> = []) {\n const getSelectedProperties = (selectedProperties, property) => ({\n ...selectedProperties,\n [property]: object[property]\n });\n\n return properties.reduce(getSelectedProperties, {});\n}\n\n/**\n * Retorna os valores de um objeto dentro de um array.\n *\n * > Simula o Object.values(obj), o mesmo deve ser removido assim que a versão typescrit for atualizada.\n *\n * @param object Objeto de onde será pego os valores.\n */\nexport function valuesFromObject(object: any = {}): Array<any> {\n return Object.keys(object).map(property => object[property]);\n}\n\n/**\n * adiciona 0 no tempo informado, caso menor q 10\n *\n * @param time\n */\nexport function addZero(time: number) {\n if (!time) {\n return '00';\n }\n\n if (time < 10) {\n return `0${time}`;\n }\n\n return time;\n}\n\n/**\n * Remove do objeto as propriedades especificadas.\n *\n * Exemplo:\n *\n * ```\n * key: ['id', 'cpf']\n * newItemValue: { id: '123', cpf: '456', name: 'Test' }\n * Resultado: { name: 'Test' }\n * ```\n *\n * @param keys lista de propriedades para ser removida do objeto.\n * @param newItemValue objeto que se deseja remover as propriedades.\n * @returns objeto sem as propriedades especificadas.\n */\nexport function removeKeysProperties(keys: Array<any>, newItemValue: any) {\n keys.forEach(key => delete newItemValue[key]);\n return newItemValue;\n}\n\n/**\n * Remove objetos duplicados.\n *\n * Exemplo:\n *\n * ```\n * item: [{country: 'japao'}, {country: 'brasil'} , {country: 'china'}]\n * item2: [{country: 'chile'}, {country: 'brasil'}, {country: 'canada'}]\n * key: 'country'\n * Resultado:\n * item2 = [{country: 'chile'}, {country: 'canada'} ]\n * ```\n *\n * @param item lista comparada.\n * @param item2 lista para remover items duplicados.\n * @param key propriedade que será utilizada para realizar a comparação.\n */\nexport function removeDuplicateItems(item, item2, key) {\n const uniqueValues = new Set(item.map(entry => entry[key]));\n item2.splice(0, item2.length, ...item2.filter(entry => !uniqueValues.has(entry[key])));\n}\n\n/**\n * Recebe dois arrays de objetos e remove os itens duplicados utilizando uma propriedade(key) para comparação.\n *\n * Exemplo:\n *\n * ```\n * item: [{country: 'japao'}, {country: 'brasil'} , {country: 'china'}]\n * item2: [{country: 'chile'}, {country: 'brasil'}, {country: 'canada'}]\n * key: '[country]'\n * Resultado do retorno:\n * [{country: 'chile'}, {country: 'canada'}, {country: 'japao'}, {country: 'china'}]\n * ```\n *\n *\n * @param item : primeira lista de itens.\n * @param item2 : segunda lista de itens.\n * @param key : um array de propriedades que vão ser utilizadas para a comparação.\n */\nexport function removeDuplicateItemsWithArrayKey(item, item2, keys) {\n const newKey = keys.length ? keys : ['id'];\n\n const combinedArray = item.concat(item2);\n return combinedArray.filter(\n (obj, index) => index === combinedArray.findIndex(innerObj => newKey.every(key => innerObj[key] === obj[key]))\n );\n}\n\n/**\n * Recebe um array de objetos para ordenação utilizando chave como comparativo e\n * se a order é crescente(true) ou descrescente(false)\n *\n * Exemplo:\n *\n * ```\n * items: [{country: 'japao'}, {country: 'brasil'} , {country: 'china'}]\n * key: 'country'\n * isAscendingOrder: true\n * Resultado do retorno:\n * [{country: 'brasil'}, {country: 'china'} , {country: 'japao'}]\n * ```\n *\n *\n * @param items : lista de itens.\n * @param key : propriedade utilizada na comparação.\n * @param isAscendingOrder : ordenação crescente ou descrescente.\n */\nexport function sortArrayOfObjects(items, key, isAscendingOrder) {\n return items.sort((a, b) => {\n const valueA = a[key];\n const valueB = b[key];\n\n if (typeof valueA === 'number' && typeof valueB === 'number') {\n return isAscendingOrder ? valueA - valueB : valueB - valueA;\n } else {\n const compareResult = valueA.toString().localeCompare(valueB.toString());\n return isAscendingOrder ? compareResult : -compareResult;\n }\n });\n}\n\n/**\n * @deprecated use validateSizeFn\n *\n * Valida e retorna um tamanho permitido para os componentes, considerando a acessibilidade.\n */\nexport function validateSize(value: string, poThemeService: PoThemeService): string {\n if (value && Object.values(PoPageComponentsSize).includes(value as PoPageComponentsSize)) {\n if (value === PoPageComponentsSize.Small && poThemeService.getA11yLevel() !== 'AA') {\n return PoPageComponentsSize.Medium;\n }\n return value;\n }\n return getDefaultSize(poThemeService);\n}\n\n/**\n * Valida e retorna um tamanho permitido para os componentes, considerando a acessibilidade.\n */\nexport function validateSizeFn(value: string): string {\n if (value && Object.values(PoPageComponentsSize).includes(value as PoPageComponentsSize)) {\n if (value === PoPageComponentsSize.Small && getA11yLevel() !== 'AA') {\n return PoPageComponentsSize.Medium;\n }\n return value;\n }\n return getDefaultSizeFn();\n}\n\n/**\n * Retorna a preferência global de tamanho dos componentes.\n *\n * @returns `'small'` ou `'medium'`.\n */\nexport function getA11yDefaultSize(): string {\n const defaultSize = localStorage.getItem('po-default-size');\n const a11yLevel = document.documentElement.getAttribute('data-a11y');\n\n return defaultSize === 'small' && a11yLevel === 'AA' ? 'small' : 'medium';\n}\n\n/**\n * Retorna o nível de acessibilidade configurado no tema.\n * Se não estiver configurado, retorna `AAA` como padrão.\n * @returns {PoThemeA11yEnum} O nível de acessibilidade, que pode ser `AA` ou `AAA`.\n */\nexport function getA11yLevel(): PoThemeA11yEnum {\n const a11yLevel = document.documentElement.getAttribute('data-a11y');\n\n return a11yLevel === 'AA' ? PoThemeA11yEnum.AA : PoThemeA11yEnum.AAA;\n}\n","/**\n * @docsPrivate\n *\n * @description\n *\n * Enum para definição do tipo de conteúdo exibido na modal.\n */\nexport enum PoModalPasswordRecoveryModalContent {\n /** Exibição de modal contendo campo para preenchimento de email ou número de telefone */\n Email = 'email',\n\n /** Exibição de modal contendo campo para inserção de código enviado por SMS */\n SMSCode = 'smsCode',\n\n /** Exibição de modal de confirmação de envio */\n Confirmation = 'confirmation'\n}\n","/**\n * @usedBy PoModalPasswordRecoveryComponent\n *\n * @description\n *\n * *Enum* para especificação do tipo de recuperação de senha.\n */\nexport enum PoModalPasswordRecoveryType {\n /** Possibilita ao usuário optar por envio via email ou SMS */\n All = 'all',\n\n /** Definição para recuperação apenas por email */\n Email = 'email',\n\n /** Definição para recuperação apenas por SMS */\n SMS = 'sms'\n}\n","export const poModalPasswordRecoveryLiterals = {\n en: <any>{\n cancelButton: 'Cancel',\n closeButton: 'Close',\n continueButton: 'Continue',\n email: 'e-mail',\n emailErrorMessagePhrase: 'Invalid e-mail format',\n emailSentConfirmationPhrase: `We have sent the instructions and new password creation link to your e-mail.\n If you did not receive it after a few minutes, check your spam box or click Resend.`,\n emailSentTitle: 'E-mail sent',\n forgotPasswordTitle: 'Forgot your password?',\n insertCode: 'Type the code',\n insertEmail: 'Enter your e-mail',\n insertPhone: 'Enter your mobile number',\n phoneErrorMessagePhrase: 'Invalid phone number',\n prepositionIn: 'in',\n prepositionOr: 'or',\n recoveryPasswordPhrase: 'To recover your password we will send you a {0} with instructions.',\n resendEmailButton: 'Resend',\n resendSmsCodePhrase: 'If the code does not arrive within a few minutes, please send it again.',\n sendAgainPhrase: 'If the code does not arrive within a few minutes',\n sendAgain: 'send again.',\n sendButton: 'Submit',\n sentSmsCodePhrase: 'We sent a code for your mobile phone.',\n sms: 'SMS',\n smsCodeErrorMessagePhrase: 'Invalid code. Please re-enter or contact support',\n supportContact: 'If you do not have access to {0} contact support',\n telephone: 'telephone',\n typeCodeTitle: 'Enter sent code'\n },\n es: <any>{\n cancelButton: 'Cancelar',\n closeButton: 'Cerrar',\n continueButton: 'Continuar',\n email: 'e-mail',\n emailErrorMessagePhrase: 'Formato de correo electrónico no válido',\n emailSentConfirmationPhrase: `Enviamos las instrucciones y enlace de creación de nueva contraseña para su correo electrónico.\n Si no ha recibido después de unos minutos, compruebe su caja de spam o haga clic en Reenviar`,\n emailSentTitle: 'E-mail enviado',\n forgotPasswordTitle: 'Olvidaste tu contraseña?',\n insertCode: 'Introduzca el código',\n insertEmail: 'Introduce tu e-mail',\n insertPhone: 'Introduce tu número de celular',\n phoneErrorMessagePhrase: 'Número de teléfono no válido',\n prepositionIn: 'en',\n prepositionOr: 'u',\n recoveryPasswordPhrase: 'Para recuperar su contraseña vamos a enviar un {0} con instrucciones.',\n resendEmailButton: 'Reenviar',\n resendSmsCodePhrase: 'Si el código no llega dentro de unos minutos, vuelva a enviar.',\n sendAgain: 'envíe de nuevo.',\n sendAgainPhrase: 'Si el código no llega dentro de unos minutos',\n sendButton: 'Enviar',\n sentSmsCodePhrase: 'Enviamos un código para su celular.',\n sms: 'SMS',\n smsCodeErrorMessagePhrase: 'Código no válido. Escriba de nuevo o póngase en contacto con el soporte',\n supportContact: 'Si no tiene acceso a {0} póngase en contacto con el soporte',\n telephone: 'teléfono',\n typeCodeTitle: 'Escribir código enviado'\n },\n pt: <any>{\n cancelButton: 'Cancelar',\n closeButton: 'Fechar',\n continueButton: 'Continuar',\n email: 'e-mail',\n emailErrorMessagePhrase: 'Formato de e-mail inválido',\n emailSentConfirmationPhrase: `Enviamos as instruções e link de criação de nova senha para o seu e-mail.\n Caso não tenha recebido após alguns minutos, verifique sua caixa de spam ou clique em Reenviar.`,\n emailSentTitle: 'E-mail enviado',\n forgotPasswordTitle: 'Esqueceu sua senha?',\n insertCode: 'Digite o código',\n insertEmail: 'Insira seu e-mail',\n insertPhone: 'Insira seu número de celular',\n phoneErrorMessagePhrase: 'Número de telefone inválido',\n prepositionIn: 'em',\n prepositionOr: 'ou',\n recoveryPasswordPhrase: 'Para recuperar sua senha vamos enviar um {0} com instruções.',\n resendEmailButton: 'Reenviar',\n resendSmsCodePhrase: 'Se o código não chegar dentro de alguns minutos envie novamente',\n sendAgain: 'envie novamente.',\n sendAgainPhrase: 'Se o código não chegar dentro de alguns minutos',\n sendButton: 'Enviar',\n sentSmsCodePhrase: 'Enviamos um código para seu celular cadastrado.',\n sms: 'SMS',\n smsCodeErrorMessagePhrase: 'Código inválido. Digite novamente ou contacte o suporte',\n supportContact: 'Se não tiver acesso ao {0} contacte o suporte',\n telephone: 'telefone',\n typeCodeTitle: 'Digitar código enviado'\n },\n ru: <any>{\n cancelButton: 'отменить',\n closeButton: 'близко',\n continueButton: 'близко',\n email: 'по электронной почте',\n emailErrorMessagePhrase: 'Неверный формат электронной почты',\n emailSentConfirmationPhrase: `Мы отправили инструкции и новую ссылку для создания пароля для вашей электронной почты.\nЕсли вы не получили его в течение нескольких минут, установите флажок Спам или нажмите Далее.`,\n emailSentTitle: 'Письмо отправлено',\n forgotPasswordTitle: 'Забыли пароль?',\n insertCode: 'Введите код',\n insertEmail: 'Введите адрес электронной почты',\n insertPhone: 'Введите номер вашего мобильного телефона',\n phoneErrorMessagePhrase: 'Неверный номер телефона',\n prepositionIn: 'в',\n prepositionOr: 'или',\n recoveryPasswordPhrase: 'Для восстановления вашего пароля мы вышлем {0} с инструкциями.',\n resendEmailButton: 'Отправить еще раз',\n resendSmsCodePhrase: 'Если код не приходит через несколько минут, попробуйте еще раз.',\n sendAgain: 'отправить снова.',\n sendAgainPhrase: 'Если код не приходит через несколько минут',\n sendButton: 'послать',\n sentSmsCodePhrase: 'Мы отправляем код на ваш зарегистрированный мобильный телефон.',\n sms: 'SMS',\n smsCodeErrorMessagePhrase: 'Неверный код. Повторите или обратитесь в службу поддержки',\n supportContact: 'Если у вас нет доступа к {0}, обратитесь в службу поддержки',\n telephone: 'телефон',\n typeCodeTitle: 'Введите отправленный код'\n }\n};\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\n\nimport { PoLanguageService, poLocaleDefault } from '@po-ui/ng-components';\n\nimport { getDefaultSizeFn, validateSizeFn } from '../../utils/util';\nimport { PoModalPasswordRecoveryType } from './enums/po-modal-password-recovery-type.enum';\nimport { poModalPasswordRecoveryLiterals } from './literals/i18n/po-modal-password-recovery-literals';\n\nconst PoModalPasswordRecoveryDefaultMaxLength = 15;\nconst PoModalPasswordRecoveryDefaultMinLength = 15;\nconst PoModalPasswordRecoveryDefaultPhone = '(99) 99999-9999';\nconst PoModalPasswordRecoveryTypeDefault: PoModalPasswordRecoveryType = PoModalPasswordRecoveryType.Email;\n\n/**\n * @description\n *\n * O componente `po-modal-password-recovery` é utilizado como template para solicitação de troca de senha.\n *\n * É composto por uma modal que possui três telas, cada uma com as seguintes características:\n *\n * - A primeira possui campos para preenchimento de email ou número de telefone;\n * - Tela com campo para preenchimento de código SMS enviado para o número de telefone enviado;\n * - A terceira se trata de uma confirmação de envio de link para a caixa de email do usuário.\n *\n *\n * A propriedade `p-url-recovery` automatiza a rotina do componente e simplifica o processo\n * para recuperação de senha, bastando definir uma url para requisição dos recursos.\n * Seu detalhamento para uso pode ser visto logo abaixo em *propriedades*.\n * Caso julgue necessário, pode-se também definir manualmente a rotina do componente.\n *\n *\n * Para a modal de digitação de código SMS, é possível definir uma mensagem de erro\n * customizada com a propriedade `p-code-error` e há um link para\n * reenvio de código por SMS. Ao reenviar, o evento `p-code-submit` envia um objeto com o telefone do usuário e a quantidade\n * de vezes em que o usuário fez a solicitação de reenvio.\n *\n * > É indicada a utilização da tela de digitação para envio de código SMS apenas\n * se a opção por envio SMS for disponibilizada para o usuário.\n *\n *\n * A modal de confirmação contém uma ação de reenvio e o evento `p-submit`\n * é quem passa o objeto contendo o email em conjunto com a quantidade de tentativas de reenvio.\n *\n * > A tela de confirmação é indicada para quando o usuário solicitar a troca através do email.\n *\n * > Os textos das modals são pré-definidos, imutáveis e são traduzidos de acordo com o idioma do *browser* (pt, en e es)\n *\n * Para que as imagens sejam exibidas corretamente, é necessário incluir o caminho delas ao projeto. Para isso, edite\n * o *assets* no arquivo **angular.json** da aplicação na seguinte ordem:\n * ```\n * \"assets\": [\n * \"src/assets\",\n * \"src/favicon.ico\",\n * {\n * \"glob\": \"**\\/*\",\n * \"input\": \"node_modules/@po-ui/style/images\",\n * \"output\": \"assets/images\"\n * }\n * ]\n * ```\n */\n@Directive()\nexport abstract class PoModalPasswordRecoveryBaseComponent {\n /**\n * @optional\n *\n * @description\n *\n * Definição de mensagem de erro customizada para quando o usuário passar um código SMS inválido ou errado.\n */\n @Input('p-code-error') codeError: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Endpoint usado pelo template para requisição do recurso. Quando preenchido,\n * o métodos `p-submit` e `p-submit-code` serão ignorados e o componente adquirirá automatização\n * para o processo de solicitação de troca de senha.\n *\n * ### Processos\n * Ao digitar um valor válido no campo de email/telefone e pressionar **enviar**,\n * o componente fará uma requisição `POST` na url especificada nesta propriedade passando o objeto contendo o valor definido pelo usuário.\n *\n * ```\n * body {\n * email: email,\n * retry?: retry\n * }\n * ```\n *\n *\n * #### Recuperação por email\n * Para a recuperação de senha por **email**, o código de resposta HTTP de status esperado é `204`.\n *\n * Em caso de **sucesso**, será exibida a modal de confirmação de e-mail para o usuário.\n *\n *\n * > A ação **Reenviar** na tela de confirmação efetua uma nova requisição\n * passando-se o objeto com incremento para o valor da propriedade **retry**.\n *\n * *Processo finalizado.*\n *\n *\n * #### Recuperação por SMS\n * Se a opção de recuperação for por **SMS**, o código de status de sucesso deve ser `200`.\n * Em caso de **sucesso**, abre-se a modal de digitação de código SMS e a resposta\n * desta requisição deve retornar uma definição de dados abaixo:\n *\n * ```\n * 200:\n * {\n * hash: hash,\n * urlValidationCode?: url\n * }\n * ```\n *\n *\n * - O **hash** será o código de validação da solicitação do SMS para ser enviado juntamente com o código de verificação do SMS;\n * - **urlValidationCode** é a url usada para validação do código enviado por SMS.\n *\n *\n * > Caso não seja passado urlValidationCode, o endpoint usado para validação do código será `<p-url-recovery>/validation`.\n *\n *\n * #### Validação do código SMS\n * Ao digitar um valor válido no campo de código SMS e pressionar **continuar**, o componente fará uma requisição `POST` contendo:\n *\n * ```\n * POST /<p-url-recovery>/validation OU /<urlValidationCode>\n * Body {\n * hash: hash,\n * code: code\n * }\n * ```\n *\n *\n * O código de resposta HTTP de status esperado é `200`.\n *\n * Em caso de **erro** na validação do código SMS, a modal se mantém com o campo para digitação\n * de código SMS\n *\n *\n * > Pode-se atribuir a mensagem de erro (message) para o atributo `p-code-error` conforme retorno abaixo:\n *\n * ```\n * 400\n * {\n * error {\n * message: 'Error Message'\n * }\n * }\n * ```\n *\n *\n * Em caso de **sucesso**, espera-se a resposta desta requisição retornando a seguinte definição:\n *\n * ```\n * 200:\n * {\n * token: token,\n * urlChangePassword?: url\n * }\n * ```\n *\n *\n * - **token**: Token de alteração de senha;\n * - **urlChangePassword**: url para o formulário de alteração de senha.\n *\n *\n * O componente está configurado para redirecionar para a url estabelecida em `urlChangePassword`.\n *\n * > Caso não seja passado valor para urlChangePassword,\n * a url usada para validação será a `<p-url-recovery>/changePassword?token=<token>`.\n *\n * *Processo finalizado.*\n */\n @Input('p-url-recovery') urlRecovery?: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Ação contendo como parâmetro o código enviado por SMS e digitado pelo usuário.\n *\n * > Esta propriedade será ignorada se for definido valor para a propriedade `p-url-recovery`.\n */\n @Output('p-code-submit') codeSubmit = new EventEmitter<any>();\n\n /**\n * @optional\n *\n * @description\n *\n * Ação contendo o email como parâmetro e que é executada quando o usuário clica sobres os botões de 'enviar' e 'reenviar' e-mail.\n *\n * > Esta propriedade será ignorada se for definido valor para a propriedade `p-url-recovery`.\n */\n @Output('p-submit') submit = new EventEmitter<any>();\n\n email: string;\n maxLength = PoModalPasswordRecoveryDefaultMaxLength;\n minLength = PoModalPasswordRecoveryDefaultMinLength;\n modalPasswordRecoveryTypeAll: boolean;\n phone: string;\n smsCode: string;\n smsCodeErrorMessage: string;\n\n literals: {\n cancelButton: string;\n closeButton: string;\n continueButton: string;\n email: string;\n emailErrorMessagePhrase: string;\n emailSentConfirmationPhrase: string;\n emailSentTitle: string;\n forgotPasswordTitle: string;\n insertCode: string;\n insertEmail: string;\n insertPhone: string;\n phoneErrorMessagePhrase: string;\n prepositionIn: string;\n prepositionOr: string;\n recoveryPasswordPhrase: string;\n resendEmailButton: string;\n resendSmsCodePhrase: string;\n sendAgain: string;\n sendAgainPhrase: string;\n sendButton: string;\n sms: string;\n smsCode: string;\n smsCodeErrorMessagePhrase: string;\n sentSmsCodePhrase: string;\n supportContact: string;\n telephone: string;\n typeCodeTitle: string;\n } = poModalPasswordRecoveryLiterals[poLocaleDefault];\n\n private _componentsSize?: string;\n private _contactEmail: string;\n private _phoneMask = PoModalPasswordRecoveryDefaultPhone;\n private _type: PoModalPasswordRecoveryType = PoModalPasswordRecoveryTypeDefault;\n\n /**\n * @optional\n *\n * @description\n *\n * Define o tamanho dos componentes de formulário no modal:\n * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n * - `medium`: aplica a medida medium de cada componente.\n *\n * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n *\n * @default `medium`\n */\n @Input('p-components-size') set componentsSize(value: string) {\n this._componentsSize = validateSizeFn(value);\n }\n\n get componentsSize(): string {\n return this._componentsSize ?? getDefaultSizeFn();\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Definição do e-mail que é exibido na mensagem para contato de suporte.\n */\n @Input('p-contact-email') set contactEmail(value: string) {\n this._contactEmail = value;\n\n this.smsCodeErrorMessage = this.concatenateSMSErrorMessage(value);\n }\n\n get contactEmail() {\n return this._contactEmail;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Definição da mascara do campo de telefone.\n *\n * @default `(99) 99999-9999`\n */\n @Input('p-phone-mask') set phoneMask(value: string) {\n this._phoneMask = value || PoModalPasswordRecoveryDefaultPhone;\n this.minLength = this.maxLength = this._phoneMask.length;\n }\n\n get phoneMask() {\n return this._phoneMask;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Define o tipo de recuperação de senha que será exibido.\n *\n * @default `PoModalPasswordRecoveryType.Email`\n *\n */\n @Input('p-type') set type(value: PoModalPasswordRecoveryType) {\n this._type = (<any>Object).values(PoModalPasswordRecoveryType).includes(value)\n ? value\n : PoModalPasswordRecoveryTypeDefault;\n }\n\n get type() {\n return this._type;\n }\n\n constructor(languageService: PoLanguageService) {\n this.literals = {\n ...this.literals,\n ...poModalPasswordRecoveryLiterals[languageService.getShortLanguage()]\n };\n }\n\n private concatenateSMSErrorMessage(value: string) {\n const literalCodeErrorMessage = this.literals.smsCodeErrorMessagePhrase;\n\n return value && value !== ''\n ? `${literalCodeErrorMessage} ${this.literals.prepositionIn} ${value}.`\n : literalCodeErrorMessage;\n }\n\n /**\n * Acão para conclusão de processo e fechamento da modal. Indica-se sua utilização\n * para após o envio e validação do código SMS enviado pelo usuário.\n *\n * > Nas modals em que há a ação de 'cancelar' dispensa-se o uso desta ação pois o componente já trata o fechamento da modal.\n */\n abstract completed(): void;\n\n /**\n * Abre a modal de preenchimento de email ou número de telefone para solicitação de troca de senha.\n */\n abstract open(): void;\n\n /**\n * Abre a modal de confirmação de envio de email.\n */\n abstract openConfirmation(): void;\n\n /**\n * Abre a modal de preenchimento do código SMS enviado ao usuário.\n */\n abstract openSmsCode(): void;\n}\n","import { HttpClient, HttpParams, HttpResponse } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { PoModalPasswordRecovery } from './interfaces/po-modal-password-recovery.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PoModalPasswordRecoveryService {\n private http = inject(HttpClient);\n\n post(\n urlRecovery: string,\n item: PoModalPasswordRecovery,\n params?: HttpParams | { [param: string]: string | Array<string> }\n ): Observable<HttpResponse<object>> {\n return this.http.post<any>(urlRecovery, item, { observe: 'response', params: params });\n }\n}\n","import { Component, Input } from '@angular/core';\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente utilizado para exibição da mensagem customizada de erro em um campo de formulário.\n */\n@Component({\n selector: 'po-modal-password-recovery-error-message',\n templateUrl: './po-modal-password-recovery-error-message.component.html',\n standalone: false\n})\nexport class PoModalPasswordRecoveryErrorMessageComponent {\n /** Texto exibido na mensagem de erro. */\n @Input('p-text') text: string;\n}\n","<div class=\"po-field-container-bottom-text-error po-field-container-error-item\">\n <po-icon p-icon=\"ICON_EXCLAMATION\"></po-icon>\n <span class=\"po-field-error-message\">{{ text }}</span>\n</div>\n","import { Component, OnDestroy, ViewChild, inject } from '@angular/core';\nimport { AbstractControl, NgForm } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\n\nimport {\n PoI18nPipe,\n PoLanguageService,\n PoModalAction,\n PoModalComponent,\n PoRadioGroupOption\n} from '@po-ui/ng-components';\n\nimport { isExternalLink } from '../../utils/util';\n\nimport { PoModalPasswordRecoveryModalContent } from './enums/po-modal-password-recovery-modal-content.enum';\nimport { PoModalPasswordRecoveryType } from './enums/po-modal-password-recovery-type.enum';\nimport { PoModalPasswordRecovery } from './interfaces/po-modal-password-recovery.interface';\nimport { PoModalPasswordRecoveryBaseComponent } from './po-modal-password-recovery-base.component';\nimport { PoModalPasswordRecoveryService } from './po-modal-password-recovery.service';\n\n/**\n * @docsExtends PoModalPasswordRecoveryBaseComponent\n *\n * @example\n *\n * <example name=\"po-modal-password-recovery-basic\" title=\"PO Modal Password Recovery Basic\">\n * <file name=\"sample-po-modal-password-recovery-basic/sample-po-modal-password-recovery-basic.component.html\"> </file>\n * <file name=\"sample-po-modal-password-recovery-basic/sample-po-modal-password-recovery-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-modal-password-recovery-labs\" title=\"PO Modal Password Recovery Labs\">\n * <file name=\"sample-po-modal-password-recovery-labs/sample-po-modal-password-recovery-labs.component.html\"> </file>\n * <file name=\"sample-po-modal-password-recovery-labs/sample-po-modal-password-recovery-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-modal-password-recovery-request\" title=\"PO Modal Password Recovery Request\">\n * <file name=\"sample-po-modal-password-recovery-request/sample-po-modal-password-recovery-request.component.html\"> </file>\n * <file name=\"sample-po-modal-password-recovery-request/sample-po-modal-password-recovery-request.component.ts\"> </file>\n * </example>\n */\n\n@Component({\n selector: 'po-modal-password-recovery',\n templateUrl: './po-modal-password-recovery.component.html',\n standalone: false\n})\nexport class PoModalPasswordRecoveryComponent extends PoModalPasswordRecoveryBaseComponent implements OnDestroy {\n private readonly router = inject(Router);\n private readonly poI18nPipe = inject(PoI18nPipe);\n private readonly poModalPasswordRecoveryService = inject(PoModalPasswordRecoveryService);\n\n @ViewChild('emailForm') emailForm: NgForm;\n\n @ViewChild('recoveryModal', { static: true }) recoveryModalElement: PoModalComponent;\n\n @ViewChild('smsCodeForm') smsCodeForm: NgForm;\n\n chosenTypeFormOption: string = PoModalPasswordRecoveryType.Email;\n codeMask: string = '9 9 9 9 9 9';\n control: AbstractControl;\n emailModal: boolean = true;\n emailModalPhrases = { firstPhrase: null as string, secondPhrase: null as string };\n endpoint: string = '.';\n invalidCode: boolean = false;\n invalidEmail: boolean = false;\n modalTitle: string;\n modalType: PoModalPasswordRecoveryModalContent = PoModalPasswordRecoveryModalContent.Email;\n showCustomCodeError: boolean;\n smsCodeErrorMessagePhrase: string;\n submittedCodeValue = {} as PoModalPasswordRecovery;\n submittedContactValue = {} as PoModalPasswordRecovery;\n\n primaryAction: PoModalAction = { label: undefined, action: () => {} };\n\n secondaryAction: PoModalAction = { label: undefined, action: () => {} };\n\n typeFormOptions: Array<PoRadioGroupOption> = [\n { label: 'e-mail', value: PoModalPasswordRecoveryType.Email },\n { label: 'SMS', value: PoModalPasswordRecoveryType.SMS }\n ];\n\n private passwordRecoverySubscription: Subscription;\n private smsBodyResponse;\n private smsCodeSubscription: Subscription;\n\n constructor() {\n const poLanguageService = inject(PoLanguageService);\n\n super(poLanguageService);\n }\n\n ngOnDestroy() {\n if (this.passwordRecoverySubscription) {\n this.passwordRecoverySubscription.unsubscribe();\n }\n\n if (this.smsCodeSubscription) {\n this.smsCodeSubscription.unsubscribe();\n }\n }\n\n completed() {\n this.cancelAction();\n }\n\n formModelChangesCheck(form: NgForm) {\n const invalidForm = form.invalid;\n this.invalidEmail = invalidForm && form.dirty;\n this.primaryAction.disabled = invalidForm;\n\n if (this.modalType === PoModalPasswordRecoveryModalContent.SMSCode) {\n const codeError: boolean = this.codeError !== undefined && this.codeError !== '';\n this.showCustomCodeError = codeError && form.pristine;\n }\n }\n\n getInputType(type) {\n this.type = type;\n this.pipeModalPhrases();\n setTimeout(() => {\n this.control = this.emailForm.controls[type];\n this.formModelChangesCheck(this.emailForm);\n this.resetFormFields(this.control);\n });\n }\n\n open() {\n const control = this.checkFormType(this.type);\n this.control = this.emailForm.controls[control];\n this.setEmailModalPhrasesAndActions();\n this.formModelChangesCheck(this.emailForm);\n this.recoveryModalElement.open();\n }\n\n openConfirmation() {\n this.modalTitle = this.literals.emailSentTitle;\n this.modalType = PoModalPasswordRecoveryModalContent.Confirmation;\n this.setActions(\n this.cancelAction,\n this.literals.closeButton,\n this.submitAction,\n this.literals.resendEmailButton,\n this.componentsSize,\n false\n );\n }\n\n openSmsCode() {\n this.modalTitle = this.literals.typeCodeTitle;\n this.modalType = PoModalPasswordRecoveryModalContent.SMSCode;\n this.setActions(\n this.submitSmsCodeAction,\n this.literals.continueButton,\n this.cancelAction,\n this.literals.cancelButton,\n this.componentsSize,\n true\n );\n\n setTimeout(() => {\n this.control = this.smsCodeForm.controls['sms'];\n this.formModelChangesCheck(this.smsCodeForm);\n });\n }\n\n resendSmsCode() {\n this.incrementRetryAttempts();\n if (this.urlRecovery) {\n this.submitActionRequest(this.submittedContactValue, this.type);\n } else {\n this.submit.emit(this.submittedContactValue);\n }\n }\n\n private assignSmsResponse(responseObj) {\n this.smsBodyResponse = Object.assign({}, { hash: responseObj.hash });\n if (responseObj.urlValidationCode) {\n this.smsBodyResponse = Object.assign(this.smsBodyResponse, { urlValidationCode: responseObj.urlValidationCode });\n }\n }\n\n private cancelAction() {\n this.resetFormFields(this.control);\n this.submittedContactValue = {};\n\n this.chosenTypeFormOption = PoModalPasswordRecoveryType.Email;\n this.modalType = PoModalPasswordRecoveryModalContent.Email;\n this.type = this.modalPasswordRecoveryTypeAll ? PoModalPasswordRecoveryType.All : this.type;\n this.recoveryModalElement.close();\n }\n\n private checkFormType(type: PoModalPasswordRecoveryType) {\n return type !== PoModalPasswordRecoveryType.All ? type : PoModalPasswordRecoveryType.Email;\n }\n\n private formReset(control: AbstractControl) {\n control.markAsPristine();\n control.markAsUntouched();\n control.updateValueAndValidity();\n }\n\n private getEmitValue(type: PoModalPasswordRecoveryType) {\n return type === PoModalPasswordRecoveryType.SMS ? this.phone : this.email;\n }\n\n private incrementRetryAttempts() {\n this.submittedContactValue.retry = this.submittedContactValue.retry + 1 || 1;\n }\n\n private openExternalLink(url, queryParam) {\n window.open(`${url}?token=${queryParam}`, '_self');\n }\n\n private openInternalLink(url, endpoint, queryParam) {\n this.router.navigate([`${url}/${endpoint}`], { queryParams: { token: queryParam } });\n }\n\n private pipeModalPhrases() {\n if (this.type === PoModalPasswordRecoveryType.SMS) {\n this.emailModalPhrases.firstPhrase = this.setPipeArguments(\n this.literals.recoveryPasswordPhrase,\n this.literals.sms\n );\n this.emailModalPhrases.secondPhrase = this.setPipeArguments(\n this.literals.supportContact,\n this.literals.telephone\n );\n } else {\n this.emailModalPhrases.firstPhrase = this.setPipeArguments(\n this.literals.recoveryPasswordPhrase,\n this.literals.email\n );\n this.emailModalPhrases.secondPhrase = this.setPipeArguments(this.literals.supportContact, this.literals.email);\n }\n }\n\n private redirectToChangePassword(recoveryToken: PoModalPasswordRecovery) {\n const urlChangePassword = recoveryToken.urlChangePassword;\n if (urlChangePassword) {\n isExternalLink(urlChangePassword)\n ? this.openExternalLink(urlChangePassword, recoveryToken.token)\n : this.openInternalLink(this.urlRecovery, urlChangePassword, recoveryToken.token);\n } else {\n const changePasswordEndpoint = 'changePassword';\n this.openInternalLink(this.urlRecovery, changePasswordEndpoint, recoveryToken.token);\n }\n }\n\n private resetFormFields(control) {\n this.formReset(control);\n this.email = undefined;\n this.phone = undefined;\n this.smsCode = undefined;\n }\n\n private setActions(primaryAction, primarylabel, secondaryAction, secondaryLabel, componentsSize, disabled) {\n this.primaryAction.action = () => primaryAction.call(this);\n this.primaryAction.label = primarylabel;\n this.secondaryAction.action = () => secondaryAction.call(this);\n this.secondaryAction.label = secondaryLabel;\n this.componentsSize = componentsSize;\n this.primaryAction.disabled = disabled;\n }\n\n private setEmailModalPhrasesAndActions() {\n this.modalTitle = this.literals.forgotPasswordTitle;\n this.pipeModalPhrases();\n this.modalPasswordRecoveryTypeAll = this.type === PoModalPasswordRecoveryType.All;\n this.setActions(\n this.submitAction,\n this.literals.sendButton,\n this.cancelAction,\n this.literals.cancelButton,\n this.componentsSize,\n true\n );\n }\n\n private setRequestEndpoint(urlValidationCode?: string) {\n const endpoint = urlValidationCode || 'validation';\n\n return `${this.urlRecovery}/${endpoint}`;\n }\n\n private setPipeArguments(literalAttr: string, arg: string) {\n return this.poI18nPipe.transform(literalAttr, arg);\n }\n\n private submitAction() {\n this.modalType === PoModalPasswordRecoveryModalContent.Confirmation\n ? this.incrementRetryAttempts()\n : this.formReset(this.control);\n this.submittedContactValue[this.checkFormType(this.type)] = this.getEmitValue(this.type);\n if (this.urlRecovery) {\n this.submitActionRequest(this.submittedContactValue, this.type);\n } else {\n this.submit.emit(this.submittedContactValue);\n }\n }\n\n private submitActionRequest(data: PoModalPasswordRecovery, modalType: PoModalPasswordRecoveryType) {\n const params = modalType === PoModalPasswordRecoveryType.SMS ? { type: 'sms' } : undefined;\n\n this.passwordRecoverySubscription = this.poModalPasswordRecoveryService\n .post(this.urlRecovery, data, params)\n .subscribe(response => {\n if (\n (modalType === PoModalPasswordRecoveryType.Email || modalType === PoModalPasswordRecoveryType.All) &&\n response.status === 204\n ) {\n this.openConfirmation();\n } else if (modalType === PoModalPasswordRecoveryType.SMS && response.status === 200) {\n this.assignSmsResponse(response.body);\n this.openSmsCode();\n }\n });\n }\n\n private submitSmsCodeAction() {\n this.submittedCodeValue.code = this.smsCode;\n\n if (this.urlRecovery) {\n this.submittedCodeValue = Object.assign(this.submittedCodeValue, { hash: this.smsBodyResponse.hash });\n this.submitSmsCodeRequest(this.submittedCodeValue);\n } else {\n this.codeSubmit.emit(this.submittedCodeValue);\n }\n this.resetFormFields(this.control);\n }\n\n private submitSmsCodeRequest(data: PoModalPasswordRecovery) {\n this.smsCodeSubscription = this.poModalPasswordRecoveryService\n .post(this.setRequestEndpoint(this.smsBodyResponse.urlValidationCode), data)\n .subscribe(\n response => {\n const successStatus = response.status === 200;\n if (successStatus) {\n this.completed();\n this.redirectToChangePassword(response.body);\n }\n },\n error => {\n this.codeError = error.error.message;\n this.openSmsCode();\n }\n );\n }\n}\n","<po-modal\n #recoveryModal\n p-hide-close\n p-size=\"auto\"\n [ngSwitch]=\"modalType\"\n [p-components-size]=\"componentsSize\"\n [p-primary-action]=\"primaryAction\"\n [p-secondary-action]=\"secondaryAction\"\n [p-title]=\"modalTitle\"\n>\n <div class=\"po-modal-password-recovery-wrapper\">\n <div *ngSwitchCase=\"'email'\" class=\"po-modal-password-recovery-content po-row\">\n <div class=\"po-modal-password-recovery-text po-md-12 po-mb-1\">\n {{ emailModalPhrases.firstPhrase }}\n </div>\n <div class=\"po-mb-2 po-md-12\">\n <form #emailForm=\"ngForm\">\n <div *ngIf=\"modalPasswordRecoveryTypeAll\">\n <po-radio-group\n name=\"type\"\n [(ngModel)]=\"chosenTypeFormOption\"\n [p-options]=\"typeFormOptions\"\n [p-size]=\"componentsSize\"\n (p-change)=\"getInputType($event)\"\n >\n </po-radio-group>\n </div>\n\n <div class=\"po-mt-1\">\n <po-email\n *ngIf=\"type === 'email' || type === 'all'\"\n name=\"email\"\n [(ngModel)]=\"email\"\n p-required\n [p-label]=\"literals.insertEmail\"\n [p-size]=\"componentsSize\"\n (p-change-model)=\"formModelChangesCheck(emailForm)\"\n >\n </po-email>\n\n <po-input\n *ngIf=\"type === 'sms'\"\n name=\"sms\"\n [(ngModel)]=\"phone\"\n p-icon=\"ICON_TELEPHONE\"\n p-required\n [p-label]=\"literals.insertPhone\"\n [p-mask]=\"phoneMask\"\n [p-maxlength]=\"maxLength\"\n [p-minlength]=\"minLength\"\n [p-size]=\"componentsSize\"\n (p-change-model)=\"formModelChangesCheck(emailForm)\"\n >\n </po-input>\n </div>\n\n <div class=\"po-field-container-bottom po-field-container-error-container\">\n <po-modal-password-recovery-error-message\n *ngIf=\"invalidEmail && control.dirty\"\n [p-text]=\"type === 'sms' ? literals.phoneErrorMessagePhrase : literals.emailErrorMessagePhrase\"\n >\n </po-modal-password-recovery-error-message>\n </div>\n </form>\n </div>\n <div class=\"po-modal-password-recovery-text po-md-12\">\n {{ emailModalPhrases.secondPhrase }}\n <span *ngIf=\"contactEmail\">\n {{ literals.prepositionIn }}\n <a class=\"po-modal-password-recovery-link\" href=\"mailto:{{ contactEmail }}\" target=\"_self\">\n {{ contactEmail }}\n </a>\n </span>\n {{ endpoint }}\n </div>\n </div>\n\n <div #smsCodeModal *ngSwitchCase=\"'smsCode'\" class=\"po-modal-password-recovery-content po-row\">\n <div class=\"po-modal-password-recovery-text po-md-12 po-mb-1\">{{ literals.sentSmsCodePhrase }}</div>\n <div class=\"po-mb-2 po-md-12\">\n <form #smsCodeForm=\"ngForm\">\n <po-input\n name=\"sms\"\n [(ngModel)]=\"smsCode\"\n p-maxlength=\"11\"\n p-minlength=\"11\"\n p-required\n [p-label]=\"literals.insertCode\"\n [p-mask]=\"codeMask\"\n [p-size]=\"componentsSize\"\n (p-change-model)=\"formModelChangesCheck(smsCodeForm)\"\n >\n </po-input>\n <div class=\"po-field-container-bottom po-field-container-error-container\">\n <po-modal-password-recovery-error-message\n *ngIf=\"invalidEmail\"\n [p-text]=\"smsCodeErrorMessage || this.literals.smsCodeErrorMessagePhrase\"\n >\n </po-modal-password-recovery-error-message>\n <po-modal-password-recovery-error-message *ngIf=\"showCustomCodeError\" [p-text]=\"codeError\">\n </po-modal-password-recovery-error-message>\n </div>\n </form>\n </div>\n <div class=\"po-modal-password-recovery-text po-md-12\">\n {{ literals.sendAgainPhrase }}\n <span class=\"po-modal-password-recovery-link\" (click)=\"resendSmsCode()\">{{ literals.sendAgain }}</span>\n </div>\n </div>\n\n <div #confirmationModal *ngSwitchCase=\"'confirmation'\" class=\"po-modal-password-recovery-content po-row\">\n <img class=\"po-modal-password-recovery-user-image po-mb-2\" src=\"./assets/images/email-sent.svg\" />\n <div class=\"po-modal-password-recovery-text\">\n {{ literals.emailSentConfirmationPhrase }}\n </div>\n </div>\n </div>\n</po-modal>\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\n\nimport { PoFieldModule, PoI18nPipe, PoModalModule, PoIconModule } from '@po-ui/ng-components';\n\nimport { PoModalPasswordRecoveryComponent } from './po-modal-password-recovery.component';\nimport { PoModalPasswordRecoveryErrorMessageComponent } from './po-modal-password-recovery-error-message/po-modal-password-recovery-error-message.component';\nimport { PoModalPasswordRecoveryService } from './po-modal-password-recovery.service';\n\n/**\n * @description\n *\n * Módulo do template do po-modal-password-recovery.\n */\n@NgModule({\n imports: [CommonModule, FormsModule, PoFieldModule, PoModalModule, PoIconModule],\n declarations: [PoModalPasswordRecoveryComponent, PoModalPasswordRecoveryErrorMessageComponent],\n exports: [PoModalPasswordRecoveryComponent, PoModalPasswordRecoveryErrorMessageComponent],\n providers: [PoI18nPipe, PoModalPasswordRecoveryService]\n})\nexport class PoModalPasswordRecoveryModule {}\n","import { Component, EventEmitter, Input, OnInit, Output, inject } from '@angular/core';\n\nimport { PoLanguage, poLanguageDefault, PoLanguageService, PoSelectOption } from '@po-ui/ng-components';\n\nimport { convertToBoolean, getDefaultSizeFn, validateSizeFn } from './../../utils/util';\n\n@Component({\n selector: 'po-page-background',\n templateUrl: './po-page-background.component.html',\n standalone: false\n})\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente para definição de cor de fundo e dos logotipos primário e secundário para os templates\n * de `po-page-login` e demais templates de login.\n */\nexport class PoPageBackgroundComponent implements OnInit {\n poLanguageService = inject(PoLanguageService);\n\n /** Insere uma imagem de destaque ao lado direito do container. */\n @Input('p-background') background?: string;\n\n /** Idioma inicial selecionado no combo */\n @Input('p-initial-language') initialSelectLanguage?: string;\n\n /** Designa se o logotipo deve desaparecer em resoluções menores. */\n @Input('p-hide-logo') hideLogo?: boolean;\n\n /** Texto de destaque sobreposto à imagem de destaque. Essa opção é utilizada em conjunto com o atributo `p-background`. */\n @Input('p-highlight-info') highlightInfo?: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Evento disparado ao selecionar alguma opção no seletor de idiomas.\n * Para este evento será passado como parâmetro o valor de idioma selecionado.\n */\n @Output('p-selected-language') selectedLanguage: EventEmitter<string> = new EventEmitter<string>();\n\n selectedLanguageOption: string;\n\n private _componentsSize?: string = undefined;\n private _showSelectLanguage?: boolean = false;\n private _languagesList: Array<PoLanguage>;\n private _selectLanguageOptions: Array<PoSelectOption>;\n\n /**\n * @optional\n *\n * @description\n *\n * Define o tamanho dos componentes de formulário no template:\n * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n * - `medium`: aplica a medida medium de cada componente.\n *\n * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n *\n * @default `medium`\n */\n @Input('p-components-size') set componentsSize(value: string) {\n this._componentsSize = validateSizeFn(value);\n }\n\n get componentsSize(): string {\n return this._componentsSize ?? getDefaultSizeFn();\n }\n\n /** Lista de idiomas para o combo box */\n @Input('p-languages') set languagesList(value: Array<PoLanguage>) {\n this._languagesList = value;\n this.setLanguageOptions();\n }\n\n get languagesList(): Array<PoLanguage> {\n if (this._languagesList?.length) {\n return this._languagesList;\n }\n return poLanguageDefault;\n }\n\n /** Caminho para a logomarca localizada na parte superior. */\n @Input('p-logo') logo?: string;\n\n /** Texto alternativo para a logomarca. */\n @Input('p-logo-alt') logoAlt?: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Caminho para a logomarca localizada no rodapé.\n */\n @Input('p-secondary-logo') secondaryLogo: string;\n\n /** Define se o seletor de idiomas deve ser exibido. */\n @Input('p-show-select-language') set showSelectLanguage(showSelectLanguage: boolean) {\n this._showSelectLanguage = convertToBoolean(showSelectLanguage);\n }\n get showSelectLanguage() {\n return this._showSelectLanguage;\n }\n\n ngOnInit() {\n this.selectedLanguageOption = this.initialSelectLanguage || this.poLanguageService.getShortLanguage();\n }\n\n onChangeLanguage() {\n this.selectedLanguage.emit(this.selectedLanguageOption);\n }\n\n get selectLanguageOptions(): Array<PoSelectOption> {\n return this._selectLanguageOptions;\n }\n\n private setLanguageOptions() {\n this._selectLanguageOptions = this.languagesList.map<PoSelectOption>(language => ({\n label: language.description,\n value: language.language\n }));\n }\n}\n","<div class=\"po-page-login-container\">\n <div class=\"po-page-login-panel\">\n <div class=\"po-page-background-main-logo\" [class.po-page-background-hide-logo]=\"hideLogo\">\n @if (logo) {\n <po-logo\n p-class=\"po-page-background-main-logo-image\"\n [p-link]=\"false\"\n [p-logo]=\"logo\"\n [p-logo-alt]=\"logoAlt\"\n ></po-logo>\n }\n </div>\n\n <div class=\"po-page-login-body\">\n <div class=\"po-page-login-panel-content\">\n <ng-content></ng-content>\n </div>\n </div>\n <div class=\"po-page-background-footer po-sm-12\">\n <po-divider class=\"po-page-background-footer-mobile-only\"></po-divider>\n\n <div class=\"po-page-background-footer-content\">\n @if (showSelectLanguage) {\n <div class=\"po-page-background-footer-select\">\n <po-select\n name=\"selectedLanguageOption\"\n [(ngModel)]=\"selectedLanguageOption\"\n [p-options]=\"selectLanguageOptions\"\n [p-size]=\"componentsSize\"\n (p-change)=\"onChangeLanguage()\"\n ></po-select>\n </div>\n }\n\n <div\n class=\"po-page-background-secondary-logo\"\n [ngClass]=\"\n showSelectLanguage\n ? 'po-page-background-secondary-logo-right'\n : 'po-page-background-secondary-logo-centered'\n \"\n >\n @if (secondaryLogo) {\n <po-logo\n p-class=\"po-page-background-secondary-logo-image\"\n [p-link]=\"false\"\n [p-logo]=\"secondaryLogo\"\n p-logo-alt=\"secondary-logomarca\"\n ></po-logo>\n }\n </div>\n </div>\n </div>\n </div>\n\n @if (background) {\n <div\n [ngClass]=\"background ? 'po-page-login-highlight-image' : 'po-page-login-highlight-image-off'\"\n [style.background-image]=\"'url(' + background + ')'\"\n >\n <div class=\"po-page-login-highlight-text\">\n <div class=\"po-font-display\">{{ highlightInfo }}</div>\n </div>\n </div>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { PoDividerModule, PoFieldModule, PoLogoModule } from '@po-ui/ng-components';\n\nimport { PoPageBackgroundComponent } from './po-page-background.component';\n\n/**\n * @description\n *\n * Módulo do template do po-page-background.\n */\n@NgModule({\n imports: [CommonModule, FormsModule, RouterModule, PoDividerModule, PoFieldModule, PoLogoModule],\n declarations: [PoPageBackgroundComponent],\n exports: [PoPageBackgroundComponent]\n})\nexport class PoPageBackgroundModule {}\n","/**\n * @usedBy PoPageBlockedUserComponent\n *\n * @description\n *\n * *Enum* para os tipos de motivo de bloqueio de usuário. As informações modificam conforme o motivo selecionado pelo desenvolvedor.\n */\nexport enum PoPageBlockedUserReason {\n /** Sem definição; a tela exibirá conteúdo de bloqueio genérico. */\n None = 'none',\n\n /** Definição para tentativas de acesso esgotadas. */\n ExceededAttempts = 'exceededAttempts',\n\n /** Definição para senha expirada. */\n ExpiredPassword = 'expiredPassword'\n}\n","import { Directive, Input } from '@angular/core';\n\nimport { getDefaultSizeFn, validateSizeFn } from '../../utils/util';\nimport { PoPageBlockedUserReason } from './enums/po-page-blocked-user-reason.enum';\nimport { PoPageBlockedUserReasonParams } from './interfaces/po-page-blocked-user-reason-params.interface';\n\nconst PoPageBlockedUserReasonDefault: PoPageBlockedUserReason = PoPageBlockedUserReason.None;\nconst PoPageBlockedUserParamsDefault: PoPageBlockedUserReasonParams = { attempts: 5, days: 90, hours: 24 };\n\n/**\n * @description\n *\n * O componente `po-page-blocked-user` é utilizado como template para tela de bloqueio de usuário.\n * É possível definir entre três tipos de telas para alertar o usuário sobre um eventual bloqueio de login.\n *\n * Cada modelo de bloqueio possui uma imagem e texto adequados à situação.\n * Os textos das telas são pré-definidos e imutáveis, porém,\n * é possível estipular parâmetros como dias, horas e tentativas de acesso esgotadas.\n *\n * Por fim, há propriedades para adição de telefone e/ou email para contato e também a definição para a url de retorno.\n *\n * Para que as imagens sejam exibidas corretamente, é necessário incluir o caminho delas ao projeto. Para isso, edite\n * o *assets* no arquivo **angular.json** da aplicação na seguinte ordem:\n * ```\n * \"assets\": [\n * \"src/assets\",\n * \"src/favicon.ico\",\n * {\n * \"glob\": \"**\\/*\",\n * \"input\": \"node_modules/@po-ui/style/images\",\n * \"output\": \"assets/images\"\n * }\n * ]\n * ```\n *\n * _______________\n *\n * #### Praticidade\n * O `po-page-blocked-user`, assim como suas propriedades, pode também ser transmitido diretamente pelas configuraçãos de rota e,\n * desta maneira, dispensa-se qualquer menção e/ou importação no restante da aplicação. O exemplo abaixo exemplifica\n * a forma dinâmica com a qual o template pode ser gerado se navegasse para uma rota denominada como `/access-denied`:\n *\n *\n * ```\n * import { PoPageBlockedUserComponent, PoPageBlockedUserReason } from '@po-ui/ng-templates';\n *\n * ...\n * const routes: Routes = [\n * {\n * path: 'access-denied', component: PoPageBlockedUserComponent, data: {\n * contactEmail: 'dev.po@po-ui.com',\n * contactPhone: '0800 1234 000',\n * reason: PoPageBlockedUserReason.ExpiredPassword,\n * urlBack: '/home'\n * }\n * }\n * ...\n * ];\n *\n * @NgModule({\n * imports: [RouterModule.forRoot(routes)],\n * exports: [RouterModule]\n * })\n * export class AppRoutingModule { }\n * ```\n *\n * > É essencial que siga a nomenclatura dos atributos exemplificados acima para sua efetiva funcionalidade.\n *\n */\n@Directive()\nexport class PoPageBlockedUserBaseComponent {\n /**\n * @optional\n *\n * @description\n *\n * Valor para o email de contato que deve ser exibido. A ação está de acordo com o protocolo MAILTO e é possível definir\n * tanto rotas internas quanto externas.\n */\n @Input('p-contact-email') contactEmail: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Valor para o telefone de contato que deve ser exibido. A ação está de acordo com o protocolo TEL.\n *\n * > A propriedade não contem tratamento de máscara, fica a critério do desenvolvedor defini-la.\n */\n @Input('p-contact-phone') contactPhone: string;\n\n /** Caminho para a logomarca localizada na parte superior, caso não seja definida ou seja inválida assume a logo padrão do PO UI. */\n @Input('p-logo') logo?: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Caminho para a logomarca localizada no rodapé.\n */\n @Input('p-secondary-logo') secondaryLogo?: string;\n\n private _componentsSize?: string = undefined;\n private _params: PoPageBlockedUserReasonParams = { ...PoPageBlockedUserParamsDefault };\n private _reason: PoPageBlockedUserReason = PoPageBlockedUserReason.None;\n private _urlBack: string = '/';\n\n /**\n * @optional\n *\n * @description\n *\n * Define o tamanho dos componentes de formulário no template:\n * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n * - `medium`: aplica a medida medium de cada componente.\n *\n * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n *\n * @default `medium`\n */\n @Input('p-components-size') set componentsSize(value: string) {\n this._componentsSize = validateSizeFn(value);\n }\n\n get componentsSize(): string {\n return this._componentsSize ?? getDefaultSizeFn();\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Designação de valores usados para a customização da mensagem de bloqueio.\n * Confira abaixo os valores pré-definidos.\n *\n * ```\n * const customLiterals: PoPageBlockedUserReasonParams = {\n * attempts: 5,\n * days: 90,\n * hours: 24\n * };\n * ```\n *\n * > Salientamos a importância e atenção para configuração desses valores conforme definidos no projeto.\n *\n * > Veja os parâmetros customizáveis na interface `PoPageBlockedUserReasonParams`.\n *\n */\n @Input('p-params') set params(value: PoPageBlockedUserReasonParams) {\n if (value instanceof Object) {\n const keys = Object.keys(value);\n const newParams = { ...PoPageBlockedUserParamsDefault };\n\n keys.forEach(key => {\n newParams[key] = value[key];\n });\n\n this._params = newParams;\n } else {\n this._params = { ...PoPageBlockedUserParamsDefault };\n }\n }\n\n get params() {\n return this._params;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Definição de motivo de bloqueio de usuário. As informações modificam conforme o motivo selecionado.\n *\n * > Veja os valores válidos no *enum* `PoPageBlockedUserReason`.\n *\n * @default `PoPageBlockedUserReason.None`\n */\n @Input('p-reason') set reason(value: PoPageBlockedUserReason) {\n this._reason = (<any>Object).values(PoPageBlockedUserReason).includes(value)\n ? value\n : PoPageBlockedUserReasonDefault;\n }\n\n get reason() {\n return this._reason;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * URL para a ação de retorno da página.\n *\n * @default `/`\n */\n @Input('p-url-back') set urlBack(url: string) {\n this._urlBack = url;\n }\n\n get urlBack() {\n return this._urlBack;\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n ViewChild,\n inject\n} from '@angular/core';\n\nconst poPageBlockedUserContactItemMargin = 16;\n\n@Component({\n selector: 'po-page-blocked-user-contacts',\n templateUrl: './po-page-blocked-user-contacts.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class PoPageBlockedUserContactsComponent {\n private changeDetector = inject(ChangeDetectorRef);\n\n @ViewChild('contactGroup', { static: true }) contactGroup: ElementRef;\n\n @ViewChild('mailItem', { static: true }) mailItem: ElementRef;\n\n @ViewChild('phoneItem', { static: true }) phoneItem: ElementRef;\n\n overflowItem: boolean = true;\n\n private _email: string;\n private _phone: string;\n\n @Input('p-email') set email(value: string) {\n this._email = value;\n\n this.checkContactItemWidth();\n }\n\n get email() {\n return this._email;\n }\n\n @Input('p-phone') set phone(value: string) {\n this._phone = value;\n\n this.checkContactItemWidth();\n }\n\n get phone() {\n return this._phone;\n }\n\n private checkContactItemWidth() {\n this.overflowItem = true;\n\n if (this.phone && this.email) {\n this.changeDetector.detectChanges();\n\n const phoneWidth = this.phoneItem.nativeElement.offsetWidth;\n const mailWidth = this.mailItem.nativeElement.offsetWidth;\n const contactGroupHalfWidth =\n this.contactGroup.nativeElement.offsetWidth / 2 - poPageBlockedUserContactItemMargin;\n\n this.overflowItem =\n phoneWidth > contactGroupHalfWidth || mailWidth > contactGroupHalfWidth - poPageBlockedUserContactItemMargin;\n }\n }\n}\n","<div #contactGroup class=\"po-page-blocked-user-contact-group po-row po-mb-3\">\n <div\n class=\"po-page-blocked-user-contact-item\"\n [class.po-invisible]=\"!phone\"\n [ngClass]=\"overflowItem ? 'po-md-12' : 'po-md-6'\"\n >\n <a\n class=\"po-page-blocked-user-link po-clickable\"\n [class.po-page-blocked-user-contact-content-inline]=\"overflowItem\"\n href=\"tel:{{ phone }}\"\n target=\"_self\"\n >\n <div class=\"po-page-blocked-user-contact-group-item\">\n <po-icon class=\"po-page-blocked-user-contact-icon po-pr-1\" p-icon=\"ICON_TELEPHONE\"></po-icon>\n <div #phoneItem class=\"po-page-blocked-user-contact-text po-font-text\">{{ phone }}</div>\n </div>\n </a>\n </div>\n <div\n class=\"po-page-blocked-user-contact-item po-page-blocked-user-contact-mail\"\n [class.po-invisible]=\"!email\"\n [ngClass]=\"overflowItem ? 'po-md-12' : 'po-md-6'\"\n >\n <a\n class=\"po-page-blocked-user-link po-clickable\"\n [class.po-page-blocked-user-contact-content-inline]=\"overflowItem\"\n href=\"mailto:{{ email }}\"\n target=\"_self\"\n >\n <div class=\"po-page-blocked-user-contact-group-item\">\n <po-icon class=\"po-page-blocked-user-contact-icon po-pr-1\" p-icon=\"ICON_MAIL\"></po-icon>\n <div #mailItem class=\"po-page-blocked-user-contact-text po-font-text\">{{ email }}</div>\n </div>\n </a>\n </div>\n</div>\n","export const poPageBlockedUserLiterals = {\n none: {\n pt: {\n title: 'Opa!',\n firstPhrase: 'Tivemos que bloquear essa tela temporariamente.',\n secondPhrase: 'Mas não se preocupe! Basta fazer seu login novamente.'\n },\n en: {\n title: 'Oops!',\n firstPhrase: 'We had to temporarily block this screen.',\n secondPhrase: 'But do not worry! Just sign in again.'\n },\n es: {\n title: 'Opa!',\n firstPhrase: 'Tuvimos que bloquear esta pantalla temporalmente.',\n secondPhrase: '¡Pero no se preocupe! Sólo tienes que iniciar sesión de nuevo.'\n },\n ru: {\n title: 'Ой!',\n firstPhrase: 'Нам пришлось временно заблокировать этот раздел.',\n secondPhrase: 'Но не волнуйтесь! Просто войдите в систему еще раз.'\n }\n },\n exceededAttempts: {\n pt: {\n title: 'Opa!',\n firstPhrase: `Para sua segurança, após {0} tentativa(s) de senha seu usuário fica bloqueado e não pode ser acessado em {1} hora(s) :( `,\n secondPhrase: 'Isso é para evitar que hackers invadam sua conta.',\n thirdPhrase:\n 'Mas não se preocupe! Se você for o dono da conta e apenas esqueceu sua senha, basta entrar em contato com o suporte.'\n },\n en: {\n title: 'Oops!',\n firstPhrase: `For your security, after {0} attempt(s) of password\n your user gets blocked and can not be accessed in {1} hour(s) :(`,\n secondPhrase: 'This is to prevent hackers from hacking into your account.',\n thirdPhrase:\n 'But do not worry! If you are the owner of the account and just forgot your password, just contact support.'\n },\n es: {\n title: 'Opa!',\n firstPhrase: `Para su seguridad, después de {0} intento(s) de contraseña\n su usuario queda bloqueado y no puede ser accedido en {1} hora(s) :(`,\n secondPhrase: 'Esto es para evitar que los hackers invadan su cuenta.',\n thirdPhrase: `¡Pero no se preocupe! Si usted es el dueño de la cuenta\n y acaba de olvidar su contraseña, simplemente póngase en contacto con el soporte.`\n },\n ru: {\n title: 'Ой!',\n firstPhrase:\n 'Для вашей безопасности, после {0} попыток ввода пароля\\r\\nваш пользователь блокируется и не сможет авторизоваться в течение {1} часа(ов) :(',\n secondPhrase: 'Это делается для того, чтобы хакеры не могли взломать ваш аккаунт.',\n thirdPhrase:\n 'Но не волнуйтесь! Если вы являетесь владельцем учетной записи и просто забыли свой пароль, обратитесь в службу поддержки.'\n }\n },\n expiredPassword: {\n pt: {\n title: 'Opa! Sua senha expirou',\n firstPhrase: `A cada {0} dia(s) é preciso criar uma nova senha por questão de segurança. Após esses {0} dia(s) seu acesso é bloqueado :(`,\n secondPhrase: 'Mas não se preocupe! Basta entrar em contato com o administrador do sistema.'\n },\n en: {\n title: 'Oops! Your Password has expired',\n firstPhrase: `Every {0} day(s) you need to create a new password for security reasons.\n After these {0} day(s) your access is blocked :(`,\n secondPhrase: 'But do not worry! Just contact your system administrator.'\n },\n es: {\n title: 'Opa! Su contraseña ha caducado',\n firstPhrase: `Cada {0} día(s) es necesario crear una nueva contraseña por razones de seguridad.\n Después de estos {0} día(s) su acceso está bloqueado :(`,\n secondPhrase: '¡Pero no se preocupe! Sólo tienes que ponerse en contacto con el administrador del sistema.'\n },\n ru: {\n title: 'Ой! Срок действия вашего пароля истек',\n firstPhrase:\n 'Каждые {0} дней вам необходимо создавать новый пароль в целях безопасности.\\r\\nПосле {0} дней ваш доступ будет заблокирован :(',\n secondPhrase: 'Но не волнуйтесь! Просто обратитесь к своему системному администратору.'\n }\n }\n};\n","import { ChangeDetectorRef, Component, Input, OnChanges, OnInit, SimpleChanges, inject } from '@angular/core';\n\nimport { PoLanguageService, poLocaleDefault } from '@po-ui/ng-components';\n\nimport { poPageBlockedUserLiterals } from './../literals/i18n/po-page-blocked-user-literals';\nimport { PoPageBlockedUserReason } from '../enums/po-page-blocked-user-reason.enum';\nimport { PoPageBlockedUserReasonParams } from '../interfaces/po-page-blocked-user-reason-params.interface';\n\n@Component({\n selector: 'po-page-blocked-user-reason',\n templateUrl: './po-page-blocked-user-reason.component.html',\n standalone: false\n})\nexport class PoPageBlockedUserReasonComponent implements OnChanges, OnInit {\n private changeDetector = inject(ChangeDetectorRef);\n\n @Input('p-params') params: PoPageBlockedUserReasonParams;\n\n @Input('p-reason') reason: PoPageBlockedUserReason;\n\n literalParams;\n literals: { title: string; firstPhrase: string; secondPhrase: string; thirdPhrase: string };\n\n private language: string;\n\n constructor() {\n const languageService = inject(PoLanguageService);\n\n this.language = languageService.getShortLanguage();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.reason || changes.params) {\n this.getLiterals();\n }\n }\n\n ngOnInit() {\n this.getLiterals();\n }\n\n getImageByReasonType() {\n let reasonImage;\n\n switch (this.reason) {\n case 'none': {\n reasonImage = 'big-lock';\n break;\n }\n case 'exceededAttempts': {\n reasonImage = 'blocked-user';\n break;\n }\n case 'expiredPassword': {\n reasonImage = 'expired';\n break;\n }\n }\n return `./assets/images/${reasonImage}.svg`;\n }\n\n getParams() {\n this.literalParams =\n this.reason === 'expiredPassword'\n ? [this.params.days, this.params.days]\n : [this.params.attempts, this.params.hours];\n }\n\n private getLiterals() {\n this.getParams();\n\n this.literals = {\n ...poPageBlockedUserLiterals[this.reason][poLocaleDefault],\n ...poPageBlockedUserLiterals[this.reason][this.language]\n };\n\n this.changeDetector.detectChanges();\n }\n}\n","<div class=\"po-page-blocked-user-reason-content\">\n <img class=\"po-page-blocked-user-image po-mb-3\" [src]=\"getImageByReasonType()\" />\n <div class=\"po-page-blocked-user-header po-mb-md-3 po-row\">\n <div class=\"po-md-12\">{{ literals?.title }}</div>\n </div>\n <div class=\"po-page-blocked-user-text po-font-text po-row\">\n <div class=\"po-mb-sm-2 po-mb-md-3 po-md-12 po-page-blocked-user-text-bold\">\n {{ literals?.firstPhrase | poI18n: literalParams }}\n </div>\n <div class=\"po-mb-sm-2 po-mb-md-3 po-md-12\">{{ literals?.secondPhrase }}</div>\n @if (literals?.thirdPhrase) {\n <div class=\"po-mb-sm-2 po-mb-md-3 po-md-12\">{{ literals?.thirdPhrase }}</div>\n }\n </div>\n</div>\n","import { Component, OnInit, inject } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { PoLanguageService, poLocaleDefault } from '@po-ui/ng-components';\n\nimport { isExternalLink } from '../../utils/util';\n\nimport { PoPageBlockedUserBaseComponent } from './po-page-blocked-user-base.component';\n\nexport const poPageBlockedUserButtonLiterals: object = {\n en: <any>{\n primaryButton: 'Back to home screen'\n },\n es: <any>{\n primaryButton: 'Volver al inicio'\n },\n pt: <any>{\n primaryButton: 'Voltar para o início'\n },\n ru: <any>{\n primaryButton: 'Перейти к началу страницы'\n }\n};\n\n/**\n * @docsExtends PoPageBlockedUserBaseComponent\n *\n * @example\n *\n * <example name=\"po-page-blocked-user-basic\" title=\"PO Page Blocked User Basic\">\n * <file name=\"sample-po-page-blocked-user-basic/sample-po-page-blocked-user-basic.component.html\"> </file>\n * <file name=\"sample-po-page-blocked-user-basic/sample-po-page-blocked-user-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-blocked-user-labs\" title=\"PO Page Blocked User Labs\">\n * <file name=\"sample-po-page-blocked-user-labs/sample-po-page-blocked-user-labs.component.html\"> </file>\n * <file name=\"sample-po-page-blocked-user-labs/sample-po-page-blocked-user-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-blocked-user-exceeded-attempts\" title=\"PO Page Blocked User Exceeded Attempts\">\n * <file name=\"sample-po-page-blocked-user-exceeded-attempts/sample-po-page-blocked-user-exceeded-attempts.component.html\"> </file>\n * <file name=\"sample-po-page-blocked-user-exceeded-attempts/sample-po-page-blocked-user-exceeded-attempts.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-blocked-user-expired-password\" title=\"PO Page Blocked User Expired Password\">\n * <file name=\"sample-po-page-blocked-user-expired-password/sample-po-page-blocked-user-expired-password.component.html\"> </file>\n * <file name=\"sample-po-page-blocked-user-expired-password/sample-po-page-blocked-user-expired-password.component.ts\"> </file>\n * </example>\n */\n\n@Component({\n selector: 'po-page-blocked-user',\n templateUrl: './po-page-blocked-user.component.html',\n standalone: false\n})\nexport class PoPageBlockedUserComponent extends PoPageBlockedUserBaseComponent implements OnInit {\n private activatedRoute = inject(ActivatedRoute);\n private router = inject(Router);\n\n literals;\n\n constructor() {\n const languageService = inject(PoLanguageService);\n\n super();\n\n const language = languageService.getShortLanguage();\n\n this.literals = {\n ...poPageBlockedUserButtonLiterals[poLocaleDefault],\n ...poPageBlockedUserButtonLiterals[language]\n };\n }\n\n ngOnInit() {\n this.checkingForRouteMetadata(this.activatedRoute.snapshot.data);\n }\n\n navigateTo(url: string) {\n isExternalLink(url) ? window.open(url) : this.router.navigate([url || '/']);\n }\n\n private checkingForMetadataProperty(object, property) {\n if (Object.prototype.hasOwnProperty.call(object, property)) {\n return object[property];\n }\n }\n\n private checkingForRouteMetadata(data) {\n if (Object.keys(data).length !== 0) {\n this.contactEmail = this.checkingForMetadataProperty(data, 'contactEmail') || this.contactEmail;\n this.contactPhone = this.checkingForMetadataProperty(data, 'contactPhone') || this.contactPhone;\n this.reason = this.checkingForMetadataProperty(data, 'reason') || this.reason;\n this.urlBack = this.checkingForMetadataProperty(data, 'urlBack') || this.urlBack;\n }\n }\n}\n","<div class=\"po-page-blocked-user-wrapper\">\n <div class=\"po-page-background-wrap\">\n <po-page-background\n [p-hide-logo]=\"true\"\n [p-logo]=\"logo\"\n [p-secondary-logo]=\"secondaryLogo\"\n [p-components-size]=\"componentsSize\"\n >\n <po-page-blocked-user-reason [p-params]=\"params\" [p-reason]=\"reason\"> </po-page-blocked-user-reason>\n\n <div class=\"po-page-blocked-user-mobile-bottom-alignment\">\n <po-page-blocked-user-contacts [p-email]=\"contactEmail\" [p-phone]=\"contactPhone\">\n </po-page-blocked-user-contacts>\n\n <div class=\"po-row\">\n <po-button\n class=\"po-lg-12 po-sm-12 po-page-blocked-user-button\"\n p-kind=\"primary\"\n [p-label]=\"literals?.primaryButton\"\n [p-size]=\"componentsSize\"\n (p-click)=\"navigateTo(urlBack)\"\n >\n </po-button>\n </div>\n </div>\n </po-page-background>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { PoModule } from '@po-ui/ng-components';\n\nimport { PoPageBackgroundModule } from '../po-page-background/index';\nimport { PoPageBlockedUserComponent } from './po-page-blocked-user.component';\nimport { PoPageBlockedUserContactsComponent } from './po-page-blocked-user-contacts/po-page-blocked-user-contacts.component';\nimport { PoPageBlockedUserReasonComponent } from './po-page-blocked-user-reason/po-page-blocked-user-reason.component';\n\n/**\n * @description\n *\n * Módulo do template do po-page-blocked-user.\n */\n@NgModule({\n imports: [CommonModule, RouterModule, PoModule, PoPageBackgroundModule],\n declarations: [PoPageBlockedUserComponent, PoPageBlockedUserContactsComponent, PoPageBlockedUserReasonComponent],\n exports: [PoPageBlockedUserComponent, PoPageBlockedUserContactsComponent, PoPageBlockedUserReasonComponent]\n})\nexport class PoPageBlockedUserModule {}\n","export const poPageChangePasswordLiterals = {\n en: <any>{\n backButton: 'Back',\n confirmPassword: 'Confirm password',\n createNewPassword: 'Create new password',\n createNewPasswordPhrase: 'Protect your account with a personal password created by you',\n currentPassword: 'Current password',\n enterSystemButton: 'Enter the system',\n forgotPassword: 'Forgot your password?',\n newPassword: 'New password',\n passwordSuccessfullyCreated: 'Password successfully created!',\n passwordSuccessfullyUpdated: 'Password successfully updated!',\n requirements: 'Password requirements',\n safetyTips: 'Safety tips!',\n safetyTipsFirst: 'is used in other accounts;',\n safetyTipsPhrase: 'Avoid a password that:',\n safetyTipsSecond: 'has personal information like your name, nickname or family names;',\n safetyTipsThird: 'that uses obvious sequences like \"123\" or obvious words like \"password\";',\n saveButton: 'Save'\n },\n es: <any>{\n backButton: 'Volver',\n confirmPassword: 'Confirmar seña',\n createNewPassword: 'Crear nueva contraseña',\n createNewPasswordPhrase: 'Proteger su cuenta con una contraseña personal creada por usted',\n currentPassword: 'Contraseña actual',\n enterSystemButton: 'Entrar en el sistema',\n forgotPassword: '¿Olvidaste tu contraseña?',\n newPassword: 'Nueva contraseña',\n passwordSuccessfullyCreated: 'Contraseña creada correctamente!',\n passwordSuccessfullyUpdated: 'Contraseña correctamente actualizada!',\n requirements: 'Requisitos de contraseña',\n safetyTips: 'Consejos de seguridad!',\n safetyTipsFirst: 'se utilice en otras cuentas;',\n safetyTipsPhrase: 'Evite una contraseña que:',\n safetyTipsSecond: 'utiliza información personal como su nombre, apellido o nombre de familia;',\n safetyTipsThird: 'utilice secuencias muy obvias como \"1234\" o \"abcd\" o palabras obvias como \"contraseña\";',\n saveButton: 'Guardar'\n },\n pt: <any>{\n backButton: 'Voltar',\n confirmPassword: 'Confirmar senha',\n createNewPassword: 'Criar nova senha',\n createNewPasswordPhrase: 'Proteja sua conta com uma senha pessoal criada por você',\n currentPassword: 'Senha atual',\n enterSystemButton: 'Entrar no sistema',\n forgotPassword: 'Esqueceu sua senha?',\n newPassword: 'Nova senha',\n passwordSuccessfullyCreated: 'Senha criada com sucesso!',\n passwordSuccessfullyUpdated: 'Senha alterada com sucesso!',\n requirements: 'Requisitos de senha',\n safetyTips: 'Dicas de segurança!',\n safetyTipsFirst: 'seja usada em outras contas;',\n safetyTipsPhrase: 'Evite uma senha que:',\n safetyTipsSecond: 'usa informações pessoais como seu nome, apelido ou nome de familiares;',\n safetyTipsThird: 'use sequências muito óbvias como \"1234\" ou \"abcd\" ou palavras óbvias como “senha”;',\n saveButton: 'Salvar'\n },\n ru: <any>{\n backButton: 'возвращение',\n confirmPassword: 'Подтвердите пароль',\n createNewPassword: 'Создать новый пароль',\n createNewPasswordPhrase: 'Защитите свой аккаунт с помощью личного пароля.',\n currentPassword: 'Текущий пароль',\n enterSystemButton: 'Вход в систему',\n forgotPassword: 'Забыли пароль?',\n newPassword: 'Новый пароль',\n passwordSuccessfullyCreated: 'Пароль успешно создан!',\n passwordSuccessfullyUpdated: 'Пароль успешно изменен!',\n requirements: 'Требования к паролю',\n safetyTips: 'Советы по безопасности!',\n safetyTipsFirst: 'использоваться на других счетах;',\n safetyTipsPhrase: 'Избегайте пароля, который:',\n safetyTipsSecond: 'использует личную информацию, такую как ваше имя, фамилию или фамилию;',\n safetyTipsThird:\n 'используйте очень очевидные строки, такие как \"1234\" или \"abcd\", или такие очевидные слова, как \"пароль\";',\n saveButton: 'экономить'\n }\n};\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\n\nimport { PoModalAction } from '@po-ui/ng-components';\n\nimport { convertToBoolean, getDefaultSizeFn, isExternalLink, isTypeof, validateSizeFn } from '../../utils/util';\n\nimport { PoPageChangePasswordRecovery } from './interfaces/po-page-change-password-recovery.interface';\nimport { PoPageChangePasswordRequirement } from './interfaces/po-page-change-password-requirement.interface';\n\n/**\n * @description\n *\n * O componente `po-page-change-password` é utilizado como template para tela de cadastro ou alteração de senha.\n *\n * Apresenta dicas e regras para senhas mais seguras e também possibilidade de personalizar o redirecionamento para as telas\n * 'esqueceu a senha', 'voltar' e 'entrar no sistema'. Os textos das telas são pré-definidos e imutáveis.\n *\n * A propriedade `p-url-new-password` automatiza a rotina do template e simplifica o processo de cadastro/alteração de senha, bastando\n * definir uma url para POST das informações digitadas pelo usuário. A flexibilidade e praticidade podem chegar a um nível em que o\n * desenvolvimento da aplicação no *client side* é desprovida de qualquer código-fonte relacionado à rotina de cadastro/alteração de senha.\n * Seu detalhamento para uso pode ser visto logo abaixo em *propriedades*.\n * Caso julgue necessário, pode-se também definir manualmente a rotina do componente.\n *\n * Para que as imagens sejam exibidas corretamente, é necessário incluir o caminho delas ao projeto. Para isso, edite\n * o *assets* no arquivo **angular.json** da aplicação na seguinte ordem:\n * ```\n * \"assets\": [\n * \"src/assets\",\n * \"src/favicon.ico\",\n * {\n * \"glob\": \"**\\/*\",\n * \"input\": \"node_modules/@po-ui/style/images\",\n * \"output\": \"assets/images\"\n * }\n * ]\n * ```\n */\n@Directive()\nexport abstract class PoPageChangePasswordBaseComponent {\n /**\n * @optional\n *\n * @description\n *\n * Caminho para a logomarca localizada na parte superior.\n *\n * > Caso seja indefinida o espaço se mantém preservado porém vazio.\n */\n @Input('p-logo') logo?: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Caminho para a logomarca localizada no rodapé.\n */\n @Input('p-secondary-logo') secondaryLogo?: string;\n\n /**\n * Token para solicitação de troca/recuperação de senha.\n *\n * > Esta propriedade será ignorada caso exista um token como parâmetro na URL inicial do template.\n */\n @Input('p-token') token?: string;\n\n /**\n * @optional\n *\n * @description\n *\n * URL para a ação de retorno da página.\n *\n * > O botão `Voltar` aparece apenas para telas de alteração de senha, ou seja, só aparece se a propriedade `p-hide-current-password` for\n * falsa.\n *\n * @default `/`\n */\n @Input('p-url-back') urlBack: string = '/';\n\n /**\n * Endpoint usado pelo template para realizar um POST. Quando preenchido, o método `p-submit` será ignorado e o componente adquirirá\n * automatização para o processo de cadastro/troca de senha.\n *\n * ### Processo\n * Ao digitar um valor válido nos campos de senha e pressionar **salvar**,\n * o componente fará uma requisição `POST` na url especificada nesta propriedade passando o objeto contendo os valores definidos pelo\n * usuário.\n *\n * ```\n * body {\n * token?: token,\n * oldPassword?: oldPassword,\n * newPassword: newPassword\n * }\n * ```\n *\n * O código de resposta HTTP de status esperado é `204`.\n *\n * Em caso de **sucesso**, será exibida a modal de confirmação de senha alterada.\n *\n * > O token será informado pela propriedade `p-token`do componente ou por um *query parameter* na URL do template.\n *\n * *Processo finalizado.*\n *\n * _______________\n *\n * #### Praticidade\n * As informações do serviço de autenticação também podem ser transmitidas diretamente pelas configuraçãos de rota e, desta maneira,\n * dispensa-se qualquer menção e/ou importação do componente `po-page-change-password` no restante da aplicação. O exemplo abaixo\n * exemplifica a forma dinâmica com a qual o template de tela de troca de senha pode ser gerado ao navegar para rota `/change-password`, e\n * também como ele se comunica com o serviço para efetuação do processo de troca de senha do usuário e solicitação de nova senha.\n * Basta definir nas configurações de rota:\n *\n *\n * ```\n * import { PoModalPasswordRecoveryType, PoPageChangePasswordComponent } from '@po-ui/ng-templates';\n *\n * ...\n * const routes: Routes = [\n * {\n * path: 'change-password', component: PoPageChangePasswordComponent, data: {\n * serviceApi: 'https://po-ui.io/sample/api/new-password',\n * recovery: {\n * url: 'https://po-ui.io/sample/api/users',\n * type: PoModalPasswordRecoveryType.All,\n * contactMail: 'dev.po@po-ui.com',\n * phoneMask: '9-999-999-9999'\n * }\n * }\n * }\n * ...\n * ];\n *\n * @NgModule({\n * imports: [RouterModule.forRoot(routes)],\n * exports: [RouterModule]\n * })\n * export class AppRoutingModule { }\n * ```\n *\n *\n * O metadado `serviceApi` deve ser a **url** para requisição dos recursos de troca de senha. E `recovery` é a interface\n * `PoPageChangePasswordRecovery` responsável pelas especificações contidas na modal de recuperação de senha.\n *\n * > É essencial que siga a nomenclatura dos atributos exemplificados acima para sua efetiva funcionalidade.\n *\n */\n @Input('p-url-new-password') urlNewPassword?: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Função executada ao submeter o form pelo botão salvar.\n *\n * Caso definida essa função, a modal de confirmação não aparece, mas pode ser chamada pelo\n * método `openConfirmation`. Exemplo:\n *\n * ```\n * @ViewChild(PoPageChangePasswordComponent) changePassword: PoPageChangePasswordComponent;\n *\n * onSubmit() {\n * this.changePassword.openConfirmation();\n * }\n *\n * ```\n * > Esta propriedade será ignorada se for definido valor para a propriedade `p-url-new-password`.\n */\n @Output('p-submit') submit: EventEmitter<any> = new EventEmitter();\n\n confirmPassword: string;\n currentPassword: string;\n modalAction: PoModalAction;\n newPassword: string;\n recoveryUrlType: string;\n showRequirements: boolean;\n\n protected validatorChange: any;\n\n private _componentsSize?: string = undefined;\n private _hideCurrentPassword: boolean = false;\n private _recovery: string | PoPageChangePasswordRecovery | Function;\n private _requirements: Array<PoPageChangePasswordRequirement> = [];\n private _urlHome: string = '/';\n\n /**\n * @optional\n *\n * @description\n *\n * Define o tamanho dos componentes de formulário no template:\n * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n * - `medium`: aplica a medida medium de cada componente.\n *\n * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n *\n * @default `medium`\n */\n @Input('p-components-size') set componentsSize(value: string) {\n this._componentsSize = validateSizeFn(value);\n }\n\n get componentsSize(): string {\n return this._componentsSize ?? getDefaultSizeFn();\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Esconde o campo `Senha atual` para que o template seja para criação de senha.\n *\n * @default `false`\n */\n @Input('p-hide-current-password') set hideCurrentPassword(value: boolean) {\n this._hideCurrentPassword = convertToBoolean(value);\n }\n\n get hideCurrentPassword(): boolean {\n return this._hideCurrentPassword;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * URL para a ação do link `Esqueceu a senha`.\n *\n * A propriedade aceita os seguintes tipos:\n *\n * - **String**: informe uma url externa ou uma rota válida;\n * - **Function**: pode-se customizar a ação. Para esta possilidade basta atribuir:\n * ```\n * <po-page-change-password>\n * [recovery]=\"this.myFunc.bind(this)\";\n * </po-page-change-password>\n * ```\n *\n * - **PoPageChangePasswordRecovery**: cria-se vínculo automático com o template **po-modal-password-recovery**.\n * O objeto deve conter a **url** para requisição dos recursos e pode-se definir o **tipo** de modal para recuperação de senha,\n * **email** para contato e **máscara** do campo de telefone.\n *\n * > Caso não tenha valor o link `Esqueceu a senha` desaparece.\n */\n @Input('p-recovery') set recovery(value: string | Function | PoPageChangePasswordRecovery) {\n this._recovery = value;\n\n if (isTypeof(value, 'string')) {\n this.recoveryUrlType = isExternalLink(value) ? 'externalLink' : 'internalLink';\n }\n }\n\n get recovery() {\n return this._recovery;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Lista de regras para criação e alteração de senha.\n */\n @Input('p-requirements') set requirements(value: Array<PoPageChangePasswordRequirement>) {\n this._requirements = value || [];\n this.showRequirements = this._requirements.length > 0;\n }\n get requirements() {\n return this._requirements;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * URL para a ação do botão `Entrar no sistema` da modal de confirmação que aparece após salvar a senha ou se chamada pelo método\n * `openConfirmation`.\n *\n * @default `/`\n */\n @Input('p-url-home') set urlHome(value: string) {\n this._urlHome = value;\n this.modalAction.action = this.navigateTo.bind(this, this.urlHome);\n }\n get urlHome() {\n return this._urlHome;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Define a propriedade nativa `autocomplete` do campo como `off`.\n *\n * > No input de senha(`po-password`) será definido como `new-password`.\n *\n * @default `true`\n */\n @Input('p-no-autocomplete-password') noAutocompletePassword: boolean = true;\n\n abstract navigateTo(url: string): void;\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { HttpClient, HttpResponse } from '@angular/common/http';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PoPageChangePasswordService {\n private http = inject(HttpClient);\n\n post(url: string, item: any): Observable<HttpResponse<object>> {\n return this.http.post<any>(url, item, { observe: 'response' });\n }\n}\n","import {\n AfterViewInit,\n Component,\n ComponentRef,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewContainerRef,\n inject\n} from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { Subscription } from 'rxjs';\n\nimport {\n PoComponentInjectorService,\n PoLanguageService,\n PoModalAction,\n PoModalComponent,\n poLocaleDefault\n} from '@po-ui/ng-components';\n\nimport { isExternalLink, isTypeof } from '../../utils/util';\n\nimport { PoModalPasswordRecoveryType } from '../po-modal-password-recovery/enums/po-modal-password-recovery-type.enum';\nimport { PoModalPasswordRecoveryComponent } from '../po-modal-password-recovery/po-modal-password-recovery.component';\nimport { PoPageChangePasswordRecovery } from './interfaces/po-page-change-password-recovery.interface';\nimport { PoPageChangePasswordRequirement } from './interfaces/po-page-change-password-requirement.interface';\nimport { PoPageChangePassword } from './interfaces/po-page-change-password.interface';\nimport { poPageChangePasswordLiterals } from './literals/i18n/po-page-change-password-literals';\nimport { PoPageChangePasswordBaseComponent } from './po-page-change-password-base.component';\nimport { PoPageChangePasswordService } from './po-page-change-password.service';\n\n/**\n * @docsExtends PoPageChangePasswordBaseComponent\n *\n * @example\n *\n * <example name=\"po-page-change-password-basic\" title=\"PO Page Change Password Basic\">\n * <file name=\"sample-po-page-change-password-basic/sample-po-page-change-password-basic.component.html\"> </file>\n * <file name=\"sample-po-page-change-password-basic/sample-po-page-change-password-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-change-password-labs\" title=\"PO Page Change Password Labs\">\n * <file name=\"sample-po-page-change-password-labs/sample-po-page-change-password-labs.component.html\"> </file>\n * <file name=\"sample-po-page-change-password-labs/sample-po-page-change-password-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-change-password-modify\" title=\"PO Page Change Password Modify\">\n * <file name=\"sample-po-page-change-password-modify/sample-po-page-change-password-modify.component.html\"> </file>\n * <file name=\"sample-po-page-change-password-modify/sample-po-page-change-password-modify.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-change-password-create\" title=\"PO Page Change Password Create\">\n * <file name=\"sample-po-page-change-password-create/sample-po-page-change-password-create.component.html\"> </file>\n * <file name=\"sample-po-page-change-password-create/sample-po-page-change-password-create.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-change-password-request\" title=\"PO Page Change Password Request\">\n * <file name=\"sample-po-page-change-password-request/sample-po-page-change-password-request.component.html\"> </file>\n * <file name=\"sample-po-page-change-password-request/sample-po-page-change-password-request.component.ts\"> </file>\n * </example>\n */\n@Component({\n selector: 'po-page-change-password',\n templateUrl: './po-page-change-password.component.html',\n standalone: false\n})\nexport class PoPageChangePasswordComponent\n extends PoPageChangePasswordBaseComponent\n implements AfterViewInit, OnDestroy, OnInit\n{\n private activatedRoute = inject(ActivatedRoute);\n private route = inject(ActivatedRoute);\n private router = inject(Router);\n private service = inject(PoPageChangePasswordService);\n private poComponentInjector = inject(PoComponentInjectorService);\n\n @ViewChild(PoModalComponent, { static: true }) modal: PoModalComponent;\n @ViewChild('pageChangePassword', { read: ViewContainerRef, static: true }) pageChangePassword: ViewContainerRef;\n @ViewChild('passwordForm', { read: NgForm, static: true }) passwordForm: NgForm;\n\n literals: {\n backButton: string;\n confirmPassword: string;\n createNewPassword: string;\n createNewPasswordPhrase: string;\n currentPassword: string;\n enterSystemButton: string;\n forgotPassword: string;\n newPassword: string;\n passwordSuccessfullyCreated: string;\n passwordSuccessfullyUpdated: string;\n requirements: string;\n safetyTips: string;\n safetyTipsPhrase: string;\n safetyTipsFirst: string;\n safetyTipsSecond: string;\n safetyTipsThird: string;\n saveButton: string;\n } = poPageChangePasswordLiterals[poLocaleDefault];\n\n modalAction: PoModalAction = {\n action: this.navigateTo.bind(this, this.urlHome),\n label: this.literals.enterSystemButton\n };\n\n private newPasswordSubscription: Subscription;\n private componentRef: ComponentRef<any> = null;\n\n constructor() {\n const languageService = inject(PoLanguageService);\n\n super();\n\n const language = languageService.getShortLanguage();\n\n this.literals = {\n ...poPageChangePasswordLiterals[poLocaleDefault],\n ...poPageChangePasswordLiterals[language]\n };\n }\n\n ngAfterViewInit() {\n if (this.urlNewPassword) {\n this.subscribeToTokenParameter();\n }\n }\n\n ngOnDestroy() {\n if (this.newPasswordSubscription) {\n this.newPasswordSubscription.unsubscribe();\n }\n }\n\n ngOnInit() {\n this.checkingForRouteMetadata(this.activatedRoute.snapshot.data);\n }\n\n navigateTo(url: string) {\n isExternalLink(url) ? window.open(url) : this.router.navigate([url || '/']);\n }\n\n onForgotPasswordClick(recovery): void {\n if (isTypeof(recovery, 'function')) {\n recovery();\n } else {\n this.createModalPasswordRecoveryComponent(recovery);\n }\n }\n\n onLoginSubmit(): void {\n const form = this.getLoginForm();\n\n if (this.urlNewPassword) {\n this.postUrlNewPassword(form);\n } else if (this.submit && this.submit.observers.length) {\n this.emitSubmit(form);\n }\n }\n\n /**\n * Abre uma modal de confirmação com texto, imagem e botão que redireciona para o link definido na propriedade `p-url-home`\u001c\n */\n openConfirmation() {\n this.modal.open();\n }\n\n validatePassword() {\n const controls = this.passwordForm.form.controls;\n const controlConfirmPassword = controls['confirmPassword'];\n const controlNewPassword = controls['newPassword'];\n\n if (!this.newPassword) {\n this.setFormErrors({ 'required': true }, [controlNewPassword]);\n } else if (!this.confirmPassword) {\n this.setFormErrors({ 'required': true }, [controlConfirmPassword]);\n } else if (this.newPassword && this.confirmPassword && this.newPassword !== this.confirmPassword) {\n this.setFormErrors({ 'equalPassword': true }, [controlNewPassword, controlConfirmPassword]);\n } else {\n this.setFormErrors(null, [controlConfirmPassword, controlNewPassword]);\n }\n\n if (\n this.requirements.length &&\n this.requirements.find(requirement => this.validateRequirement(requirement) === false)\n ) {\n this.setFormErrors({ 'requirement': true }, [controlNewPassword]);\n }\n }\n\n validateRequirement(requirement: PoPageChangePasswordRequirement) {\n return typeof requirement.status === 'function' ? requirement.status(this.newPassword) : requirement.status;\n }\n\n private checkingForMetadataProperty(object, property) {\n if (Object.prototype.hasOwnProperty.call(object, property)) {\n return object[property];\n }\n }\n\n private checkingForRouteMetadata(data) {\n if (Object.keys(data).length !== 0) {\n this.urlNewPassword = this.checkingForMetadataProperty(data, 'serviceApi') || this.urlNewPassword;\n this.recovery = this.checkingForMetadataProperty(data, 'recovery') || this.recovery;\n this.hideCurrentPassword =\n this.checkingForMetadataProperty(data, 'hideCurrentPassword') || this.hideCurrentPassword;\n }\n }\n\n private createModalPasswordRecoveryComponent(recovery: PoPageChangePasswordRecovery) {\n if (this.componentRef) {\n this.poComponentInjector.destroyComponentInApplication(this.componentRef);\n }\n\n this.componentRef = this.poComponentInjector.createComponentInApplication(PoModalPasswordRecoveryComponent);\n this.componentRef.instance.recovery = recovery.url;\n this.componentRef.instance.contactEmail = recovery.contactMail;\n this.componentRef.instance.phoneMask = recovery.phoneMask;\n this.componentRef.instance.type = recovery.type || PoModalPasswordRecoveryType.Email;\n this.componentRef.changeDetectorRef.detectChanges();\n setTimeout(() => {\n this.componentRef.instance.open();\n });\n }\n\n private emitSubmit(form: PoPageChangePassword) {\n this.submit.emit(form);\n }\n\n private getLoginForm(): PoPageChangePassword {\n return {\n currentPassword: this.currentPassword,\n newPassword: this.newPassword\n };\n }\n\n private postUrlNewPassword(form: PoPageChangePassword) {\n form['token'] = this.token;\n\n this.service.post(this.urlNewPassword, form).subscribe(response => {\n if (response.status === 204) {\n this.openConfirmation();\n }\n });\n }\n\n private setFormErrors(error: any, controls?: Array<any>) {\n controls.forEach(control => {\n control.setErrors(error);\n });\n }\n\n private subscribeToTokenParameter() {\n this.route.queryParams.subscribe(params => {\n const token = params['token'];\n\n if (token) {\n this.token = token;\n }\n });\n }\n}\n","<div class=\"po-page-change-password-wrapper\" #pageChangePassword>\n <div class=\"po-page-change-password-container\">\n <po-page-background\n class=\"po-page-change-password\"\n [p-components-size]=\"componentsSize\"\n [p-logo]=\"logo\"\n [p-secondary-logo]=\"secondaryLogo\"\n >\n <div class=\"po-page-blocked-user-header po-row\">\n <div class=\"po-md-12\">{{ literals.createNewPassword }}</div>\n <div class=\"po-md-12 po-text-center po-font-text\">\n {{ literals.createNewPasswordPhrase }}\n </div>\n </div>\n\n <form #passwordForm=\"ngForm\">\n <div class=\"po-row po-mt-3 po-mt-sm-1\">\n <div class=\"po-md-6\" [ngClass]=\"{ 'po-offset-md-3 po-offset-lg-3 po-offset-xl-3': !showRequirements }\">\n @if (!hideCurrentPassword) {\n <div>\n <po-password\n name=\"currentPassword\"\n [(ngModel)]=\"currentPassword\"\n p-required\n [p-label]=\"literals.currentPassword\"\n [p-no-autocomplete]=\"noAutocompletePassword\"\n [p-size]=\"componentsSize\"\n >\n </po-password>\n </div>\n }\n @if (!hideCurrentPassword && recovery) {\n <div class=\"po-text-center po-mb-sm-1 po-mb-2\">\n @if (recoveryUrlType === 'internalLink') {\n <a class=\"po-font-text-bold po-page-change-password-forgot-password\" [routerLink]=\"recovery\">\n {{ literals.forgotPassword }}\n </a>\n }\n @if (recoveryUrlType === 'externalLink') {\n <a class=\"po-font-text-bold po-page-change-password-forgot-password\" [href]=\"recovery\">\n {{ literals.forgotPassword }}\n </a>\n }\n @if (!recoveryUrlType) {\n <a\n class=\"po-font-text-bold po-page-change-password-forgot-password po-clickable\"\n (click)=\"onForgotPasswordClick(recovery)\"\n >\n {{ literals.forgotPassword }}\n </a>\n }\n </div>\n }\n <div>\n <po-password\n name=\"newPassword\"\n [(ngModel)]=\"newPassword\"\n p-required\n [p-label]=\"literals.newPassword\"\n (p-change-model)=\"validatePassword()\"\n [p-no-autocomplete]=\"noAutocompletePassword\"\n [p-size]=\"componentsSize\"\n >\n </po-password>\n </div>\n <div>\n <po-password\n name=\"confirmPassword\"\n [(ngModel)]=\"confirmPassword\"\n p-required\n [p-label]=\"literals.confirmPassword\"\n (p-change-model)=\"validatePassword()\"\n [p-no-autocomplete]=\"noAutocompletePassword\"\n [p-size]=\"componentsSize\"\n >\n </po-password>\n </div>\n </div>\n @if (showRequirements) {\n <div class=\"po-md-6 po-page-change-password-required-container\">\n <po-container>\n <ul class=\"po-page-change-password-required-list\">\n <li class=\"po-page-change-password-required-item\">\n <p class=\"po-mb-1 po-font-text-bold po-page-change-password-required-title\">\n {{ literals?.requirements }}\n </p>\n </li>\n @for (requirement of requirements; track requirement) {\n <li class=\"po-page-change-password-required-item\">\n <po-icon\n class=\"po-icon po-page-change-password-required-icon\"\n [p-icon]=\"\n validateRequirement(requirement)\n ? 'ICON_OK po-page-change-password-required-ok'\n : 'ICON_MINUS po-page-change-password-required-minus'\n \"\n >\n </po-icon>\n <p class=\"po-page-change-password-required-text po-font-text\">\n {{ requirement.requirement }}\n </p>\n </li>\n }\n </ul>\n </po-container>\n </div>\n }\n </div>\n </form>\n\n <po-divider class=\"po-sm-12\"></po-divider>\n\n <div class=\"po-page-change-password-tips po-row\">\n <div class=\"po-md-2 po-mr-3\">\n <img\n class=\"po-page-change-password-lock-image po-mb-3\"\n alt=\"Blocked user image\"\n src=\"./assets/images/big-lock.svg\"\n />\n </div>\n <div class=\"po-md-9 po-page-change-password-tips-text\">\n <div class=\"po-font-text-bold po-pb-1\">{{ literals.safetyTips }}</div>\n <div class=\"po-font-text-small\">\n <div class=\"po-row po-pb-1\">{{ literals.safetyTipsPhrase }}</div>\n <div class=\"po-row po-pb-1\">• {{ literals.safetyTipsFirst }}</div>\n <div class=\"po-row po-pb-1\">• {{ literals.safetyTipsSecond }}</div>\n <div class=\"po-row po-pb-1\">• {{ literals.safetyTipsThird }}</div>\n </div>\n </div>\n </div>\n\n <div class=\"po-page-change-password-buttons po-row\">\n <po-divider class=\"po-sm-12 po-mobile-only\"></po-divider>\n\n @if (!hideCurrentPassword) {\n <po-button\n class=\"po-sm-6 po-mb-sm-1\"\n [p-label]=\"literals.backButton\"\n [p-size]=\"componentsSize\"\n (p-click)=\"navigateTo(urlBack)\"\n >\n </po-button>\n }\n\n <po-button\n [ngClass]=\"hideCurrentPassword ? 'po-md-12' : 'po-sm-6'\"\n p-kind=\"primary\"\n [p-disabled]=\"passwordForm.invalid\"\n [p-label]=\"literals.saveButton\"\n [p-size]=\"componentsSize\"\n (p-click)=\"onLoginSubmit()\"\n >\n </po-button>\n </div>\n </po-page-background>\n </div>\n</div>\n\n<po-modal\n [p-primary-action]=\"modalAction\"\n p-hide-close\n p-size=\"auto\"\n [p-components-size]=\"componentsSize\"\n [p-title]=\"hideCurrentPassword ? literals.passwordSuccessfullyCreated : literals.passwordSuccessfullyUpdated\"\n>\n <div class=\"po-text-center\">\n <img\n alt=\"Blocked user image\"\n class=\"po-page-change-password-lock-image po-mb-3\"\n src=\"./assets/images/success.svg\"\n />\n </div>\n</po-modal>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { PoModule } from '@po-ui/ng-components';\n\nimport { PoPageBackgroundModule } from '../po-page-background/index';\nimport { PoPageChangePasswordComponent } from './po-page-change-password.component';\nimport { PoPageChangePasswordService } from './po-page-change-password.service';\n\n/**\n * @description\n *\n * Módulo do template do po-page-change-password.\n */\n@NgModule({\n imports: [CommonModule, FormsModule, RouterModule, PoModule, PoPageBackgroundModule],\n declarations: [PoPageChangePasswordComponent],\n providers: [PoPageChangePasswordService],\n exports: [PoPageChangePasswordComponent]\n})\nexport class PoPageChangePasswordModule {}\n","import { Injectable, inject } from '@angular/core';\nimport { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from '@angular/common/http';\n\nimport { merge, Observable, of, throwError } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\n\nimport { PoLanguageService, PoNotificationService } from '@po-ui/ng-components';\n\nimport { PoPageDynamicLiterals } from './po-page-dynamic-literals.interface';\n\nexport const poPageDynamicLiterals: { [key: string]: PoPageDynamicLiterals } = {\n en: {\n errorRenderPage: 'Error loading page',\n notPossibleLoadMetadataPage: 'The page metadata could not be loaded'\n },\n es: {\n errorRenderPage: 'Error al cargar la página',\n notPossibleLoadMetadataPage: 'No se pudieron cargar los metadatos de la página.'\n },\n pt: {\n errorRenderPage: 'Erro ao carregar a página',\n notPossibleLoadMetadataPage: 'Não foi possível carregar os metadados da página'\n },\n ru: {\n errorRenderPage: 'Ошибка загрузки страницы',\n notPossibleLoadMetadataPage: 'Не удалось загрузить метаданные страницы'\n }\n};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PoPageDynamicService {\n private http = inject(HttpClient);\n private notification = inject(PoNotificationService);\n\n readonly headers: HttpHeaders = new HttpHeaders({\n 'X-PO-SCREEN-LOCK': 'true'\n });\n\n private endpoint = '/';\n private language: string;\n private metadata: string;\n\n constructor() {\n const languageService = inject(PoLanguageService);\n\n this.language = languageService.getShortLanguage();\n }\n\n configServiceApi(config: { endpoint?: string; metadata?: string } = {}) {\n this.endpoint = config.endpoint;\n this.metadata = config.metadata || this.metadata;\n }\n\n getMetadata<T>(type: string = 'list'): Observable<T> {\n const key = `${this.endpoint}-${type}-metadata`;\n const cache = JSON.parse(localStorage.getItem(key)) || {};\n const metadataUrlBase = this.metadata || `${this.endpoint}/metadata`;\n\n const url = `${metadataUrlBase}?type=${type}&version=${cache.version || ''}`;\n\n return this.http.get<T>(url).pipe(\n map((response: any) => {\n if (response.version !== undefined && response.version === cache.version) {\n return cache;\n }\n\n localStorage.setItem(key, JSON.stringify(response));\n\n return { ...cache, ...response };\n }),\n catchError((error: HttpErrorResponse) => {\n if (Object.keys(cache).length) {\n return of(cache);\n }\n\n const { errorRenderPage, notPossibleLoadMetadataPage } = poPageDynamicLiterals[this.language];\n\n this.notification.warning(notPossibleLoadMetadataPage);\n\n return merge(of({ title: errorRenderPage }), throwError(error));\n })\n );\n }\n\n // Deleta um único recurso\n deleteResource(id?, endpoint?: string): Observable<any> {\n const localEndPoint = this.getLocalEndPoint(endpoint, true);\n const url = id ? `${localEndPoint}/${id}` : localEndPoint;\n return this.http.delete(url, { headers: this.headers });\n }\n\n // Deleta recursos em lote\n deleteResources(ids: Array<any>, endpoint?: string): Observable<any> {\n return this.http.request('delete', `${this.getLocalEndPoint(endpoint)}`, { headers: this.headers, body: ids });\n }\n\n // Busca uma lista de recursos\n getResources(params?: HttpParams, endpoint?: string): Observable<any> {\n return this.http.get(this.getLocalEndPoint(endpoint), { headers: this.headers, params });\n }\n\n // Busca um único recurso\n getResource(id, endpoint?: string): Observable<any> {\n return this.http.get(`${this.getLocalEndPoint(endpoint, true)}/${id}`, { headers: this.headers });\n }\n\n // Cria um recurso\n createResource(resource, endpoint?: string): Observable<any> {\n return this.http.post(`${this.getLocalEndPoint(endpoint)}`, resource, { headers: this.headers });\n }\n\n // Atualiza um recurso\n updateResource(id, resource, endpoint?: string): Observable<any> {\n return this.http.put(`${this.getLocalEndPoint(endpoint, true)}/${id}`, resource, { headers: this.headers });\n }\n\n private getLocalEndPoint(endpoint?: string, checkSingleBar = false) {\n endpoint = endpoint ?? this.endpoint;\n if (checkSingleBar) {\n endpoint = endpoint === '/' ? '' : endpoint;\n }\n return endpoint;\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { Observable, from } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { PoPageDynamicOptionsSchema, PoPageDynamicOptionsProp } from './po-page-dynamic-options.interface';\n\ntype urlOrFunction = string | Function;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PoPageCustomizationService {\n private http = inject(HttpClient);\n\n getCustomOptions<T>(\n origin: urlOrFunction,\n originalOption: T,\n optionSchema: PoPageDynamicOptionsSchema<T>\n ): Observable<T> {\n return this.createObservable<T>(origin).pipe(\n map(newPageOptions => this.mergePageOptions<T>(originalOption, newPageOptions, optionSchema))\n );\n }\n\n changeOriginalOptionsToNewOptions<T extends object, K>(objectToChange: T, newOptions: K) {\n Object.keys(newOptions).forEach(key => {\n const value = newOptions[key];\n if (key in objectToChange) {\n if (Array.isArray(value)) {\n objectToChange[key] = [...value];\n return;\n }\n if (typeof value === 'number' || typeof value === 'string' || typeof value === 'boolean') {\n objectToChange[key] = value;\n return;\n }\n if (value !== null && typeof value === 'object') {\n objectToChange[key] = { ...value };\n }\n }\n });\n }\n\n private createObservable<T>(origin: urlOrFunction): Observable<T> {\n if (typeof origin === 'string') {\n return this.http.post<T>(origin, {});\n }\n return from(Promise.resolve(origin()));\n }\n\n private mergePageOptions<T>(originalOption: T, newPageOptions: T, optionSchema: PoPageDynamicOptionsSchema<T>) {\n const mergePageOptions: T = optionSchema.schema.reduce(\n (objWithNewProp, prop) => ({\n ...objWithNewProp,\n [prop.nameProp]: this.createNewProp(prop, originalOption, newPageOptions)\n }),\n {} as T\n );\n\n Object.keys(mergePageOptions).forEach(key => mergePageOptions[key] === undefined && delete mergePageOptions[key]);\n\n return mergePageOptions;\n }\n\n private createNewProp<T>(prop: PoPageDynamicOptionsProp<T>, originalOption: T, newPageOptions: T) {\n if (prop.merge) {\n return this.mergeOptions(originalOption[prop.nameProp], newPageOptions[prop.nameProp], prop.keyForMerge);\n } else {\n return newPageOptions[prop.nameProp] ?? originalOption[prop.nameProp];\n }\n }\n\n private mergeOptions<T>(originalOptions: Array<T> | T, newOptions: Array<T> | T, filterProp?: keyof T) {\n if (!originalOptions && !newOptions) {\n return;\n }\n if (!newOptions) {\n return originalOptions;\n }\n if (!originalOptions) {\n return newOptions;\n }\n\n if (originalOptions instanceof Array && newOptions instanceof Array) {\n return this.mergeOptionsArray(originalOptions, newOptions, filterProp);\n }\n\n return { ...originalOptions, ...newOptions };\n }\n\n private mergeOptionsArray<T>(originalOptions: Array<T>, newOptions: Array<T>, filterProp: keyof T) {\n const deduplicateNewOptions = newOptions.filter(\n newItem => !originalOptions.find(originalItem => originalItem[filterProp] === newItem[filterProp])\n );\n const mergedOriginalOptions = originalOptions.map(originalItem => {\n const newItem =\n newOptions.find(newOptionsItem => originalItem[filterProp] === newOptionsItem[filterProp]) || originalItem;\n return { ...originalItem, ...newItem };\n });\n return [...mergedOriginalOptions, ...deduplicateNewOptions];\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, of } from 'rxjs';\n\nimport { PoPageDynamicDetailActions } from './interfaces/po-page-dynamic-detail-actions.interface';\nimport { PoPageDynamicDetailBeforeBack } from './interfaces/po-page-dynamic-detail-before-back.interface';\nimport { PoPageDynamicDetailBeforeRemove } from './interfaces/po-page-dynamic-detail-before-remove.interface';\nimport { PoPageDynamicDetailBeforeEdit } from './interfaces/po-page-dynamic-detail-before-edit.interface';\n\ninterface ExecuteActionParameter {\n action: string | Function;\n resource?: any;\n id?: string | number;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PoPageDynamicDetailActionsService {\n private http = inject(HttpClient);\n\n readonly headers: HttpHeaders = new HttpHeaders({\n 'X-PO-SCREEN-LOCK': 'true'\n });\n\n beforeBack(action?: PoPageDynamicDetailActions['beforeBack']): Observable<PoPageDynamicDetailBeforeBack> {\n return this.executeAction({ action });\n }\n\n beforeEdit(\n action: PoPageDynamicDetailActions['beforeEdit'],\n id: any,\n body: any\n ): Observable<PoPageDynamicDetailBeforeEdit> {\n const resource = body ?? {};\n\n return this.executeAction({ action, resource, id });\n }\n\n beforeRemove(\n action: PoPageDynamicDetailActions['beforeRemove'],\n id: any,\n body: any\n ): Observable<PoPageDynamicDetailBeforeRemove> {\n const resource = body ?? {};\n\n return this.executeAction({ action, resource, id });\n }\n\n private executeAction<T>({ action, resource = {}, id }: ExecuteActionParameter): Observable<T> {\n if (!action) {\n return of(<T>{});\n }\n\n if (typeof action === 'string') {\n const url = id ? `${action}/${id}` : action;\n\n return this.http.post<T>(url, resource, { headers: this.headers });\n }\n\n return of(action(id, resource));\n }\n}\n","import { Component, Input, OnDestroy, OnInit, inject } from '@angular/core';\nimport { ActivatedRoute, Route, Router } from '@angular/router';\n\nimport { EMPTY, Observable, Subscription, concat, of, throwError } from 'rxjs';\nimport { catchError, map, switchMap, tap } from 'rxjs/operators';\n\nimport {\n PoBreadcrumb,\n PoDialogConfirmOptions,\n PoDialogService,\n PoLanguageService,\n PoNotificationService,\n PoPageAction,\n poLocaleDefault\n} from '@po-ui/ng-components';\n\nimport {\n convertToBoolean,\n getDefaultSizeFn,\n mapObjectByProperties,\n validateSizeFn,\n valuesFromObject\n} from '../../utils/util';\n\nimport { PoPageDynamicService } from '../../services/po-page-dynamic/po-page-dynamic.service';\nimport { PoPageCustomizationService } from './../../services/po-page-customization/po-page-customization.service';\nimport { PoPageDynamicOptionsSchema } from './../../services/po-page-customization/po-page-dynamic-options.interface';\nimport { PoPageDynamicDetailActions } from './interfaces/po-page-dynamic-detail-actions.interface';\nimport { PoPageDynamicDetailBeforeBack } from './interfaces/po-page-dynamic-detail-before-back.interface';\nimport { PoPageDynamicDetailBeforeEdit } from './interfaces/po-page-dynamic-detail-before-edit.interface';\nimport { PoPageDynamicDetailBeforeRemove } from './interfaces/po-page-dynamic-detail-before-remove.interface';\nimport { PoPageDynamicDetailField } from './interfaces/po-page-dynamic-detail-field.interface';\nimport { PoPageDynamicDetailMetaData } from './interfaces/po-page-dynamic-detail-metadata.interface';\nimport { PoPageDynamicDetailOptions } from './interfaces/po-page-dynamic-detail-options.interface';\nimport { PoPageDynamicDetailActionsService } from './po-page-dynamic-detail-actions.service';\n\ntype UrlOrPoCustomizationFunction = string | (() => PoPageDynamicDetailOptions);\n\nexport const poPageDynamicDetailLiteralsDefault = {\n en: {\n pageActionEdit: 'Edit',\n pageActionRemove: 'Delete',\n pageActionBack: 'Back',\n confirmRemoveTitle: 'Confirm delete',\n confirmRemoveMessage: 'Are you sure you want to delete this record? You can not undo this action.',\n removeNotificationSuccess: 'Item deleted successfully.',\n registerNotFound: 'Register not found.'\n },\n es: {\n pageActionEdit: 'Editar',\n pageActionRemove: 'Borrar',\n pageActionBack: 'Regreso',\n confirmRemoveTitle: 'Confirmar la exclusión',\n confirmRemoveMessage: '¿Está seguro de que desea eliminar este registro? No puede deshacer esta acción.',\n removeNotificationSuccess: 'Elemento eliminado con éxito.',\n registerNotFound: 'Registro no encontrado.'\n },\n pt: {\n pageActionEdit: 'Editar',\n pageActionRemove: 'Excluir',\n pageActionBack: 'Voltar',\n confirmRemoveTitle: 'Confirmar exclusão',\n confirmRemoveMessage: 'Tem certeza de que deseja excluir esse registro? Você não poderá desfazer essa ação.',\n removeNotificationSuccess: 'Item excluído com sucesso.',\n registerNotFound: 'Registro não encontrado.'\n },\n ru: {\n pageActionEdit: 'Редактировать',\n pageActionRemove: 'Удалить',\n pageActionBack: 'Назад',\n confirmRemoveTitle: 'Подтверждение удаления',\n confirmRemoveMessage: 'Вы уверены, что хотите удалить эту запись? Вы не можете отменить это действие.',\n removeNotificationSuccess: 'Элемент успешно удален.',\n registerNotFound: 'Запись не найдена.'\n }\n};\n\n/**\n * @description\n *\n * O `po-page-dynamic-detail` é uma página que serve para exibir registros em detalhes,\n * o mesmo também suporta metadados conforme especificado na documentação.\n *\n *\n * ### Utilização via rota\n *\n * Ao utilizar as rotas para inicializar o template, o `page-dynamic-detail` disponibiliza propriedades que devem ser fornecidas no arquivo de configuração de rotas da aplicação, para\n * poder especificar o endpoint dos dados e dos metadados que serão carregados na inicialização.\n *\n * Exemplo de utilização:\n *\n * Arquivo de configuração de rotas da aplicação: `app-routing.module.ts`\n * ```\n * const routes: Routes = [\n * {\n * path: 'people/:id',\n * component: PoPageDynamicDetailComponent,\n * data: {\n * serviceApi: 'http://localhost:3000/v1/people', // endpoint dos dados\n * serviceMetadataApi: 'http://localhost:3000/v1/metadata', // endpoint dos metadados utilizando o método HTTP Get\n * serviceLoadApi: 'http://localhost:3000/load-metadata' // endpoint de customizações dos metadados utilizando o método HTTP Post\n * }\n * },\n * {\n * path: 'home',\n * component: HomeExampleComponent\n * }\n * ];\n *\n * ```\n * O componente primeiro irá carregar o metadado da rota definida na propriedade serviceMetadataApi\n * e depois irá buscar da rota definida na propriedade serviceLoadApi.\n *\n * A requisição dos metadados é feita na inicialização do template para buscar os metadados da página passando o\n * tipo do metadado esperado e a versão cacheada pelo browser.\n *\n * > Caso o servidor retornar um erro ao recuperar os metadados, serão repassados os metadados salvos em cache,\n * se o cache não existir será disparada uma notificação.\n *\n * O formato esperado na resposta da requisição está especificado na interface\n * [PoPageDynamicDetailMetadata](/documentation/po-page-dynamic-detail#po-page-dynamic-detail-metadata). Por exemplo:\n *\n * ```\n * {\n * version: 1,\n * title: 'Person Detail',\n * fields: [\n * { property: 'id', key: true, disabled: true },\n * { property: 'status' },\n * { property: 'name' },\n * { property: 'nickname' },\n * { property: 'birthdate', label: 'Birth date' },\n * { property: 'genre' },\n * { property: 'city' },\n * { property: 'country' }\n * ]\n * }\n * ```\n *\n * > Caso o endpoint dos metadados não seja especificado, será feito uma requisição utilizando o `serviceApi` da seguinte forma:\n * ```\n * GET {end-point}/metadata?type=detail&version={version}\n * ```\n *\n * #### Tokens customizáveis\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade | Descrição | Valor Padrão |\n * |---------------------|---------------------------------------------|---------------------------------------|\n * | **Header** | | |\n * | `--padding` | Espaçamento do header | `var(--spacing-xs) var(--spacing-md)` |\n * | `--gap` | Espaçamento entre os breadcrumbs e o título | `var(--spacing-md)` |\n * | `--gap-actions` | Espaçamento entre as ações | `var(--spacing-xs)` |\n * | `--font-family` | Família tipográfica do título | `var(--font-family-theme)` |\n * | **Content** | | |\n * | `--padding-content` | Espaçamento do conteúdo | `var(--spacing-xs) var(--spacing-sm)` |\n *\n * @example\n *\n * <example name=\"po-page-dynamic-detail-user\" title=\"PO Page Dynamic Detail User\">\n * <file name=\"sample-po-page-dynamic-detail-user/sample-po-page-dynamic-detail-user.component.html\"> </file>\n * <file name=\"sample-po-page-dynamic-detail-user/sample-po-page-dynamic-detail-user.component.ts\"> </file>\n * </example>\n */\n@Component({\n selector: 'po-page-dynamic-detail',\n templateUrl: './po-page-dynamic-detail.component.html',\n providers: [PoPageDynamicService, PoPageDynamicDetailActionsService],\n standalone: false\n})\nexport class PoPageDynamicDetailComponent implements OnInit, OnDestroy {\n private router = inject(Router);\n private activatedRoute = inject(ActivatedRoute);\n private poNotification = inject(PoNotificationService);\n private poDialogService = inject(PoDialogService);\n private poPageDynamicService = inject(PoPageDynamicService);\n private poPageDynamicDetailActionsService = inject(PoPageDynamicDetailActionsService);\n private poPageCustomizationService = inject(PoPageCustomizationService);\n\n /** Objeto com propriedades do breadcrumb. */\n @Input('p-breadcrumb') breadcrumb?: PoBreadcrumb = { items: [] };\n\n /**\n * Função ou serviço que será executado na inicialização do componente.\n *\n * A propriedade aceita os seguintes tipos:\n * - `string`: *Endpoint* usado pelo componente para requisição via `POST`.\n * - `function`: Método que será executado.\n *\n * O retorno desta função deve ser do tipo `PoPageDynamicDetailOptions`,\n * onde o usuário poderá customizar novos campos, breadcrumb, title e actions\n *\n * Por exemplo:\n *\n * ```\n * getPageOptions(): PoPageDynamicDetailOptions {\n * return {\n * actions:\n * { new: 'new', edit: 'edit/:id', remove: true },\n * fields: [\n * { property: 'idCard', gridColumns: 6 }\n * ]\n * };\n * }\n *\n * ```\n * Para referenciar a sua função utilize a propriedade `bind`, por exemplo:\n * ```\n * [p-load]=\"onLoadOptions.bind(this)\"\n * ```\n */\n @Input('p-load') onLoad: string | (() => PoPageDynamicDetailOptions);\n\n /** Título da página. */\n @Input('p-title') title: string;\n\n /**\n * @description\n *\n * Endpoint usado pelo template para requisição do recurso que serão exibido.\n *\n * Caso a ação `remove` estiver configurada, será feito uma requisição de exclusão nesse mesmo endpoint passando os campos\n * setados como `key: true`.\n *\n * > `DELETE {end-point}/{keys}`\n *\n * ```\n * <po-page-dynamic-detail\n * [p-actions]=\"{ remove: '/' }\"\n * [p-fields]=\"[ { property: 'id', key: true } ]\"\n * p-service=\"/api/po-samples/v1/people\"\n * ...>\n * </po-page-dynamic-detail>\n * ```\n *\n * Resquisição disparada, onde a propriedade `id` é igual a 2:\n *\n * ```\n * DELETE /api/po-samples/v1/people/2 HTTP/1.1\n * Host: localhost:4000\n * Connection: keep-alive\n * Accept: application/json, text/plain\n * ...\n * ```\n *\n * > Caso esteja usando metadados com o template, será disparado uma requisição na inicialização do template para buscar\n * > os metadados da página passando o tipo do metadado esperado e a versão cacheada pelo browser.\n * >\n * > `GET {end-point}/metadata?type=detail&version={version}`\n */\n @Input('p-service-api') serviceApi: string;\n\n literals;\n model: any = {};\n\n private subscriptions: Array<Subscription> = [];\n\n private _actions: PoPageDynamicDetailActions = {};\n private _autoRouter: boolean = false;\n private _componentsSize?: string = undefined;\n private _duplicates: Array<any> = [];\n private _fields: Array<any> = [];\n private _keys: Array<any> = [];\n private _pageActions: Array<PoPageAction> = [];\n\n /**\n * @optional\n *\n * @description\n *\n * Define as ações da página de acordo com a interface `PoPageDynamicDetailActions`.\n */\n @Input('p-actions') set actions(value: PoPageDynamicDetailActions) {\n this._actions = this.isObject(value) ? value : {};\n\n this._pageActions = this.getPageActions(this._actions);\n }\n\n get actions() {\n return { ...this._actions };\n }\n\n /**\n * @todo Validar rotas na mão pois se existir uma rota '**' o catch do navigation não funciona.\n *\n * @optional\n *\n * @description\n *\n * Cria automaticamente as rotas de edição (novo/duplicate) e detalhes caso as ações\n * estejam definidas nas ações.\n *\n * > Para o correto funcionamento não pode haver nenhum rota coringa (`**`) especificada.\n *\n * @default false\n */\n @Input('p-auto-router') set autoRouter(value: boolean) {\n this._autoRouter = convertToBoolean(value);\n }\n\n get autoRouter(): boolean {\n return this._autoRouter;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Define o tamanho dos componentes de formulário no template:\n * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n * - `medium`: aplica a medida medium de cada componente.\n *\n * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n *\n * @default `medium`\n */\n @Input('p-components-size') set componentsSize(value: string) {\n this._componentsSize = validateSizeFn(value);\n }\n\n get componentsSize(): string {\n return this._componentsSize ?? getDefaultSizeFn();\n }\n\n /** Lista dos campos exibidos na página. */\n @Input('p-fields') set fields(value: Array<PoPageDynamicDetailField>) {\n this._fields = Array.isArray(value) ? [...value] : [];\n\n this._keys = this.getKeysByFields(this.fields);\n this._duplicates = this.getDuplicatesByFields(this.fields);\n }\n\n get fields(): Array<PoPageDynamicDetailField> {\n return this._fields;\n }\n\n /* eslint-disable max-params */\n constructor() {\n const languageService = inject(PoLanguageService);\n\n const language = languageService.getShortLanguage();\n\n this.literals = {\n ...poPageDynamicDetailLiteralsDefault[poLocaleDefault],\n ...poPageDynamicDetailLiteralsDefault[language]\n };\n }\n /* eslint-enable max-params */\n\n ngOnInit(): void {\n this.loadDataFromAPI();\n }\n\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.forEach(subscription => {\n subscription.unsubscribe();\n });\n }\n }\n\n get duplicates() {\n return [...this._duplicates];\n }\n\n get keys() {\n return [...this._keys];\n }\n\n get pageActions() {\n return [...this._pageActions];\n }\n\n private remove(\n actionRemove: PoPageDynamicDetailActions['remove'],\n actionBeforeRemove?: PoPageDynamicDetailActions['beforeRemove']\n ) {\n const uniqueKey = this.formatUniqueKey(this.model);\n\n this.subscriptions.push(\n this.poPageDynamicDetailActionsService\n .beforeRemove(actionBeforeRemove, uniqueKey, { ...this.model })\n .pipe(\n switchMap((beforeRemoveResult: PoPageDynamicDetailBeforeRemove) => {\n const newRemoveAction = beforeRemoveResult?.newUrl ?? actionRemove;\n const allowAction = beforeRemoveResult?.allowAction ?? true;\n\n if (!allowAction) {\n return of({});\n }\n\n if (typeof newRemoveAction === 'string') {\n return this.executeRemove(newRemoveAction, uniqueKey);\n } else {\n newRemoveAction(uniqueKey, { ...this.model });\n return EMPTY;\n }\n })\n )\n .subscribe()\n );\n }\n\n private confirmRemove(\n actionRemove: PoPageDynamicDetailActions['remove'],\n actionBeforeRemove: PoPageDynamicDetailActions['beforeRemove']\n ) {\n const confirmOptions: PoDialogConfirmOptions = {\n title: this.literals.confirmRemoveTitle,\n message: this.literals.confirmRemoveMessage,\n confirm: this.remove.bind(this, actionRemove, actionBeforeRemove)\n };\n\n this.poDialogService.confirm(confirmOptions);\n }\n\n private executeRemove(path, uniqueKey: any) {\n return this.poPageDynamicService.deleteResource(uniqueKey).pipe(\n map(() => {\n this.poNotification.success(this.literals.removeNotificationSuccess);\n this.navigateTo({ path: path });\n })\n );\n }\n\n private formatUniqueKey(item) {\n const keys = mapObjectByProperties(item, this.keys);\n\n return valuesFromObject(keys).join('|');\n }\n\n private goBack(actionBack: PoPageDynamicDetailActions['back']) {\n this.subscriptions.push(\n this.poPageDynamicDetailActionsService\n .beforeBack(this.actions.beforeBack)\n .subscribe((beforeBackResult: PoPageDynamicDetailBeforeBack) =>\n this.executeBackAction(actionBack, beforeBackResult?.allowAction, beforeBackResult?.newUrl)\n )\n );\n }\n\n private executeBackAction(actionBack: PoPageDynamicDetailActions['back'], allowAction?, newUrl?: string) {\n const isAllowedAction = typeof allowAction === 'boolean' ? allowAction : true;\n\n if (isAllowedAction) {\n if (actionBack === undefined || typeof actionBack === 'boolean') {\n return window.history.back();\n }\n\n if (typeof actionBack === 'string' || newUrl) {\n return this.router.navigate([newUrl || actionBack]);\n }\n\n return actionBack();\n }\n }\n\n private loadData(id) {\n return this.poPageDynamicService.getResource(id).pipe(\n tap(response => {\n if (!response) {\n this.setUndefinedToModelAndActions();\n } else {\n this.model = response;\n }\n }),\n catchError(error => {\n this.setUndefinedToModelAndActions();\n return throwError(error);\n })\n );\n }\n\n private setUndefinedToModelAndActions() {\n this.model = undefined;\n this.actions = undefined;\n }\n\n private getMetadata(\n serviceApiFromRoute: string,\n onLoad: UrlOrPoCustomizationFunction\n ): Observable<PoPageDynamicDetailMetaData> {\n if (serviceApiFromRoute) {\n return this.poPageDynamicService.getMetadata<PoPageDynamicDetailMetaData>('detail').pipe(\n tap(response => {\n this.autoRouter = response.autoRouter || this.autoRouter;\n this.actions = response.actions || this.actions;\n this.breadcrumb = response.breadcrumb || this.breadcrumb;\n this.fields = response.fields || this.fields;\n this.title = response.title || this.title;\n }),\n switchMap(() => this.loadOptionsOnInitialize(onLoad))\n );\n }\n\n return this.loadOptionsOnInitialize(onLoad);\n }\n\n // @todo Validar rotas na mão pois se existir uma rota '**' o catch do navigation não funciona.\n private navigateTo(\n route: { path: string; component?; url?: string; params?: any },\n forceStopAutoRouter: boolean = false\n ) {\n this.router.navigate([route.url || route.path], { queryParams: route.params }).catch(() => {\n if (forceStopAutoRouter || !this.autoRouter) {\n return;\n }\n\n this.router.config.unshift(<Route>{\n path: route.path,\n component: route.component,\n data: { serviceApi: this.serviceApi, autoRouter: true }\n });\n\n this.navigateTo(route, true);\n });\n }\n\n private openEdit(action: PoPageDynamicDetailActions['edit']) {\n const id = this.formatUniqueKey(this.model);\n\n this.subscriptions.push(\n this.poPageDynamicDetailActionsService\n .beforeEdit(this.actions.beforeEdit, id, this.model)\n .pipe(\n switchMap((beforeEditResult: PoPageDynamicDetailBeforeEdit) =>\n this.executeEditAction(action, beforeEditResult, id)\n )\n )\n .subscribe()\n );\n }\n\n private executeEditAction(\n action: PoPageDynamicDetailActions['edit'],\n beforeEditResult: PoPageDynamicDetailBeforeEdit,\n id: any\n ) {\n const newEditAction = beforeEditResult?.newUrl ?? action;\n const allowAction = beforeEditResult?.allowAction ?? true;\n\n if (!allowAction) {\n return of({});\n }\n\n if (typeof newEditAction === 'string') {\n this.openEditUrl(newEditAction);\n } else {\n newEditAction(id, { ...this.model });\n }\n\n return EMPTY;\n }\n\n private openEditUrl(path: string) {\n const url = this.resolveUrl(this.model, path);\n this.navigateTo({ path, url });\n }\n\n private resolveUrl(item: any, path: string) {\n const uniqueKey = this.formatUniqueKey(item);\n\n return path.replace(/:id/g, uniqueKey);\n }\n\n private getPageActions(actions: PoPageDynamicDetailActions = {}): Array<PoPageAction> {\n const pageActions = [];\n\n if (actions.edit) {\n pageActions.push({ label: this.literals.pageActionEdit, action: this.openEdit.bind(this, actions.edit) });\n }\n\n if (actions.remove) {\n pageActions.push({\n label: this.literals.pageActionRemove,\n action: this.confirmRemove.bind(this, actions.remove, this.actions.beforeRemove),\n type: 'danger'\n });\n }\n\n if (actions.back === undefined || actions.back) {\n pageActions.push({ label: this.literals.pageActionBack, action: this.goBack.bind(this, actions.back) });\n }\n\n return pageActions;\n }\n\n private getKeysByFields(fields: Array<any> = []) {\n return fields.filter(field => field.key === true).map(field => field.property);\n }\n\n private getDuplicatesByFields(fields: Array<any> = []) {\n return fields.filter(field => field.duplicate === true).map(field => field.property);\n }\n\n private isObject(value: any): boolean {\n return !!value && typeof value === 'object' && !Array.isArray(value);\n }\n\n private loadDataFromAPI() {\n const { serviceApi: serviceApiFromRoute, serviceMetadataApi, serviceLoadApi } = this.activatedRoute.snapshot.data;\n const { id } = this.activatedRoute.snapshot.params;\n\n const onLoad = serviceLoadApi || this.onLoad;\n this.serviceApi = serviceApiFromRoute || this.serviceApi;\n\n this.poPageDynamicService.configServiceApi({ endpoint: this.serviceApi, metadata: serviceMetadataApi });\n\n const metadata$ = this.getMetadata(serviceApiFromRoute, onLoad);\n const data$ = this.loadData(id);\n\n this.subscriptions.push(concat(metadata$, data$).subscribe());\n }\n\n private loadOptionsOnInitialize(onLoad: UrlOrPoCustomizationFunction) {\n if (onLoad) {\n return this.getPoDynamicPageOptions(onLoad).pipe(\n tap(responsePoOption =>\n this.poPageCustomizationService.changeOriginalOptionsToNewOptions(this, responsePoOption)\n )\n );\n }\n\n return EMPTY;\n }\n\n private getPoDynamicPageOptions(onLoad: UrlOrPoCustomizationFunction): Observable<PoPageDynamicDetailOptions> {\n const originalOption: PoPageDynamicDetailOptions = {\n fields: this.fields,\n actions: this.actions,\n breadcrumb: this.breadcrumb,\n title: this.title\n };\n\n const pageOptionSchema: PoPageDynamicOptionsSchema<PoPageDynamicDetailOptions> = {\n schema: [\n {\n nameProp: 'fields',\n merge: true,\n keyForMerge: 'property'\n },\n {\n nameProp: 'actions',\n merge: true\n },\n {\n nameProp: 'breadcrumb'\n },\n {\n nameProp: 'title'\n }\n ]\n };\n\n return this.poPageCustomizationService.getCustomOptions(onLoad, originalOption, pageOptionSchema);\n }\n}\n","<po-page-default\n [p-actions]=\"pageActions\"\n [p-breadcrumb]=\"breadcrumb\"\n [p-components-size]=\"componentsSize\"\n [p-title]=\"title\"\n>\n @if (model) {\n <po-dynamic-view [p-components-size]=\"componentsSize\" [p-fields]=\"fields\" [p-value]=\"model\"> </po-dynamic-view>\n } @else {\n <po-widget [p-size]=\"componentsSize\">\n <po-icon p-icon=\"ICON_INFO\"></po-icon>\n <span class=\"po-font-text-large\">\n {{ literals.registerNotFound }}\n </span>\n </po-widget>\n }\n</po-page-default>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PoPageDynamicService } from './po-page-dynamic.service';\n/**\n * @description\n *\n * Módulo do serviço do po-page-dynamic-service.\n */\n@NgModule({\n imports: [CommonModule],\n providers: [PoPageDynamicService]\n})\nexport class PoPageDynamicModule {}\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { PoDynamicModule, PoIconModule, PoModalModule, PoPageModule, PoWidgetModule } from '@po-ui/ng-components';\n\nimport { PoPageDynamicDetailComponent } from './po-page-dynamic-detail.component';\nimport { PoPageDynamicModule } from '../../services/po-page-dynamic/po-page-dynamic.module';\n\n/**\n * @description\n *\n * Módulo do template do po-page-dynamic-detail.\n */\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n RouterModule,\n PoDynamicModule,\n PoIconModule,\n PoModalModule,\n PoPageModule,\n PoWidgetModule,\n PoPageDynamicModule\n ],\n declarations: [PoPageDynamicDetailComponent],\n exports: [PoPageDynamicDetailComponent]\n})\nexport class PoPageDynamicDetailModule {}\n","import { Injectable, inject } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { of, Observable } from 'rxjs';\n\nimport { PoPageDynamicEditActions } from './interfaces/po-page-dynamic-edit-actions.interface';\nimport { PoPageDynamicEditBeforeCancel } from './interfaces/po-page-dynamic-edit-before-cancel.interface';\nimport { PoPageDynamicEditBeforeSave } from './interfaces/po-page-dynamic-edit-before-save.interface';\nimport { PoPageDynamicEditBeforeSaveNew } from './interfaces/po-page-dynamic-edit-before-save-new.interface';\n\ninterface ExecuteActionParameter {\n action: string | Function;\n id?: string | number;\n resource?: any;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PoPageDynamicEditActionsService {\n private http = inject(HttpClient);\n\n readonly headers: HttpHeaders = new HttpHeaders({\n 'X-PO-SCREEN-LOCK': 'true'\n });\n\n beforeCancel(action: PoPageDynamicEditActions['beforeCancel']): Observable<PoPageDynamicEditBeforeCancel> {\n return this.executeAction({ action });\n }\n\n beforeSave(\n action: PoPageDynamicEditActions['beforeSave'],\n id: string,\n body: any\n ): Observable<PoPageDynamicEditBeforeSave> {\n const resource = body ?? {};\n return this.executeAction({ action, resource, id });\n }\n\n beforeSaveNew(\n action: PoPageDynamicEditActions['beforeSaveNew'],\n id: string,\n body: any\n ): Observable<PoPageDynamicEditBeforeSaveNew> {\n const resource = body ?? {};\n return this.executeAction({ action, resource, id });\n }\n\n private executeAction<T>({ action, resource = {}, id }: ExecuteActionParameter): Observable<T> {\n if (!action) {\n return of(<T>{});\n }\n\n if (typeof action === 'string') {\n const url = id ? `${action}/${id}` : action;\n\n return this.http.post<T>(url, resource, { headers: this.headers });\n }\n\n return of(action(resource, id));\n }\n}\n","import { Component, Input, OnDestroy, OnInit, ViewChild, inject } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { concat, EMPTY, Observable, of, Subscription, throwError } from 'rxjs';\nimport { catchError, map, switchMap, tap } from 'rxjs/operators';\n\nimport {\n PoBreadcrumb,\n PoDialogService,\n PoDynamicFormComponent,\n PoGridComponent,\n PoGridRowActions,\n PoLanguageService,\n poLocaleDefault,\n PoNotificationService,\n PoPageAction\n} from '@po-ui/ng-components';\n\nimport {\n convertToBoolean,\n getDefaultSizeFn,\n mapObjectByProperties,\n removeKeysProperties,\n validateSizeFn,\n valuesFromObject\n} from './../../utils/util';\n\nimport { PoPageCustomizationService } from '../../services/po-page-customization/po-page-customization.service';\nimport { PoPageDynamicOptionsSchema } from '../../services/po-page-customization/po-page-dynamic-options.interface';\nimport { PoPageDynamicService } from '../../services/po-page-dynamic/po-page-dynamic.service';\nimport { PoPageDynamicEditActions } from './interfaces/po-page-dynamic-edit-actions.interface';\nimport { PoPageDynamicEditBeforeCancel } from './interfaces/po-page-dynamic-edit-before-cancel.interface';\nimport { PoPageDynamicEditField } from './interfaces/po-page-dynamic-edit-field.interface';\nimport { PoPageDynamicEditLiterals } from './interfaces/po-page-dynamic-edit-literals.interface';\nimport { PoPageDynamicEditMetadata } from './interfaces/po-page-dynamic-edit-metadata.interface';\nimport { PoPageDynamicEditOptions } from './interfaces/po-page-dynamic-edit-options.interface';\nimport { PoPageDynamicEditActionsService } from './po-page-dynamic-edit-actions.service';\n\ntype UrlOrPoCustomizationFunction = string | (() => PoPageDynamicEditOptions);\ntype SaveAction = PoPageDynamicEditActions['save'] | PoPageDynamicEditActions['saveNew'];\n\nexport const poNotificationType = ['error', 'warning'];\nexport const poNotificationTypeDefault = 'warning';\n\nexport const poPageDynamicEditLiteralsDefault = {\n en: <PoPageDynamicEditLiterals>{\n cancelConfirmMessage: 'Are you sure you want to cancel this operation?',\n detailActionNew: 'New',\n pageActionCancel: 'Cancel',\n pageActionSave: 'Save',\n pageActionSaveNew: 'Save and new',\n registerNotFound: 'Register not found.',\n saveNotificationError: 'Mandatory field(s) not filled.',\n saveNotificationSuccessSave: 'Resource successfully saved.',\n saveNotificationSuccessUpdate: 'Resource successfully updated.',\n saveNotificationWarning: 'Form must be filled out correctly.'\n },\n es: <PoPageDynamicEditLiterals>{\n cancelConfirmMessage: 'Está seguro de que desea cancelar esta operación?',\n detailActionNew: 'Nuevo',\n pageActionCancel: 'Cancelar',\n pageActionSave: 'Guardar',\n pageActionSaveNew: 'Guardar y nuevo',\n registerNotFound: 'Registro no encontrado.',\n saveNotificationError: 'Campo(s) obligatorio(s) no completado(s).',\n saveNotificationSuccessSave: 'Recurso salvo con éxito.',\n saveNotificationSuccessUpdate: 'Recurso actualizado con éxito.',\n saveNotificationWarning: 'El formulario debe llenarse correctamente.'\n },\n pt: <PoPageDynamicEditLiterals>{\n cancelConfirmMessage: 'Tem certeza que deseja cancelar esta operação?',\n detailActionNew: 'Novo',\n pageActionCancel: 'Cancelar',\n pageActionSave: 'Salvar',\n pageActionSaveNew: 'Salvar e novo',\n registerNotFound: 'Registro não encontrado.',\n saveNotificationError: 'Campo(s) obrigatório(s) sem preenchimento.',\n saveNotificationSuccessSave: 'Recurso salvo com sucesso.',\n saveNotificationSuccessUpdate: 'Recurso atualizado com sucesso.',\n saveNotificationWarning: 'Formulário precisa ser preenchido corretamente.'\n },\n ru: <PoPageDynamicEditLiterals>{\n cancelConfirmMessage: 'Вы уверены, что хотите отменить эту операцию?',\n detailActionNew: 'Новый',\n pageActionCancel: 'Отменить',\n pageActionSave: 'Сохранить',\n pageActionSaveNew: 'Сохранить и создать',\n registerNotFound: 'Запись не найдена.',\n saveNotificationError: 'Обязательное поле(я) не заполнено.',\n saveNotificationSuccessSave: 'Ресурс успешно сохранен.',\n saveNotificationSuccessUpdate: 'Ресурс успешно обновлен.',\n saveNotificationWarning: 'Форма должна быть заполнена правильно.'\n }\n};\n\n/**\n * @description\n *\n * O `po-page-dynamic-edit` é uma página que pode servir para editar ou criar novos registros,\n * o mesmo também suporta metadados conforme especificado na documentação.\n *\n * ### Utilização via rota\n *\n * Ao utilizar as rotas para inicializar o template, o `page-dynamic-edit` disponibiliza propriedades que devem ser fornecidas no arquivo de configuração de rotas da aplicação, para\n * poder especificar o endpoint dos dados e dos metadados que serão carregados na inicialização.\n *\n * Exemplo de utilização:\n *\n * Arquivo de configuração de rotas da aplicação: `app-routing.module.ts`\n * ```\n * const routes: Routes = [\n * {\n * path: 'people',\n * component: PoPageDynamicEditComponent,\n * data: {\n * serviceApi: 'http://localhost:3000/v1/people', // endpoint dos dados\n * serviceMetadataApi: 'http://localhost:3000/v1/metadata', // endpoint dos metadados utilizando o método HTTP Get\n * serviceLoadApi: 'http://localhost:3000/load-metadata' // endpoint de customizações dos metadados utilizando o método HTTP Post\n * }\n * },\n * {\n * path: 'home',\n * component: HomeExampleComponent\n * }\n * ];\n *\n * ```\n * O componente primeiro irá carregar o metadado da rota definida na propriedade serviceMetadataApi\n * e depois irá buscar da rota definida na propriedade serviceLoadApi.\n *\n * A requisição dos metadados é feita na inicialização do template para buscar os metadados da página passando o\n * tipo do metadado esperado e a versão cacheada pelo browser.\n *\n * > Caso o servidor retornar um erro ao recuperar os metadados, serão repassados os metadados salvos em cache,\n * se o cache não existir será disparada uma notificação.\n *\n * Para carregar com um recurso já existente, deve-se ser incluído um parâmetro na rota chamado `id`:\n *\n * ```\n * {\n * path: 'people/:id',\n * component: PoPageDynamicEditComponent,\n * data: {\n * serviceApi: 'http://localhost:3000/v1/people', // endpoint dos dados\n * serviceMetadataApi: 'http://localhost:3000/v1/metadata', // endpoint dos metadados\n * serviceLoadApi: 'http://localhost:3000/load-metadata' // endpoint de customizações dos metadados\n * }\n * }\n * ```\n *\n * A requisição dos metadados é feita na inicialização do template para buscar os metadados da página passando o\n * tipo do metadado esperado e a versão cacheada pelo browser.\n *\n * O formato esperado na resposta da requisição está especificado na interface\n * [PoPageDynamicEditMetadata](/documentation/po-page-dynamic-edit#po-page-dynamic-edit-metadata). Por exemplo:\n *\n * ```\n * {\n * version: 1,\n * title: 'Person edit',\n * fields: [\n * { property: 'id', key: true, disabled: true },\n * { property: 'status' },\n * { property: 'name' },\n * { property: 'nickname' },\n * { property: 'birthdate', label: 'Birth date' },\n * { property: 'genre' },\n * { property: 'city' },\n * { property: 'country' }\n * ]\n * }\n * ```\n *\n * > Caso o endpoint dos metadados não seja especificado, será feito uma requisição utilizando o `serviceApi` da seguinte forma:\n * ```\n * GET {end-point}/metadata?type=edit&version={version}\n * ```\n *\n * #### Tokens customizáveis\n *\n * | Propriedade | Descrição | Valor Padrão |\n * |---------------------|---------------------------------------------|---------------------------------------|\n * | **Header** | | |\n * | `--padding` | Espaçamento do header | `var(--spacing-xs) var(--spacing-md)` |\n * | `--gap` | Espaçamento entre os breadcrumbs e o título | `var(--spacing-md)` |\n * | `--gap-actions` | Espaçamento entre as ações | `var(--spacing-xs)` |\n * | `--font-family` | Família tipográfica do título | `var(--font-family-theme)` |\n * | **Content** | | |\n * | `--padding-content` | Espaçamento do conteúdo | `var(--spacing-xs) var(--spacing-sm)` |\n *\n * @example\n *\n * <example name=\"po-page-dynamic-edit-basic\" title=\"PO Page Dynamic Edit Basic\">\n * <file name=\"sample-po-page-dynamic-edit-basic/sample-po-page-dynamic-edit-basic.component.html\"> </file>\n * <file name=\"sample-po-page-dynamic-edit-basic/sample-po-page-dynamic-edit-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-dynamic-edit-user\" title=\"PO Page Dynamic Edit - User\">\n * <file name=\"sample-po-page-dynamic-edit-user/sample-po-page-dynamic-edit-user.component.html\"> </file>\n * <file name=\"sample-po-page-dynamic-edit-user/sample-po-page-dynamic-edit-user.component.ts\"> </file>\n * </example>\n */\n@Component({\n selector: 'po-page-dynamic-edit',\n templateUrl: './po-page-dynamic-edit.component.html',\n providers: [PoPageDynamicService],\n standalone: false\n})\nexport class PoPageDynamicEditComponent implements OnInit, OnDestroy {\n private router = inject(Router);\n private activatedRoute = inject(ActivatedRoute);\n private poNotification = inject(PoNotificationService);\n private poDialogService = inject(PoDialogService);\n private poPageDynamicService = inject(PoPageDynamicService);\n private poPageCustomizationService = inject(PoPageCustomizationService);\n private poPageDynamicEditActionsService = inject(PoPageDynamicEditActionsService);\n\n @ViewChild('dynamicForm') dynamicForm: PoDynamicFormComponent;\n @ViewChild('gridDetail') gridDetail: PoGridComponent;\n\n /** Objeto com propriedades do breadcrumb. */\n @Input('p-breadcrumb') breadcrumb?: PoBreadcrumb = { items: [] };\n\n /**\n * @description\n *\n * Endpoint usado pelo template para requisição do recurso que será exibido para edição.\n *\n * Para as ações de `save` e `saveNew`, será feito uma requisição de criação nesse mesmo endpoint passando os valores\n * preenchidos pelo usuário via payload.\n *\n * > `POST {end-point}`\n *\n * ```\n * <po-page-dynamic-edit\n * [p-actions]=\"{ save: '/', saveNew: 'new' }\"\n * [p-fields]=\"[ { property: 'name' }, { property: 'city' } ]\"\n * p-service=\"/api/po-samples/v1/people\"\n * ...>\n * </po-page-dynamic-edit>\n * ```\n *\n * Resquisição disparada, onde a propriedade `name` e `city` foram preenchidas:\n *\n * ```\n * POST /api/po-samples/v1/people HTTP/1.1\n * Host: localhost:4000\n * Connection: keep-alive\n * Accept: application/json, text/plain\n * ...\n * ```\n *\n * Request payload:\n *\n * ```\n * { \"name\": \"Fulano\", \"city\": \"Smallville\" }\n * ```\n *\n * Caso queira que o template carregue um recurso já existente, deve-se ser incluído um parametro na rota chamado `id`.\n *\n * Exemplo de configuração de rota:\n *\n * ```\n * RouterModule.forRoot([\n * ...\n * { path: 'edit/:id', component: PersonEditComponent },\n * ...\n * ],\n * ```\n *\n * Baseado nisso, na inicialização do template, será disparado uma requisição para buscar o recurso que será editado.\n *\n * > `GET {end-point}/{id}`\n *\n * Nos métodos de `save` e `saveNew`, ao invés de um `POST`, será disparado um `PUT`.\n *\n * Resquisição disparada, onde a propriedade `name` e `city` foram preenchidas / atualizadas, e o `id` da url é 2:\n *\n * ```\n * PUT /api/po-samples/v1/people/2 HTTP/1.1\n * Host: localhost:4000\n * Connection: keep-alive\n * Accept: application/json, text/plain\n * ...\n * ```\n *\n * Request payload:\n *\n * ```\n * { \"name\": \"Fulano\", \"city\": \"Metropolis\" }\n * ```\n */\n @Input('p-service-api') serviceApi: string;\n\n /** Título da página. */\n @Input('p-title') title: string;\n\n /**\n * Função ou serviço que será executado na inicialização do componente.\n *\n * A propriedade aceita os seguintes tipos:\n * - `string`: *Endpoint* usado pelo componente para requisição via `POST`.\n * - `function`: Método que será executado.\n *\n * O retorno desta função deve ser do tipo `PoPageDynamicEditOptions`,\n * onde o usuário poderá customizar novos campos, breadcrumb, title e actions\n *\n * Por exemplo:\n *\n * ```\n * getPageOptions(): PoPageDynamicEditOptions {\n * return {\n * actions:\n * { cancel: false, save: 'save/:id', saveNew: 'saveNew' },\n * fields: [\n * { property: 'idCard', gridColumns: 6 }\n * ]\n * };\n * }\n *\n * ```\n * Para referenciar a sua função utilize a propriedade `bind`, por exemplo:\n * ```\n * [p-load]=\"onLoadOptions.bind(this)\"\n * ```\n */\n @Input('p-load') onLoad: string | (() => PoPageDynamicEditOptions);\n\n /**\n * @optional\n *\n * @description\n *\n * Função que será executada após ser realizada a busca dos dados.\n *\n * A propriedade aceita os seguintes tipos:\n * - `function`: Método que será executado.\n *\n * Esta função passa por parâmetro o model e deve recebê-lo de volta com as alterações.\n * Também aceita o retorno de um Observable com o novo model.\n *\n * Por exemplo:\n *\n * ```\n * onLoadCustom(model) {\n * return { ...model, customField: 'newValue' };\n * }\n *\n * ```\n * Para referenciar a sua função utilize a propriedade `bind`, por exemplo:\n * ```\n * [p-load-data]=\"onLoadCustom.bind(this)\"\n * ```\n */\n @Input('p-load-data') onLoadData: ((model: any) => any) | ((model: any) => Observable<any>);\n\n model: any = {};\n\n // beforeSave: return boolean\n // afterSave\n // beforeRemove: return boolean\n // afterRemove\n // beforeInsert: : return boolean\n readonly detailActions: PoGridRowActions = {};\n\n private indexFocus = 0;\n private language: string;\n private subscriptions: Array<Subscription> = [];\n private _actions: PoPageDynamicEditActions = {};\n private _componentsSize?: string = undefined;\n private _literals: PoPageDynamicEditLiterals;\n private _autoRouter: boolean = false;\n private _controlFields: Array<any> = [];\n private _detailFields: Array<any> = [];\n private _duplicates: Array<any> = [];\n private _fields: Array<any> = [];\n private _keys: Array<any> = [];\n private _pageActions: Array<PoPageAction> = [];\n private _notificationType?: string = poNotificationTypeDefault;\n /**\n * @optional\n *\n * @description\n *\n * Ações da página.\n */\n @Input('p-actions') set actions(value: PoPageDynamicEditActions) {\n this._actions = this.isObject(value) ? value : {};\n\n this._pageActions = this.getPageActions(this._actions);\n }\n\n get actions() {\n return { ...this._actions };\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Objeto com as literais usadas no `po-page-dynamic-edit`.\n *\n * É possivel customizar passando um objeto com todas as literais disponíveis\n * ou passando apenas as literais que deseja customizar\n *\n * ```\n * const customLiterals: PoPageDynamicEditLiterals = {\n * detailActionNew: 'Incluir',\n * pageActionCancel: 'Descartar',\n * pageActionSave: 'Gravar',\n * pageActionSaveNew: 'Gravar e incluir',\n * registerNotFound: 'Nenhum registro encontrado.',\n * saveNotificationError: 'Campo(s) obrigatório(s) sem preenchimento.',\n * saveNotificationSuccessSave: 'Item salvo com sucesso.',\n * saveNotificationSuccessUpdate: 'Item atualizado com sucesso.',\n * saveNotificationWarning: 'Necessário preencher o formulário corretamente.'\n * };\n * ```\n *\n * E para carregar as literais customizadas, basta apenas passar o objeto para o componente.\n *\n * ```\n * <po-page-dynamic-edit\n * [p-literals]=\"customLiterals\">\n * </po-page-dynamic-edit>\n * ```\n *\n * > O valor padrão será traduzido de acordo com o idioma configurado no [`PoI18nService`](/documentation/po-i18n) ou *browser*.\n */\n @Input('p-literals') set literals(value: PoPageDynamicEditLiterals) {\n if (value instanceof Object && !(value instanceof Array)) {\n this._literals = {\n ...poPageDynamicEditLiteralsDefault[poLocaleDefault],\n ...poPageDynamicEditLiteralsDefault[this.language],\n ...value\n };\n } else {\n this._literals = poPageDynamicEditLiteralsDefault[this.language];\n }\n\n this._pageActions = this.getPageActions(this._actions);\n }\n\n get literals() {\n return this._literals || poPageDynamicEditLiteralsDefault[this.language];\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Tipo da notificação.\n *\n * É possivel definir o tipo de notificação que será exibido quando houver algum campo inválido no formulário.\n *\n * ```\n * <po-page-dynamic-edit\n * p-notification-type=\"warning\">\n * </po-page-dynamic-edit>\n * ```\n *\n * > Os valores aceitos são 'warning' e 'error'.\n * @default warning\n */\n @Input('p-notification-type') set notificationType(value: string) {\n this._notificationType = poNotificationType.includes(value) ? value : poNotificationTypeDefault;\n }\n\n get notificationType() {\n return this._notificationType;\n }\n\n /**\n * @todo Validar rotas na mão pois se existir uma rota '**' o catch do navigation não funciona.\n *\n * @optional\n *\n * @description\n *\n * Cria automaticamente as rotas de edição (novo/duplicate) e detalhes caso as ações\n * estejam definidas nas ações.\n *\n * > Para o correto funcionamento não pode haver nenhum rota coringa (`**`) especificada.\n *\n * @default false\n */\n @Input('p-auto-router') set autoRouter(value: boolean) {\n this._autoRouter = convertToBoolean(value);\n }\n\n get autoRouter(): boolean {\n return this._autoRouter;\n }\n\n /** Lista dos campos usados na tabela e busca avançada. */\n @Input('p-fields') set fields(value: Array<PoPageDynamicEditField>) {\n this._fields = Array.isArray(value) ? [...value] : [];\n\n this._keys = this.getKeysByFields(this._fields);\n this._duplicates = this.getDuplicatesByFields(this._fields);\n\n this._controlFields = this.getControlFields(this._fields);\n this._detailFields = this.getDetailFields(this._fields);\n }\n\n get fields(): Array<PoPageDynamicEditField> {\n return this._fields;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Define o tamanho dos componentes de formulário no template:\n * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n * - `medium`: aplica a medida medium de cada componente.\n *\n * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n *\n * @default `medium`\n */\n @Input('p-components-size') set componentsSize(value: string) {\n this._componentsSize = validateSizeFn(value);\n }\n\n get componentsSize(): string {\n return this._componentsSize ?? getDefaultSizeFn();\n }\n\n /* eslint-disable max-params */\n constructor() {\n const languageService = inject(PoLanguageService);\n\n this.language = languageService.getShortLanguage();\n }\n /* eslint-enable max-params */\n\n ngOnInit(): void {\n this.loadDataFromAPI();\n }\n\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.forEach(subscription => {\n subscription.unsubscribe();\n });\n }\n }\n\n detailActionNew() {\n this.gridDetail.insertRow();\n }\n\n /**\n * Método que exibe `p-helper` ou executa a ação definida em `p-helper{eventOnClick}` ou em `p-additionalHelp`.\n * Para isso, será necessário configurar uma tecla de atalho utilizando o evento `keydown`.\n *\n * ```\n * import { PoPageDynamicEditModule } from '@po-ui/ng-templates';\n * ...\n * @ViewChild('dynamicEdit', { static: true }) dynamicEdit: PoPageDynamicEditComponent;\n *\n * fields: Array<PoPageDynamicEditField> = [\n * {\n * property: 'name',\n * ...\n * help: 'Mensagem de ajuda.',\n * helper: 'Mensagem de ajuda complementar com o componente po-helper implementado.',\n * keydown: this.onKeyDown.bind(this, 'name')\n * },\n * ]\n *\n * onKeyDown(property: string, event: KeyboardEvent): void {\n * if (event.code === 'F9') {\n * this.dynamicEdit.showAdditionalHelp(property);\n * }\n * }\n * ```\n *\n * @param { string } property Identificador da coluna.\n */\n showAdditionalHelp(property: string) {\n this.dynamicForm.showAdditionalHelp(property);\n }\n\n get duplicates() {\n return [...this._duplicates];\n }\n\n get keys() {\n return [...this._keys];\n }\n\n get pageActions() {\n return [...this._pageActions];\n }\n\n get controlFields() {\n return this._controlFields;\n }\n\n get detailFields() {\n return this._detailFields;\n }\n\n private loadDataFromAPI() {\n const { serviceApi: serviceApiFromRoute, serviceMetadataApi, serviceLoadApi } = this.activatedRoute.snapshot.data;\n const { id } = this.activatedRoute.snapshot.params;\n const { duplicate } = this.activatedRoute.snapshot.queryParams;\n\n const onLoad = serviceLoadApi || this.onLoad;\n this.serviceApi = serviceApiFromRoute || this.serviceApi;\n\n this.poPageDynamicService.configServiceApi({ endpoint: this.serviceApi, metadata: serviceMetadataApi });\n\n const metadata$ = this.getMetadata(serviceApiFromRoute, id, onLoad);\n const data$ = this.loadData(id, duplicate);\n\n this.subscriptions.push(concat(metadata$, data$).subscribe());\n }\n\n private cancel(\n actionCancel: PoPageDynamicEditActions['cancel'],\n actionBeforeCancel: PoPageDynamicEditActions['beforeCancel']\n ) {\n if (this.dynamicForm && this.dynamicForm.form.dirty) {\n this.poDialogService.confirm({\n message: this.literals.cancelConfirmMessage,\n title: this.literals.pageActionCancel,\n confirm: this.goBack.bind(this, actionCancel, actionBeforeCancel)\n });\n } else {\n this.goBack(actionCancel, actionBeforeCancel);\n }\n }\n\n private formatUniqueKey(item) {\n const keys = mapObjectByProperties(item, this.keys);\n\n return valuesFromObject(keys).join('|');\n }\n\n private goBack(\n actionCancel: PoPageDynamicEditActions['cancel'],\n actionBeforeCancel: PoPageDynamicEditActions['beforeCancel']\n ) {\n this.subscriptions.push(\n this.poPageDynamicEditActionsService\n .beforeCancel(actionBeforeCancel)\n .subscribe((beforeCancelResult: PoPageDynamicEditBeforeCancel) => {\n this.executeBackAction(actionCancel, beforeCancelResult?.allowAction, beforeCancelResult?.newUrl);\n })\n );\n }\n\n private executeBackAction(\n actionCancel: PoPageDynamicEditActions['cancel'],\n allowAction?: PoPageDynamicEditBeforeCancel['allowAction'],\n newUrl?: PoPageDynamicEditBeforeCancel['newUrl']\n ) {\n const isAllowedAction = typeof allowAction === 'boolean' ? allowAction : true;\n\n if (isAllowedAction) {\n if (actionCancel === undefined || typeof actionCancel === 'boolean') {\n return window.history.back();\n }\n\n if (typeof actionCancel === 'string' || newUrl) {\n return this.router.navigate([newUrl || actionCancel]);\n }\n\n return actionCancel();\n }\n }\n\n private loadData(id, duplicate?) {\n if (!id) {\n try {\n this.model = duplicate ? JSON.parse(duplicate) : {};\n } catch {\n this.model = {};\n }\n\n return EMPTY;\n }\n\n return this.poPageDynamicService.getResource(id).pipe(\n tap(response => {\n this.beforeSetModel(response);\n }),\n catchError(error => {\n this.model = undefined;\n this.actions = undefined;\n this._pageActions = [];\n return throwError(error);\n })\n );\n }\n\n private beforeSetModel(response: any) {\n if (!this.onLoadData) {\n this.model = response;\n return;\n }\n\n const onLoadDataExecution = this.onLoadData(response);\n const onLoadData$ = onLoadDataExecution instanceof Observable ? onLoadDataExecution : of(onLoadDataExecution);\n\n onLoadData$.subscribe({\n next: customModel => {\n this.model = customModel;\n },\n error: () => {\n this.model = response;\n }\n });\n }\n\n private loadOptionsOnInitialize(onLoad: UrlOrPoCustomizationFunction) {\n if (onLoad) {\n return this.getPoDynamicPageOptions(onLoad).pipe(\n tap(responsePoOption =>\n this.poPageCustomizationService.changeOriginalOptionsToNewOptions(this, responsePoOption)\n )\n );\n }\n\n return EMPTY;\n }\n\n private focusCheckboxInput(control: string): void {\n const checkboxGroup = document.querySelector(`po-checkbox-group[ng-reflect-name=${control}]`);\n if (checkboxGroup) {\n const checkBoxComponent = checkboxGroup.querySelector('po-checkbox[ng-reflect-disabled=false]');\n const labelInput: HTMLInputElement = checkBoxComponent?.querySelector('.po-checkbox-outline');\n if (labelInput) {\n labelInput.focus();\n } else {\n this.indexFocus--;\n }\n }\n }\n\n private focusControl(control: string): void {\n const inputElement: HTMLInputElement = document.querySelector(`[name=${control}]`);\n if (inputElement) {\n if (inputElement.tagName === 'INPUT') {\n inputElement.focus();\n } else {\n this.focusRadioInput(inputElement, control);\n }\n } else {\n this.focusCheckboxInput(control);\n }\n }\n\n private focusRadioInput(inputElement: Element, control: string): void {\n const radioComponent = inputElement.querySelector(\n `po-radio[ng-reflect-name=${control}][ng-reflect-disabled=false]`\n );\n if (radioComponent) {\n const radioInput = radioComponent.querySelector('input');\n radioInput.focus();\n radioInput.parentElement.parentElement.classList.add('po-radio-focus');\n } else {\n this.indexFocus--;\n }\n }\n\n private getPoDynamicPageOptions(onLoad: UrlOrPoCustomizationFunction): Observable<PoPageDynamicEditOptions> {\n const originalOption: PoPageDynamicEditOptions = {\n fields: this.fields,\n actions: this.actions,\n breadcrumb: this.breadcrumb,\n title: this.title\n };\n\n const pageOptionSchema: PoPageDynamicOptionsSchema<PoPageDynamicEditOptions> = {\n schema: [\n {\n nameProp: 'fields',\n merge: true,\n keyForMerge: 'property'\n },\n {\n nameProp: 'actions',\n merge: true\n },\n {\n nameProp: 'breadcrumb'\n },\n {\n nameProp: 'title'\n }\n ]\n };\n\n return this.poPageCustomizationService.getCustomOptions(onLoad, originalOption, pageOptionSchema);\n }\n\n private getMetadata(serviceApiFromRoute: string, paramId: string | number, onLoad: UrlOrPoCustomizationFunction) {\n const typeMetadata = paramId ? 'edit' : 'create';\n\n if (serviceApiFromRoute) {\n return this.poPageDynamicService.getMetadata<PoPageDynamicEditMetadata>(typeMetadata).pipe(\n tap(response => {\n this.autoRouter = response.autoRouter || this.autoRouter;\n this.actions = response.actions || this.actions;\n this.breadcrumb = response.breadcrumb || this.breadcrumb;\n this.fields = response.fields || this.fields;\n this.title = response.title || this.title;\n }),\n switchMap(() => this.loadOptionsOnInitialize(onLoad))\n );\n }\n\n return this.loadOptionsOnInitialize(onLoad);\n }\n\n private markControlsAsDirtyAndFocusFirstInvalid(): void {\n this.indexFocus = 0;\n const controls = Object.keys(this.dynamicForm.form.controls);\n\n controls.forEach(control => {\n this.dynamicForm.form.controls[control].markAsDirty();\n if (this.dynamicForm.form.controls[control].hasError('required') && this.indexFocus === 0) {\n this.focusControl(control);\n this.indexFocus++;\n }\n });\n }\n\n private navigateTo(path: string) {\n if (path) {\n const url = this.resolveUrl(this.model, path);\n\n this.router.navigate([url]);\n } else {\n window.history.back();\n }\n }\n\n private resolveUniqueKey(item: any) {\n return this.activatedRoute.snapshot.params['id'] ? this.formatUniqueKey(item) : undefined;\n }\n\n private resolveUrl(item: any, path: string) {\n const uniqueKey = this.formatUniqueKey(item);\n\n return path.replace(/:id/g, uniqueKey);\n }\n\n private executeSave(saveRedirectPath: string) {\n const saveOperation$ = this.saveOperation();\n\n return saveOperation$.pipe(\n tap(message => {\n this.poNotification.success(message);\n this.navigateTo(saveRedirectPath);\n })\n );\n }\n\n private updateModel(newResource: any = {}) {\n if (typeof newResource !== 'undefined' && Object.keys(newResource).length !== 0) {\n const dynamicNgForm = this.dynamicForm.form;\n\n removeKeysProperties(this.keys, newResource);\n\n this.model = { ...this.model, ...newResource };\n\n dynamicNgForm.form.patchValue(this.model);\n }\n }\n\n private showNotification(type: string) {\n switch (type) {\n case 'warning':\n this.poNotification.warning(this.literals.saveNotificationWarning);\n break;\n case 'error':\n this.poNotification.error(this.literals.saveNotificationError);\n break;\n }\n }\n\n private saveOperation() {\n if (this.dynamicForm.form.invalid) {\n this.markControlsAsDirtyAndFocusFirstInvalid();\n this.showNotification(this._notificationType);\n return EMPTY;\n }\n\n const paramId = this.activatedRoute.snapshot.params['id'];\n const successMsg = paramId\n ? this.literals.saveNotificationSuccessUpdate\n : this.literals.saveNotificationSuccessSave;\n\n const saveOperation$ = paramId\n ? this.poPageDynamicService.updateResource(paramId, this.model)\n : this.poPageDynamicService.createResource(this.model);\n\n return saveOperation$.pipe(map(() => successMsg));\n }\n\n private save(action: SaveAction, before: 'beforeSave' | 'beforeSaveNew' = 'beforeSave') {\n const executeOperation = {\n beforeSave: this.executeSave.bind(this),\n beforeSaveNew: this.executeSaveNew.bind(this)\n };\n\n const uniqueKey = this.resolveUniqueKey(this.model);\n\n this.subscriptions.push(\n this.poPageDynamicEditActionsService[before](this.actions[before], uniqueKey, { ...this.model })\n .pipe(\n switchMap(returnBefore => {\n const newAction = returnBefore?.newUrl ?? action;\n const allowAction = returnBefore?.allowAction ?? true;\n\n this.updateModel(returnBefore?.resource);\n\n if (!allowAction) {\n return of({});\n }\n\n if (typeof newAction === 'string') {\n return executeOperation[before](newAction);\n } else {\n newAction({ ...this.model }, uniqueKey);\n return EMPTY;\n }\n })\n )\n .subscribe()\n );\n }\n\n private executeSaveNew(path: string) {\n const paramId = this.activatedRoute.snapshot.params['id'];\n const saveOperation$ = this.saveOperation();\n\n return saveOperation$.pipe(\n tap(message => {\n if (paramId) {\n this.poNotification.success(message);\n\n this.navigateTo(path);\n } else {\n this.poNotification.success(message);\n\n this.model = {};\n this.dynamicForm.form.reset();\n }\n })\n );\n }\n\n private getKeysByFields(fields: Array<any> = []) {\n return fields.filter(field => field.key === true).map(field => field.property);\n }\n\n private getControlFields(fields: Array<any> = []) {\n return fields.filter(field => field.type !== 'detail');\n }\n\n private getDetailFields(fields: Array<any> = []) {\n return fields.filter(field => field.type === 'detail');\n }\n\n private getDuplicatesByFields(fields: Array<any> = []) {\n return fields.filter(field => field.duplicate === true).map(field => field.property);\n }\n\n private getPageActions(actions: PoPageDynamicEditActions = {}): Array<PoPageAction> {\n const pageActions: Array<PoPageAction> = [\n { label: this.literals.pageActionSave, action: this.save.bind(this, actions.save) }\n ];\n\n if (actions.saveNew) {\n pageActions.push({\n label: this.literals.pageActionSaveNew,\n action: this.save.bind(this, actions.saveNew, 'beforeSaveNew')\n });\n }\n\n if (actions.cancel === undefined || actions.cancel) {\n pageActions.push({\n label: this.literals.pageActionCancel,\n action: this.cancel.bind(this, actions.cancel, this.actions.beforeCancel)\n });\n }\n\n return pageActions;\n }\n\n private isObject(value: any): boolean {\n return !!value && typeof value === 'object' && !Array.isArray(value);\n }\n}\n","<po-page-default\n [p-actions]=\"pageActions\"\n [p-breadcrumb]=\"breadcrumb\"\n [p-components-size]=\"componentsSize\"\n [p-title]=\"title\"\n>\n @if (model) {\n <po-dynamic-form #dynamicForm [p-components-size]=\"componentsSize\" [p-fields]=\"controlFields\" [p-value]=\"model\">\n </po-dynamic-form>\n @if (detailFields.length > 0) {\n <div class=\"po-sm-12\">\n <po-divider [p-label]=\"detailFields[0].divider\"></po-divider>\n <div class=\"po-row po-mb-2\">\n <po-button\n [p-size]=\"componentsSize\"\n [p-label]=\"literals.detailActionNew\"\n (p-click)=\"detailActionNew()\"\n ></po-button>\n </div>\n <po-grid\n #gridDetail\n [p-row-actions]=\"detailActions\"\n [p-columns]=\"detailFields[0].detail.columns\"\n [p-data]=\"model[detailFields[0].property]\"\n >\n </po-grid>\n </div>\n }\n } @else {\n <po-widget [p-size]=\"componentsSize\">\n <po-icon p-icon=\"ICON_INFO\"></po-icon>\n <span class=\"po-font-text-large\">\n {{ literals.registerNotFound }}\n </span>\n </po-widget>\n }\n</po-page-default>\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport {\n PoButtonModule,\n PoDividerModule,\n PoDynamicModule,\n PoGridModule,\n PoIconModule,\n PoPageModule,\n PoWidgetModule\n} from '@po-ui/ng-components';\n\nimport { PoPageDynamicEditComponent } from './po-page-dynamic-edit.component';\nimport { PoPageDynamicModule } from '../../services/po-page-dynamic/po-page-dynamic.module';\n\n/**\n * @description\n *\n * Módulo do template do po-page-dynamic-detail.\n */\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n RouterModule,\n PoButtonModule,\n PoDividerModule,\n PoDynamicModule,\n PoGridModule,\n PoIconModule,\n PoPageModule,\n PoWidgetModule,\n PoPageDynamicModule\n ],\n declarations: [PoPageDynamicEditComponent],\n exports: [PoPageDynamicEditComponent]\n})\nexport class PoPageDynamicEditModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PoPageCustomizationService } from './po-page-customization.service';\n\n/**\n * @description\n *\n * Módulo do serviço do po-page-customization-service.\n */\n@NgModule({\n imports: [CommonModule],\n providers: [PoPageCustomizationService]\n})\nexport class PoPageCustomizationModule {}\n","import { Directive, EventEmitter, Input, Output, ViewChild } from '@angular/core';\n\nimport {\n PoComboOption,\n PoDynamicFormField,\n PoLanguageService,\n PoModalAction,\n PoModalComponent,\n poLocaleDefault\n} from '@po-ui/ng-components';\n\nimport { convertToBoolean, getDefaultSizeFn, validateSizeFn } from '../../../utils/util';\nimport { PoPageDynamicSearchFilters } from '../interfaces/po-page-dynamic-search-filters.interface';\nimport { PoAdvancedFilterLiterals } from './po-advanced-filter-literals.interface';\n\nexport const poAdvancedFiltersLiteralsDefault = {\n en: <PoAdvancedFilterLiterals>{\n title: 'Advanced search',\n cancelLabel: 'Cancel',\n confirmLabel: 'Apply filters'\n },\n es: <PoAdvancedFilterLiterals>{\n title: 'Búsqueda avanzada',\n cancelLabel: 'Cancelar',\n confirmLabel: 'Aplicar filtros'\n },\n pt: <PoAdvancedFilterLiterals>{\n title: 'Busca avançada',\n cancelLabel: 'Cancelar',\n confirmLabel: 'Aplicar filtros'\n },\n ru: <PoAdvancedFilterLiterals>{\n title: 'Расширенный поиск',\n cancelLabel: 'отменить',\n confirmLabel: 'Применить фильтры'\n }\n};\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Filtro de busca avançada criado a partir de um formulário dinâmico.\n * Componente de uso interno.\n */\n@Directive()\nexport class PoAdvancedFilterBaseComponent {\n @ViewChild(PoModalComponent, { static: true }) poModal: PoModalComponent;\n\n /**\n * Mantém na modal de busca avançada os valores preenchidos do último filtro realizado pelo usuário.\n */\n @Input({ alias: 'p-keep-filters', transform: convertToBoolean }) keepFilters: boolean = false;\n\n /** Função que será disparada e receberá os valores do formulário ao ser clicado no botão buscar. */\n @Output('p-search-event') searchEvent = new EventEmitter<any>();\n\n filter = {};\n language: string = poLocaleDefault;\n\n primaryAction: PoModalAction = {\n action: () => {\n const models = this.getValuesFromForm();\n\n this.searchEvent.emit(models);\n this.poModal.close();\n },\n label: this.literals.confirmLabel\n };\n\n secondaryAction: PoModalAction = {\n action: () => {\n this.poModal.close();\n },\n label: this.literals.cancelLabel\n };\n\n protected optionsServiceChosenOptions: Array<PoComboOption> = [];\n\n private _componentsSize?: string = undefined;\n private _filters: Array<PoDynamicFormField> = [];\n private _literals: PoAdvancedFilterLiterals;\n\n /**\n * @optional\n *\n * @description\n *\n * Define o tamanho dos componentes de formulário no template:\n * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n * - `medium`: aplica a medida medium de cada componente.\n *\n * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n *\n * @default `medium`\n */\n @Input('p-components-size') set componentsSize(value: string) {\n this._componentsSize = validateSizeFn(value);\n }\n\n get componentsSize(): string {\n return this._componentsSize ?? getDefaultSizeFn();\n }\n\n /**\n * Coleção de objetos que implementam a interface PoPageDynamicSearchFilters, para definição dos campos que serão criados\n * dinamicamente.\n */\n @Input('p-filters') set filters(filters: Array<PoPageDynamicSearchFilters>) {\n this._filters = Array.isArray(filters) ? [...filters] : [];\n }\n\n get filters(): Array<PoPageDynamicSearchFilters> {\n return this._filters;\n }\n\n /** Objeto com as literais usadas no `po-advanced-filter`. */\n @Input('p-literals') set literals(value: PoAdvancedFilterLiterals) {\n if (value instanceof Object && !(value instanceof Array)) {\n this._literals = {\n ...poAdvancedFiltersLiteralsDefault[poLocaleDefault],\n ...poAdvancedFiltersLiteralsDefault[this.language],\n ...value\n };\n } else {\n this._literals = poAdvancedFiltersLiteralsDefault[this.language];\n }\n\n this.primaryAction.label = this.literals.confirmLabel;\n this.secondaryAction.label = this.literals.cancelLabel;\n }\n\n get literals() {\n return this._literals || poAdvancedFiltersLiteralsDefault[this.language];\n }\n\n constructor(languageService: PoLanguageService) {\n this.language = languageService.getShortLanguage();\n }\n\n // Retorna os models dos campos preenchidos\n private getValuesFromForm() {\n let optionServiceOptions: Array<PoComboOption>;\n\n Object.keys(this.filter).forEach(property => {\n if (this.filter[property] === undefined || this.filter[property] === '') {\n delete this.filter[property];\n }\n });\n\n if (this.optionsServiceChosenOptions.length) {\n optionServiceOptions = this.optionsServiceChosenOptions.filter((optionItem: PoComboOption) =>\n Object.values(this.filter).includes(optionItem.value)\n );\n }\n\n return { filter: this.filter, optionsService: optionServiceOptions };\n }\n}\n","import { Component, OnDestroy, OnInit, ViewChild, inject } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { PoComboOption, PoDynamicFormComponent, PoLanguageService } from '@po-ui/ng-components';\n\nimport { PoPageDynamicSearchFilters } from '../interfaces/po-page-dynamic-search-filters.interface';\nimport { PoAdvancedFilterBaseComponent } from './po-advanced-filter-base.component';\n\n/**\n * @docsPrivate\n *\n * @docsExtends PoAdvancedFilterBaseComponent\n *\n * @examplePrivate\n *\n * <example-private name=\"po-advanced-filter\" title=\"PO Busca Avançada\">\n * <file name=\"sample-po-advanced-filter.component.html\"> </file>\n * <file name=\"sample-po-advanced-filter.component.ts\"> </file>\n * </example-private>\n */\n@Component({\n selector: 'po-advanced-filter',\n templateUrl: './po-advanced-filter.component.html',\n standalone: false\n})\nexport class PoAdvancedFilterComponent extends PoAdvancedFilterBaseComponent implements OnDestroy, OnInit {\n @ViewChild(PoDynamicFormComponent, { static: true }) poDynamicForm: PoDynamicFormComponent;\n\n private subscription = new Subscription();\n\n constructor() {\n const languageService = inject(PoLanguageService);\n\n super(languageService);\n }\n\n ngOnInit() {\n this.optionsServiceSubscribe();\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n open() {\n this.filter = this.keepFilters ? this.getInitialValuesFromFilter(this.filters) : {};\n\n this.poModal.open();\n }\n\n private getOptionsServiceItem(optionServiceObject: PoComboOption) {\n const objectItem = this.optionsServiceChosenOptions.map(option => option.value).indexOf(optionServiceObject.value);\n\n if (objectItem === -1) {\n this.optionsServiceChosenOptions = [...this.optionsServiceChosenOptions, optionServiceObject];\n }\n }\n\n private getInitialValuesFromFilter(filters: Array<PoPageDynamicSearchFilters>) {\n return filters.reduce((result, item) => Object.assign(result, { [item.property]: item.initValue }), {});\n }\n\n // Se inscreve para receber valores referentes a campos do tipo combo.\n private optionsServiceSubscribe() {\n this.subscription.add(\n this.poDynamicForm.getObjectValue().subscribe(optionServiceObject => {\n if (optionServiceObject) {\n this.getOptionsServiceItem(optionServiceObject);\n }\n })\n );\n }\n}\n","<po-modal\n p-hide-close\n [p-primary-action]=\"primaryAction\"\n [p-secondary-action]=\"secondaryAction\"\n [p-components-size]=\"componentsSize\"\n [p-title]=\"literals.title\"\n>\n <po-dynamic-form [p-components-size]=\"componentsSize\" [p-fields]=\"filters\" [p-value]=\"filter\"> </po-dynamic-form>\n</po-modal>\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\n\nimport {\n PoBreadcrumb,\n PoDynamicFormField,\n PoLanguageService,\n PoPageAction,\n poLocaleDefault\n} from '@po-ui/ng-components';\n\nimport { convertToBoolean, convertToInt, getDefaultSizeFn, validateSizeFn } from '../../utils/util';\n\nimport { PoPageDynamicSearchFilters } from './interfaces/po-page-dynamic-search-filters.interface';\nimport { PoPageDynamicSearchLiterals } from './interfaces/po-page-dynamic-search-literals.interface';\nimport { PoPageDynamicSearchOptions } from './interfaces/po-page-dynamic-search-options.interface';\nimport { poAdvancedFiltersLiteralsDefault } from './po-advanced-filter/po-advanced-filter-base.component';\nimport { PoAdvancedFilterLiterals } from './po-advanced-filter/po-advanced-filter-literals.interface';\n\nexport const poPageDynamicSearchLiteralsDefault = {\n en: <PoPageDynamicSearchLiterals>{\n disclaimerGroupTitle: 'Displaying results filtered by:',\n filterTitle: poAdvancedFiltersLiteralsDefault.en.title,\n filterCancelLabel: poAdvancedFiltersLiteralsDefault.en.cancelLabel,\n filterConfirmLabel: poAdvancedFiltersLiteralsDefault.en.confirmLabel,\n quickSearchLabel: 'Quick search:',\n searchPlaceholder: 'Search'\n },\n es: <PoPageDynamicSearchLiterals>{\n disclaimerGroupTitle: 'Presentando resultados filtrados por:',\n filterTitle: poAdvancedFiltersLiteralsDefault.es.title,\n filterCancelLabel: poAdvancedFiltersLiteralsDefault.es.cancelLabel,\n filterConfirmLabel: poAdvancedFiltersLiteralsDefault.es.confirmLabel,\n quickSearchLabel: 'Búsqueda rápida:',\n searchPlaceholder: 'Buscar'\n },\n pt: <PoPageDynamicSearchLiterals>{\n disclaimerGroupTitle: 'Apresentando resultados filtrados por:',\n filterTitle: poAdvancedFiltersLiteralsDefault.pt.title,\n filterCancelLabel: poAdvancedFiltersLiteralsDefault.pt.cancelLabel,\n filterConfirmLabel: poAdvancedFiltersLiteralsDefault.pt.confirmLabel,\n quickSearchLabel: 'Pesquisa rápida:',\n searchPlaceholder: 'Pesquisar'\n },\n ru: <PoPageDynamicSearchLiterals>{\n disclaimerGroupTitle: 'Отображение результатов, отфильтрованных по:',\n filterTitle: poAdvancedFiltersLiteralsDefault.ru.title,\n filterCancelLabel: poAdvancedFiltersLiteralsDefault.ru.cancelLabel,\n filterConfirmLabel: poAdvancedFiltersLiteralsDefault.ru.confirmLabel,\n quickSearchLabel: 'Быстрый поиск:',\n searchPlaceholder: 'исследование'\n }\n};\n\n/**\n * @description\n *\n * Componente com as ações de pesquisa já definidas, bastando que o desenvolvedor implemente apenas a chamada para as APIs\n * e exiba as informações.\n *\n * #### Tokens customizáveis\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade | Descrição | Valor Padrão |\n * |---------------------|---------------------------------------------|---------------------------------------|\n * | **Header** | | |\n * | `--padding` | Espaçamento do header | `var(--spacing-xs) var(--spacing-md)` |\n * | `--gap` | Espaçamento entre os breadcrumbs e o título | `var(--spacing-md)` |\n * | `--gap-actions` | Espaçamento entre as ações | `var(--spacing-xs)` |\n * | `--font-family` | Família tipográfica do título | `var(--font-family-theme)` |\n * | **Content** | | |\n * | `--padding-content` | Espaçamento do conteúdo | `var(--spacing-xs) var(--spacing-sm)` |\n */\n@Directive()\nexport abstract class PoPageDynamicSearchBaseComponent {\n /** Nesta propriedade deve ser definido um array de objetos que implementam a interface `PoPageAction`. */\n @Input('p-actions') actions?: Array<PoPageAction> = [];\n\n /** Objeto com propriedades do breadcrumb. */\n @Input('p-breadcrumb') breadcrumb?: PoBreadcrumb = { items: [] };\n\n /**\n * @optional\n *\n * @description\n *\n * Mantém na busca avançada os valores preenchidos do último filtro realizado pelo usuário.\n *\n * @default `false`\n */\n @Input({ alias: 'p-keep-filters', transform: convertToBoolean }) keepFilters: boolean = false;\n\n /**\n * @optional\n *\n * @description\n *\n * Permite a utilização da pesquisa rápida junto com a pesquisa avançada.\n *\n * Desta forma, ao ter uma pesquisa avançada estabelecida e ser\n * preenchido a pesquisa rápida, o filtro será concatenado adicionando a pesquisa\n * rápida também na lista de `disclaimers`.\n *\n * > Os valores que são emitidos no `p-quick-search` e no `p-advanced-search`\n * permanecem separados durante a emissão dos valores alterados. A concatenação\n * é apenas nos `disclaimers`.\n *\n * @default `false`\n */\n @Input({ alias: 'p-concat-filters', transform: convertToBoolean }) concatFilters: boolean = false;\n\n /**\n * @optional\n *\n * @description\n *\n * Oculta o botão para remover todos os *disclaimers* do grupo.\n *\n * > Por padrão, o mesmo é exibido à partir de dois ou mais *disclaimers* com a opção `hideClose` habilitada.\n *\n * @default `false`\n */\n @Input({ alias: 'p-hide-remove-all-disclaimer', transform: convertToBoolean })\n hideRemoveAllDisclaimer: boolean = false;\n\n /**\n * Função ou serviço que será executado na inicialização do componente.\n *\n * A propriedade aceita os seguintes tipos:\n * - `string`: *Endpoint* usado pelo componente para requisição via `POST`.\n * - `function`: Método que será executado.\n *\n * O retorno desta função deve ser do tipo `PoPageDynamicSearchOptions`,\n * onde o usuário poderá customizar novos filtros, breadcrumb, title e actions\n *\n * Por exemplo:\n *\n * ```\n * getPageOptions(): PoPageDynamicSearchOptions {\n * return {\n * actions: [\n * { label: 'Find on Google' },\n * ],\n * filters: [\n * { property: 'idCard', gridColumns: 6 }\n * ]\n * };\n * }\n *\n * ```\n * Para referenciar a sua função utilize a propriedade `bind`, por exemplo:\n * ```\n * [p-load]=\"onLoadOptions.bind(this)\"\n * ```\n */\n @Input('p-load') onLoad: string | (() => PoPageDynamicSearchOptions);\n\n /** Título da página. */\n @Input('p-title') title: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Valor padrão na busca rápida ao inicializar o componente\n *\n */\n @Input('p-quick-search-value') quickSearchValue: string;\n\n _visibleFixedFilters = true;\n\n /**\n * @optional\n *\n * @description\n *\n * Controla a visibilidade dos filtros fixos na página.\n *\n * - Quando `true` (default), todos os filtros, incluindo os fixos, são exibidos, permitindo que o usuário visualize os filtros aplicados.\n * - Quando `false`, os filtros fixos são ocultados, não sendo exibidos na interface, mas ainda sendo aplicados como filtros nas requisições.\n *\n * Esta propriedade trabalha em conjunto com a propriedade `fixed` dos filtros individuais. Filtros marcados como `fixed: true` não serão exibidos na interface do filtro avançado quando `visibleFixedFilters` for `false`, mas continuarão a ser aplicados de forma transparente ao usuário. Dessa forma, permite-se maior flexibilidade no controle de quais filtros devem ser visíveis ao usuário ou devem ser aplicados permanentemente sem interferência.\n *\n * **Exemplo de uso:**\n * ```html\n * <!-- Para ocultar os filtros fixos -->\n * <po-page-dynamic-table [p-visible-fixed-filters]=\"false\"></po-page-dynamic-table>\n * ```\n */\n @Input('p-visible-fixed-filters') set visibleFixedFilters(visible: boolean) {\n this._visibleFixedFilters = visible;\n }\n\n get visibleFixedFilters(): boolean {\n return this._visibleFixedFilters;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Evento disparado ao executar a pesquisa avançada, o mesmo irá repassar um objeto com os valores preenchidos no modal de pesquisa.\n *\n * > Campos não preenchidos não irão aparecer no objeto passado por parâmetro.\n */\n @Output('p-advanced-search') advancedSearch: EventEmitter<any> = new EventEmitter();\n\n /**\n * @optional\n *\n * @description\n *\n * Evento disparado ao remover um ou todos os disclaimers pelo usuário.\n */\n @Output('p-change-disclaimers') changeDisclaimers: EventEmitter<any> = new EventEmitter();\n\n /**\n * @optional\n *\n * @description\n *\n * Evento disparado ao realizar uma busca pelo campo de pesquisa rápida, o mesmo será chamado repassando o valor digitado.\n */\n @Output('p-quick-search') quickSearch: EventEmitter<string> = new EventEmitter();\n\n advancedFilterLiterals: PoAdvancedFilterLiterals;\n\n private _componentsSize?: string = undefined;\n private _filters: Array<PoDynamicFormField> = [];\n private _hideCloseDisclaimers: Array<string> = [];\n private _literals: PoPageDynamicSearchLiterals;\n private _quickSearchWidth: number;\n private language: string;\n\n previousFilters: Array<PoDynamicFormField>;\n\n /**\n * @optional\n *\n * @description\n *\n * Define o tamanho dos componentes de formulário no template:\n * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n * - `medium`: aplica a medida medium de cada componente.\n *\n * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n *\n * @default `medium`\n */\n @Input('p-components-size') set componentsSize(value: string) {\n this._componentsSize = validateSizeFn(value);\n }\n\n get componentsSize(): string {\n return this._componentsSize ?? getDefaultSizeFn();\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Objeto com as literais usadas no `po-page-dynamic-search`.\n *\n * Existem duas maneiras de customizar o componente, passando um objeto com todas as literais disponíveis:\n *\n * ```\n * const customLiterals: PoPageDynamicSearchLiterals = {\n * disclaimerGroupTitle: 'Filtros aplicados:',\n * filterTitle: 'Filtro avançado',\n * filterCancelLabel: 'Fechar',\n * filterConfirmLabel: 'Aplicar',\n * quickSearchLabel: 'Valor pesquisado:',\n * searchPlaceholder: 'Pesquise aqui'\n * };\n * ```\n *\n * Ou passando apenas as literais que deseja customizar:\n *\n * ```\n * const customLiterals: PoPageDynamicSearchLiterals = {\n * filterTitle: 'Filtro avançado'\n * };\n * ```\n *\n * E para carregar as literais customizadas, basta apenas passar o objeto para o componente.\n *\n * ```\n * <po-page-dynamic-search\n * [p-literals]=\"customLiterals\">\n * </po-page-dynamic-search>\n * ```\n *\n * > O valor padrão será traduzido de acordo com o idioma configurado no [`PoI18nService`](/documentation/po-i18n) ou *browser*.\n */\n @Input('p-literals') set literals(value: PoPageDynamicSearchLiterals) {\n if (value instanceof Object && !(value instanceof Array)) {\n this._literals = {\n ...poPageDynamicSearchLiteralsDefault[poLocaleDefault],\n ...poPageDynamicSearchLiteralsDefault[this.language],\n ...value\n };\n } else {\n this._literals = poPageDynamicSearchLiteralsDefault[this.language];\n }\n\n this.setAdvancedFilterLiterals(this.literals);\n }\n\n get literals() {\n return this._literals || poPageDynamicSearchLiteralsDefault[this.language];\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Lista dos campos usados na busca avançada. Caso o mesmo não seja passado a busca avançada não será exibida.\n */\n @Input('p-filters') set filters(filters: Array<PoPageDynamicSearchFilters>) {\n this._filters = Array.isArray(filters) ? [...filters] : [];\n }\n\n get filters(): Array<PoPageDynamicSearchFilters> {\n return this._filters;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Largura do campo de busca, utilizando o *Grid System*,\n * e limitado ao máximo de 6 colunas. O tamanho mínimo é controlado\n * conforme resolução de tela para manter a consistência do layout.\n */\n @Input('p-quick-search-width') set quickSearchWidth(value: number) {\n this._quickSearchWidth = convertToInt(value);\n }\n\n get quickSearchWidth(): number {\n return this._quickSearchWidth;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Lista de filtros que terão a opção de fechar ocultada\n * em seu respectivo disclaimer. Utilizar o atributo `property` do filtro.\n *\n * Exemplo de utilização:\n * ```\n * ['city','name'];\n * ```\n */\n @Input('p-hide-close-disclaimers') set hideCloseDisclaimers(value: Array<string>) {\n this._hideCloseDisclaimers = Array.isArray(value) ? value : [];\n }\n\n get hideCloseDisclaimers(): Array<string> {\n return this._hideCloseDisclaimers;\n }\n\n constructor(languageService: PoLanguageService) {\n this.language = languageService.getShortLanguage();\n }\n\n protected setAdvancedFilterLiterals(literals: PoPageDynamicSearchLiterals) {\n this.advancedFilterLiterals = {\n cancelLabel: literals.filterCancelLabel,\n confirmLabel: literals.filterConfirmLabel,\n title: literals.filterTitle\n };\n }\n\n stringify(columns: Array<PoPageDynamicSearchFilters>) {\n // não faz o stringify da propriedade searchService, pois pode conter objeto complexo e disparar um erro.\n return JSON.stringify(columns, (key, value) => {\n if (key !== 'searchService') {\n return value;\n }\n });\n }\n\n abstract onChangeFilters(filters: Array<PoPageDynamicSearchFilters>);\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n ViewChild,\n inject\n} from '@angular/core';\n\nimport {\n PoComboOption,\n PoDisclaimerGroup,\n PoDisclaimerGroupRemoveAction,\n PoDynamicFieldType,\n PoDynamicFormField,\n PoLanguageService,\n PoPageFilter,\n PoPageListComponent\n} from '@po-ui/ng-components';\nimport { Observable, Subscription } from 'rxjs';\n\nimport { PoPageCustomizationService } from '../../services/po-page-customization/po-page-customization.service';\nimport { capitalizeFirstLetter, getBrowserLanguage } from '../../utils/util';\n\nimport { PoPageDynamicOptionsSchema } from '../../services';\nimport { PoPageDynamicSearchFilters } from './interfaces/po-page-dynamic-search-filters.interface';\nimport { PoPageDynamicSearchOptions } from './interfaces/po-page-dynamic-search-options.interface';\nimport { PoAdvancedFilterComponent } from './po-advanced-filter/po-advanced-filter.component';\nimport { PoPageDynamicSearchBaseComponent } from './po-page-dynamic-search-base.component';\n\ntype UrlOrPoCustomizationFunction = string | (() => PoPageDynamicSearchOptions);\n\n/**\n * @docsExtends PoPageDynamicSearchBaseComponent\n *\n * @example\n *\n * <example name=\"po-page-dynamic-search-basic\" title=\"PO Page Dynamic Search Basic\">\n * <file name=\"sample-po-page-dynamic-search-basic/sample-po-page-dynamic-search-basic.component.html\"> </file>\n * <file name=\"sample-po-page-dynamic-search-basic/sample-po-page-dynamic-search-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-dynamic-search-hiring-processes\" title=\"PO Page Dynamic Search - Hiring processes\">\n * <file name=\"sample-po-page-dynamic-search-hiring-processes/sample-po-page-dynamic-search-hiring-processes.component.html\"> </file>\n * <file name=\"sample-po-page-dynamic-search-hiring-processes/sample-po-page-dynamic-search-hiring-processes.component.ts\"> </file>\n * <file name=\"sample-po-page-dynamic-search-hiring-processes/sample-po-page-dynamic-search-hiring-processes.service.ts\"> </file>\n * </example>\n */\n@Component({\n selector: 'po-page-dynamic-search',\n templateUrl: './po-page-dynamic-search.component.html',\n standalone: false\n})\nexport class PoPageDynamicSearchComponent\n extends PoPageDynamicSearchBaseComponent\n implements OnInit, OnDestroy, AfterViewInit, OnChanges\n{\n private languageService: PoLanguageService;\n private poPageCustomizationService = inject(PoPageCustomizationService);\n private changeDetector = inject(ChangeDetectorRef);\n\n @ViewChild(PoAdvancedFilterComponent, { static: true }) poAdvancedFilter: PoAdvancedFilterComponent;\n @ViewChild(PoPageListComponent, { static: true }) poPageList: PoPageListComponent;\n\n private loadSubscription: Subscription;\n\n private readonly _disclaimerGroup: PoDisclaimerGroup = {\n remove: this.onRemoveDisclaimer.bind(this),\n removeAll: this.onRemoveAllDisclaimers.bind(this),\n disclaimers: [],\n title: this.literals.disclaimerGroupTitle,\n hideRemoveAll: this.hideRemoveAllDisclaimer\n };\n\n private readonly _filterSettings: PoPageFilter = {\n action: this.onAction.bind(this),\n advancedAction: this.onAdvancedAction.bind(this),\n placeholder: this.literals.searchPlaceholder,\n width: this.quickSearchWidth\n };\n\n constructor() {\n const languageService = inject(PoLanguageService);\n\n super(languageService);\n\n this.languageService = languageService;\n }\n\n get disclaimerGroup() {\n return Object.assign({}, this._disclaimerGroup, {\n title: this.literals.disclaimerGroupTitle,\n hideRemoveAll: this.hideRemoveAllDisclaimer\n });\n }\n\n get filterSettings() {\n const thereAreValidFilters =\n this.filters.length > 0 && this.filters.some(filter => filter.visible === true || filter.visible === undefined);\n this._filterSettings.advancedAction = thereAreValidFilters ? this.onAdvancedAction.bind(this) : undefined;\n\n return Object.assign({}, this._filterSettings, {\n placeholder: this.literals.searchPlaceholder,\n width: this.quickSearchWidth\n });\n }\n\n ngOnInit() {\n this.setAdvancedFilterLiterals(this.literals);\n if (this.onLoad) {\n this.loadOptionsOnInitialize(this.onLoad);\n }\n //coloca o disclaimer inicial caso envie p-quick-search-value\n if (this.quickSearchValue) {\n this.onAction(this.quickSearchValue, true);\n }\n }\n\n ngOnDestroy() {\n if (this.loadSubscription) {\n this.loadSubscription.unsubscribe();\n }\n }\n\n ngAfterViewInit(): void {\n if (this.stringify(this.filters) !== this.stringify(this.previousFilters)) {\n this.onChangeFilters(this.filters);\n\n this.previousFilters = [...this.filters];\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const visibleFixedFilters = changes.visibleFixedFilters;\n\n if (\n visibleFixedFilters &&\n visibleFixedFilters.currentValue !== visibleFixedFilters.previousValue &&\n this.filters.some(filter => filter.fixed)\n ) {\n this.onChangeFilters(this.filters);\n this.previousFilters = [...this.filters];\n }\n }\n\n onChangeFilters(filters: Array<PoPageDynamicSearchFilters>) {\n const filterObjectWithValue = filters\n .filter(filter => filter.initValue)\n .reduce((prev, current) => ({ ...prev, ...{ [current.property]: current.initValue } }), {});\n\n if (Object.keys(filterObjectWithValue).length) {\n this.onAdvancedSearch({ filter: filterObjectWithValue });\n }\n }\n\n onAction(quickFilter: string, quickSearchValue?: boolean) {\n const disclaimerQuickSearchUpdated = {\n property: 'search',\n label: `${this.literals.quickSearchLabel} ${quickFilter}`,\n value: quickFilter,\n hideClose: this.hideCloseDisclaimers.some(hideCloseDisclaimer => hideCloseDisclaimer === 'search') || false\n };\n\n const getDisclaimersWithConcatFilters = () => [\n ...this.getDisclaimersWithoutQuickSearch(),\n disclaimerQuickSearchUpdated\n ];\n\n this._disclaimerGroup.disclaimers = this.concatFilters\n ? getDisclaimersWithConcatFilters()\n : [disclaimerQuickSearchUpdated];\n\n if (this.quickSearch.observers && this.quickSearch.observers.length > 0 && !quickSearchValue) {\n this.quickSearch.emit(quickFilter);\n }\n\n if (this.keepFilters && !this.concatFilters) {\n this.filters.forEach(element => delete element.initValue);\n }\n\n this.changeDetector.detectChanges();\n }\n\n onAdvancedAction() {\n this.poAdvancedFilter.open();\n }\n\n onAdvancedSearch(filteredItems, isAdvancedSearch?) {\n const { optionsService } = filteredItems;\n let { filter } = filteredItems;\n\n const visibleFilters =\n this.visibleFixedFilters === false\n ? this.filters.filter(filter => !('fixed' in filter) || !filter.fixed)\n : this.filters;\n\n this._disclaimerGroup.disclaimers = this.setDisclaimers(filter, optionsService, visibleFilters);\n\n this.setFilters(filter);\n\n filter = this.addComplexFilter(filter);\n\n this.advancedSearch.emit(filter);\n\n if (isAdvancedSearch) {\n this.poPageList.clearInputSearch();\n }\n }\n\n private getDisclaimersWithoutQuickSearch() {\n const quickSearchProperty = 'search';\n return this._disclaimerGroup.disclaimers.filter(item => item.property !== quickSearchProperty);\n }\n\n private setFilters(filters) {\n const formattedFilters = this.convertToFilters(filters);\n\n this.filters.forEach(element => {\n const compatibleObject = formattedFilters.find(item => item.property === element.property);\n\n if (compatibleObject) {\n element.initValue = compatibleObject.value;\n } else {\n delete element.initValue;\n }\n });\n }\n\n private convertToFilters(filters) {\n return Object.entries(filters).map(([property, value]) => ({ property, value }));\n }\n\n private optionsServiceDisclaimerLabel(value: any, optionsServiceObjectsList: Array<PoComboOption>) {\n const optionServiceMatch = optionsServiceObjectsList.find(option => option.value === value);\n\n return optionServiceMatch.label || optionServiceMatch.value;\n }\n\n private applyDisclaimerLabelValue(field: any, filterValue: any) {\n const values = Array.isArray(filterValue) ? filterValue : [filterValue];\n\n const labels = values.map(value => {\n const filteredField = field.options.find(option => option.value === value || option === value);\n\n if (filteredField) {\n return filteredField.label || filteredField.value || filteredField;\n }\n });\n\n return labels.join(', ');\n }\n\n private formatDate(date: string) {\n const year = parseInt(date.substr(0, 4), 10);\n const month = parseInt(date.substr(5, 2), 10);\n const day = parseInt(date.substr(8, 2), 10);\n\n return new Date(year, month - 1, day).toLocaleDateString(getBrowserLanguage());\n }\n\n private formatArrayToObjectKeyValue(filters: Array<{ property: string; value?: any; initValue?: any }>): {\n [key: string]: any;\n } {\n const formattedObject = filters.reduce(\n (result, item) => Object.assign(result, { [item.property]: item.value || item.initValue }),\n {}\n );\n\n Object.keys(formattedObject).forEach(key => {\n if (!formattedObject[key]) {\n delete formattedObject[key];\n }\n });\n\n return formattedObject;\n }\n\n private formatValueToCurrency(field: any, value: any) {\n const language = this.languageService.getLanguage();\n return new Intl.NumberFormat(field.locale ? field.locale : language, {\n minimumFractionDigits: 2\n }).format(value);\n }\n\n private getFieldByProperty(fields: Array<PoDynamicFormField>, fieldName: string) {\n return fields.find((field: PoDynamicFormField) => field.property === fieldName);\n }\n\n private getFilterValueToDisclaimer(field: any, value: any, optionsServiceObjectsList?: Array<PoComboOption>) {\n if (field.optionsService && optionsServiceObjectsList) {\n return this.optionsServiceDisclaimerLabel(value, optionsServiceObjectsList);\n }\n\n if (field.type === PoDynamicFieldType.Currency && value) {\n return this.formatValueToCurrency(field, value);\n }\n\n if (field.type === PoDynamicFieldType.Date || field.type?.toLowerCase() === PoDynamicFieldType.DateTime) {\n return field.range ? this.formatDate(value.start) + ' - ' + this.formatDate(value.end) : this.formatDate(value);\n }\n\n if (field.options && value) {\n return this.applyDisclaimerLabelValue(field, value);\n }\n\n return value;\n }\n\n private emitChangesDisclaimers(currentDisclaimers: any) {\n this.changeDisclaimers.emit(currentDisclaimers);\n this.setFilters(this.formatArrayToObjectKeyValue(currentDisclaimers));\n }\n\n private onRemoveAllDisclaimers() {\n const disclaimersToKeep = this.getFixedFiltersDisclaimers();\n this.emitChangesDisclaimers(disclaimersToKeep);\n }\n\n private onRemoveDisclaimer(removeData: PoDisclaimerGroupRemoveAction) {\n const { currentDisclaimers } = removeData;\n\n const updatedDisclaimers = [...currentDisclaimers, ...this.getFixedFiltersDisclaimers(currentDisclaimers)];\n\n this.emitChangesDisclaimers(updatedDisclaimers);\n }\n\n private getFixedFiltersDisclaimers(currentDisclaimers?: Array<any>): Array<any> {\n const fixedFilters = this.filters.filter(\n filter =>\n filter.fixed === true &&\n filter.hasOwnProperty('initValue') &&\n filter.initValue !== undefined &&\n filter.initValue !== null\n );\n\n return fixedFilters\n .map(filter => ({\n property: filter.property,\n value: filter.initValue,\n label: `${filter.label}: ${filter.initValue}`,\n hideClose: true\n }))\n .filter(\n fixedFilter =>\n !currentDisclaimers || !currentDisclaimers.some(disclaimer => disclaimer.property === fixedFilter.property)\n );\n }\n\n private setDisclaimers(\n filters,\n optionsServiceObjects?: Array<PoComboOption>,\n visibleFilters?: Array<PoPageDynamicSearchFilters>\n ) {\n const disclaimers = [];\n const properties = Object.keys(filters);\n const visibleProperties = visibleFilters ? visibleFilters.map(filter => filter.property) : properties;\n\n properties.forEach(property => {\n if (visibleProperties.includes(property)) {\n const field = this.getFieldByProperty(this.filters, property);\n const label = field.label || capitalizeFirstLetter(field.property);\n const value = filters[property];\n const hideClose =\n this.hideCloseDisclaimers.some(hideCloseDisclaimer => hideCloseDisclaimer === property) || false;\n\n const valueDisplayedOnTheDisclaimerLabel = this.getFilterValueToDisclaimer(field, value, optionsServiceObjects);\n\n if (valueDisplayedOnTheDisclaimerLabel !== '') {\n disclaimers.push({\n label: `${label}: ${valueDisplayedOnTheDisclaimerLabel}`,\n property,\n value,\n hideClose\n });\n }\n }\n });\n\n return disclaimers;\n }\n\n private loadOptionsOnInitialize(onLoad: UrlOrPoCustomizationFunction) {\n this.loadSubscription = this.getPoDynamicPageOptions(onLoad).subscribe(responsePoOption =>\n this.poPageCustomizationService.changeOriginalOptionsToNewOptions(this, responsePoOption)\n );\n }\n\n private getPoDynamicPageOptions(onLoad: UrlOrPoCustomizationFunction): Observable<PoPageDynamicSearchOptions> {\n const originalOption: PoPageDynamicSearchOptions = {\n title: this.title,\n actions: this.actions,\n breadcrumb: this.breadcrumb,\n filters: this.filters,\n keepFilters: this.keepFilters,\n concatFilters: this.concatFilters,\n hideRemoveAllDisclaimer: this.hideRemoveAllDisclaimer,\n hideCloseDisclaimers: this.hideCloseDisclaimers,\n quickSearchWidth: this.quickSearchWidth\n };\n\n const pageOptionSchema: PoPageDynamicOptionsSchema<PoPageDynamicSearchOptions> = {\n schema: [\n {\n nameProp: 'filters',\n merge: true,\n keyForMerge: 'property'\n },\n {\n nameProp: 'actions',\n merge: true,\n keyForMerge: 'label'\n },\n {\n nameProp: 'breadcrumb'\n },\n {\n nameProp: 'title'\n },\n {\n nameProp: 'keepFilters'\n },\n {\n nameProp: 'concatFilters'\n },\n {\n nameProp: 'hideRemoveAllDisclaimer'\n },\n {\n nameProp: 'hideCloseDisclaimers'\n },\n {\n nameProp: 'quickSearchWidth'\n }\n ]\n };\n\n return this.poPageCustomizationService.getCustomOptions(onLoad, originalOption, pageOptionSchema);\n }\n\n private addComplexFilter(filter: object): object {\n let complexFilter;\n\n Object.keys(filter).forEach(property => {\n if (filter[property].start && filter[property].end) {\n if (!complexFilter) {\n complexFilter = '';\n } else {\n complexFilter += ' and ';\n }\n complexFilter += `${property} ge '${filter[property].start}' and ${property} le '${filter[property].end}'`;\n delete filter[property];\n }\n });\n\n if (complexFilter) {\n filter = Object.assign(filter, { $filter: complexFilter });\n }\n\n return filter;\n }\n}\n","<po-page-list\n #poPageList\n [p-actions]=\"actions\"\n [p-breadcrumb]=\"breadcrumb\"\n [p-components-size]=\"componentsSize\"\n [p-disclaimer-group]=\"disclaimerGroup\"\n [p-filter]=\"filterSettings\"\n [p-title]=\"title\"\n [p-quick-search-value]=\"quickSearchValue\"\n>\n <po-advanced-filter\n [p-components-size]=\"componentsSize\"\n [p-filters]=\"filters\"\n [p-keep-filters]=\"keepFilters\"\n [p-literals]=\"advancedFilterLiterals\"\n (p-search-event)=\"onAdvancedSearch($event, true)\"\n >\n </po-advanced-filter>\n\n <ng-content></ng-content>\n</po-page-list>\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { PoDynamicModule, PoLanguageModule, PoModalModule, PoPageModule } from '@po-ui/ng-components';\n\nimport { PoPageCustomizationModule } from '../../services/po-page-customization/po-page-customization.module';\n\nimport { PoAdvancedFilterComponent } from './po-advanced-filter/po-advanced-filter.component';\nimport { PoPageDynamicSearchComponent } from './po-page-dynamic-search.component';\n\n/**\n * @description\n *\n * Módulo do template do po-page-dynamic-search.\n */\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n RouterModule,\n\n PoDynamicModule,\n PoLanguageModule,\n PoModalModule,\n PoPageModule,\n PoPageCustomizationModule\n ],\n declarations: [PoAdvancedFilterComponent, PoPageDynamicSearchComponent],\n exports: [PoPageDynamicSearchComponent]\n})\nexport class PoPageDynamicSearchModule {}\n","import { Input, Directive, Output, EventEmitter } from '@angular/core';\n\nimport { InputBoolean, PoBreadcrumb, PoTableColumnSort } from '@po-ui/ng-components';\n\nimport { convertToBoolean } from '../../utils/util';\n\nimport { PoPageDynamicTableFilters } from './interfaces/po-page-dynamic-table-filters.interface';\n\n@Directive()\nexport class PoPageDynamicListBaseComponent {\n /** Objeto com propriedades do breadcrumb. */\n @Input('p-breadcrumb') breadcrumb?: PoBreadcrumb = { items: [] };\n\n /** Endpoint da API dos recursos que serão exibidos. */\n /**\n * @description\n *\n * Endpoint usado pelo template para requisição dos recursos que serão exibidos.\n *\n * Ao realizar requisições de busca, podem ser enviados os parâmetros (caso possuam valor): `page`, `pageSize`, `search` e `order`.\n *\n * Caso a coluna estiver ordenada descendentemente será enviada da seguinte forma: `-name`, se for ordenada\n * ascendentemente será enviada apenas com o nome da coluna, por exemplo: `name`.\n *\n * Exemplo de uma requisição de busca:\n *\n * > `GET {end-point}/{resource}?page=1&pageSize=10&search=components&order=-name`\n *\n * Caso a ação `remove` estiver configurada, será feito uma requisição de exclusão nesse mesmo endpoint passando os campos\n * setados como `key: true`.\n *\n * > `DELETE {end-point}/{keys}`\n *\n * ```\n * <po-page-dynamic-table\n * [p-actions]=\"{ remove: true }\"\n * [p-fields]=\"[ { property: 'id', key: true } ]\"\n * p-service=\"/api/po-samples/v1/people\"\n * ...>\n * </po-page-dynamic-table>\n * ```\n *\n * Resquisição disparada, onde a propriedade `id` é igual a 2:\n *\n * ```\n * DELETE /api/po-samples/v1/people/2 HTTP/1.1\n * Host: localhost:4000\n * Connection: keep-alive\n * Accept: application/json, text/plain\n * ...\n * ```\n *\n * Para a ação `removeAll`, será feito uma requisição de exclusão em lote para esse mesmo endpoint passando, uma lista\n * de objetos com os campos setados como `key: true` via `payload`.\n *\n * > `DELETE {end-point}`\n *\n * > `Payload: [ {key}, {key} ... {key} ]`\n *\n * ```\n * <po-page-dynamic-table\n * [p-actions]=\"{ removeAll: true }\"\n * [p-fields]=\"[ { property: 'id', key: true } ]\"\n * p-service=\"/api/po-samples/v1/people\"\n * ...>\n * </po-page-dynamic-table>\n * ```\n *\n * Resquisição disparada, onde foram selecionados 3 itens para serem removidos:\n *\n * ```\n * DELETE /api/po-samples/v1/people HTTP/1.1\n * Host: localhost:4000\n * Connection: keep-alive\n * Accept: application/json, text/plain\n * ...\n * ```\n *\n * Request payload:\n *\n * ```\n * [{\"id\":2},{\"id\":4},{\"id\":5}]\n * ```\n *\n * > Caso esteja usando metadados com o template, será disparado uma requisição na inicialização do template para buscar\n * > os metadados da página passando o tipo do metadado esperado e a versão cacheada pelo browser.\n * >\n * > `GET {end-point}/metadata?type=list&version={version}`\n */\n @Input('p-service-api') serviceApi: string;\n\n /** Título da página. */\n @Input('p-title') title: string;\n\n /**\n * @optional\n *\n * @description\n * Evento disparado ao fechar o popover do gerenciador de colunas após alterar as colunas visíveis.\n *\n * O componente envia como parâmetro um array de string com as colunas visíveis atualizadas.\n * Por exemplo: [\"idCard\", \"name\", \"hireStatus\", \"age\"].\n */\n @Output('p-change-visible-columns') changeVisibleColumns = new EventEmitter<Array<string>>();\n\n /**\n * @optional\n *\n * @description\n * Evento disparado ao clicar no botão de restaurar padrão no gerenciador de colunas.\n *\n * O componente envia como parâmetro um array de string com as colunas configuradas inicialmente.\n * Por exemplo: [\"idCard\", \"name\", \"hireStatus\", \"age\"].\n */\n @Output('p-restore-column-manager') columnRestoreManager = new EventEmitter<Array<string>>();\n\n /**\n * @optional\n *\n * @description\n *\n * Evento executado ao ordenar colunas da tabela.\n *\n * Recebe um objeto `{ column, type }` onde:\n *\n * - column (`PoTableColumn`): objeto da coluna que foi clicada/ordenada.\n * - type (`PoTableColumnSortType`): tipo da ordenação.\n */\n @Output('p-sort-by') sortBy: EventEmitter<PoTableColumnSort> = new EventEmitter<PoTableColumnSort>();\n\n private _autoRouter: boolean = false;\n private _columns: Array<any> = [];\n private _duplicates: Array<string> = [];\n private _fields: Array<any> = [];\n private _filters: Array<any> = [];\n private _keys: Array<string> = [];\n\n /**\n * @optional\n *\n * @description\n *\n * Cria automaticamente as rotas de edição (novo/duplicate) e detalhes caso sejam definidas ações na propriedade `p-actions`\n *\n * As rotas criadas serão baseadas na propriedade `p-actions`.\n *\n * > Para o correto funcionamento não pode haver nenhuma rota coringa (`**`) especificada.\n *\n * @default false\n */\n @Input('p-auto-router') set autoRouter(value: boolean) {\n this._autoRouter = convertToBoolean(value);\n }\n\n get autoRouter(): boolean {\n return this._autoRouter;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Lista dos campos usados na tabela e busca avançada.\n *\n *\n * > Caso não seja definido fields a tabela assumirá o comportamento padrão.\n */\n @Input('p-fields') set fields(fields: Array<PoPageDynamicTableFilters>) {\n this._fields = Array.isArray(fields) ? [...fields] : [];\n\n this.setFieldsProperties(this.fields);\n }\n\n get fields(): Array<PoPageDynamicTableFilters> {\n return this._fields;\n }\n\n set columns(value) {\n this._columns = [...(this._columns = this.sortColumnsByOrder(value))];\n }\n\n get columns() {\n return this._columns;\n }\n\n set duplicates(value: Array<string>) {\n this._duplicates = [...value];\n }\n\n get duplicates() {\n return this._duplicates;\n }\n\n set filters(value: Array<PoPageDynamicTableFilters>) {\n this._filters = [...value];\n }\n\n get filters() {\n return this._filters;\n }\n\n set keys(value: Array<string>) {\n this._keys = [...value];\n }\n\n get keys() {\n return this._keys;\n }\n\n private setFieldsProperties(fields: Array<any>) {\n let visibleFilter: boolean;\n this.filters = fields\n .filter(field => field.filter === true)\n .map(filterField => {\n visibleFilter = !(filterField.initValue && filterField.fixed);\n return { ...filterField, visible: visibleFilter };\n });\n this.columns = fields.filter(\n field => field.visible === undefined || field.visible === true || field.allowColumnsManager === true\n );\n this.keys = fields.filter(field => field.key === true).map(field => field.property);\n this.duplicates = fields.filter(field => field.duplicate === true).map(field => field.property);\n }\n\n /**\n * Ordena um array de colunas com base na propriedade `order` de cada coluna.\n *\n * Este método é utilizado para organizar as colunas de uma tabela ou qualquer coleção similar\n * que necessite de ordenação baseada em um critério numérico definido pela propriedade `order`.\n * A ordenação segue as seguintes regras:\n *\n * 1. Colunas que possuem a propriedade `order` com um valor numérico válido e maior que zero\n * são ordenadas em ordem crescente de acordo com este valor.\n *\n * 2. Colunas que não possuem a propriedade `order` ou que possuem um valor inválido ou não numérico\n * para esta propriedade são consideradas iguais em termos de ordenação e mantêm a ordem original\n * em que apareceram no array fornecido.\n *\n * 3. No caso de duas colunas com valores de `order` válidos e idênticos, a ordem entre essas duas colunas\n * é determinada pela sua ordem original no array fornecido.\n *\n * @param columns Array de colunas a ser ordenado. Cada coluna é um objeto que pode conter uma propriedade `order`.\n * O tipo `Array<any>` é utilizado aqui para permitir flexibilidade nos objetos de coluna que podem ser passados,\n * mas espera-se que cada objeto tenha pelo menos uma propriedade `order` para a ordenação adequada.\n *\n * @returns Um novo array de colunas ordenado com base na propriedade `order`.\n */\n private sortColumnsByOrder(columns: Array<any>): Array<any> {\n return columns.sort((a, b) => {\n // Checa se 'order' existe e é um número válido em ambos os objetos\n const hasValidOrderA = 'order' in a && typeof a.order === 'number' && a.order > 0;\n const hasValidOrderB = 'order' in b && typeof b.order === 'number' && b.order > 0;\n\n // Se ambos têm 'order' válido, compara diretamente\n if (hasValidOrderA && hasValidOrderB) {\n return a.order - b.order;\n }\n\n // Se apenas A tem 'order' válido, A vem antes de B\n if (hasValidOrderA) {\n return -1;\n }\n\n // Se apenas B tem 'order' válido, B vem antes de A\n if (hasValidOrderB) {\n return 1;\n }\n\n // Se nenhum dos dois tem 'order' válido, mantém a ordem original (considerando como iguais neste contexto)\n return 0;\n });\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { Observable, of } from 'rxjs';\n\nimport { PoPageDynamicTableActions } from './interfaces/po-page-dynamic-table-actions.interface';\nimport { PoPageDynamicTableBeforeDuplicate } from './interfaces/po-page-dynamic-table-before-duplicate.interface';\nimport { PoPageDynamicTableBeforeEdit } from './interfaces/po-page-dynamic-table-before-edit.interface';\nimport { PoPageDynamicTableBeforeNew } from './interfaces/po-page-dynamic-table-before-new.interface';\nimport { PoPageDynamicTableBeforeRemove } from './interfaces/po-page-dynamic-table-before-remove.interface';\nimport { PoPageDynamicTableBeforeDetail } from './interfaces/po-page-dynamic-table-before-detail.interface';\nimport { PoPageDynamicTableBeforeRemoveAll } from './interfaces/po-page-dynamic-table-before-remove-all.interface';\nimport { PoPageDynamicTableCustomAction } from './interfaces/po-page-dynamic-table-custom-action.interface';\n\ninterface ExecuteActionParameter {\n action: string | Function;\n resource?: any;\n id?: string | number;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PoPageDynamicTableActionsService {\n private http = inject(HttpClient);\n\n readonly headers: HttpHeaders = new HttpHeaders({\n 'X-PO-SCREEN-LOCK': 'true'\n });\n\n beforeDuplicate(\n action: PoPageDynamicTableActions['beforeDuplicate'],\n id: any,\n body: any\n ): Observable<PoPageDynamicTableBeforeDuplicate> {\n const resource = body ?? {};\n\n return this.executeAction({ action, resource, id });\n }\n\n beforeEdit(\n action: PoPageDynamicTableActions['beforeEdit'],\n id: any,\n body: any\n ): Observable<PoPageDynamicTableBeforeEdit> {\n const resource = body ?? {};\n\n return this.executeAction({ action, resource, id });\n }\n\n beforeNew(action?: PoPageDynamicTableActions['beforeNew']): Observable<PoPageDynamicTableBeforeNew> {\n return this.executeAction({ action });\n }\n\n beforeRemove(\n action: PoPageDynamicTableActions['beforeRemove'],\n id: string,\n resource: any\n ): Observable<PoPageDynamicTableBeforeRemove> {\n return this.executeAction({ action, id, resource });\n }\n\n beforeRemoveAll(\n action: PoPageDynamicTableActions['beforeRemoveAll'],\n resources: Array<any>\n ): Observable<PoPageDynamicTableBeforeRemoveAll> {\n return this.executeAction({ action, resource: resources });\n }\n\n beforeDetail(\n action: PoPageDynamicTableActions['beforeDetail'],\n id: string,\n resource: any\n ): Observable<PoPageDynamicTableBeforeDetail> {\n return this.executeAction({ action, id, resource });\n }\n\n customAction(action: PoPageDynamicTableCustomAction['action'], resource: any = []) {\n return this.executeAction({ action, resource });\n }\n\n private executeAction<T>({ action, resource = {}, id }: ExecuteActionParameter): Observable<T> {\n if (!action) {\n return of(<T>{});\n }\n\n if (typeof action === 'string') {\n const url = id ? `${action}/${id}` : action;\n\n return this.http.post<T>(url, resource, { headers: this.headers });\n }\n if (id) {\n return of(action(id, resource));\n }\n return of(action(resource));\n }\n}\n","export const poPageDynamicTableLiteralsDefault = {\n en: {\n pageAction: 'New',\n pageActionRemoveAll: 'Delete',\n tableActionView: 'View',\n tableActionEdit: 'Edit',\n tableActionDuplicate: 'Duplicate',\n tableActionDelete: 'Delete',\n confirmRemoveTitle: 'Confirm delete',\n confirmRemoveMessage: 'Are you sure you want to delete this record? You can not undo this action.',\n confirmRemoveAllTitle: 'Confirm batch deletion',\n confirmRemoveAllMessage: 'Are you sure you want to delete all these records? You can not undo this action.',\n loadDataErrorNotification: 'Service not found',\n removeSuccessNotification: 'Item deleted successfully',\n removeAllSuccessNotification: 'Items deleted successfully'\n },\n es: {\n pageAction: 'Nuevo',\n pageActionRemoveAll: 'Borrar',\n tableActionView: 'Visualizar',\n tableActionEdit: 'Editar',\n tableActionDuplicate: 'Duplicar',\n tableActionDelete: 'Borrar',\n confirmRemoveTitle: 'Confirmar la exclusión',\n confirmRemoveMessage: '¿Está seguro de que desea eliminar este registro? No puede deshacer esta acción.',\n confirmRemoveAllTitle: 'Confirmar la exclusión por lotes',\n confirmRemoveAllMessage: '¿Está seguro de que desea eliminar todos estos registros? No puede deshacer esta acción.',\n loadDataErrorNotification: 'Servicio no informado.',\n removeSuccessNotification: 'Elemento eliminado con éxito',\n removeAllSuccessNotification: 'Elementos eliminados con éxito'\n },\n pt: {\n pageAction: 'Novo',\n pageActionRemoveAll: 'Excluir',\n tableActionView: 'Visualizar',\n tableActionEdit: 'Editar',\n tableActionDuplicate: 'Duplicar',\n tableActionDelete: 'Excluir',\n confirmRemoveTitle: 'Confirmar exclusão',\n confirmRemoveMessage: 'Tem certeza de que deseja excluir esse registro? Você não poderá desfazer essa ação.',\n confirmRemoveAllTitle: 'Confirmar exclusão em lote',\n confirmRemoveAllMessage:\n 'Tem certeza de que deseja excluir todos esses registros? Você não poderá desfazer essa ação.',\n loadDataErrorNotification: 'Serviço não informado.',\n removeSuccessNotification: 'Item excluido com sucesso',\n removeAllSuccessNotification: 'Items excluidos com sucesso'\n },\n ru: {\n pageAction: 'Новый',\n pageActionRemoveAll: 'Удалить',\n tableActionView: 'Просмотр',\n tableActionEdit: 'Редактировать',\n tableActionDuplicate: 'Дублировать',\n tableActionDelete: 'Удалить',\n confirmRemoveTitle: 'Подтверждение удаления',\n confirmRemoveMessage: 'Вы уверены, что хотите удалить эту запись? Вы не можете отменить это действие.',\n confirmRemoveAllTitle: 'Подтвердите удаление пакета',\n confirmRemoveAllMessage: 'Вы уверены, что хотите удалить все эти записи? Вы не можете отменить это действие.',\n loadDataErrorNotification: 'Сервис не найден',\n removeSuccessNotification: 'Элемент успешно удален',\n removeAllSuccessNotification: 'Элементы успешно удалены'\n }\n};\n","import { Component, Input, OnDestroy, OnInit, inject } from '@angular/core';\nimport { ActivatedRoute, Route, Router } from '@angular/router';\n\nimport { EMPTY, Observable, Subscription, of } from 'rxjs';\nimport { map, switchMap, tap } from 'rxjs/operators';\n\nimport {\n PoDialogConfirmOptions,\n PoDialogService,\n PoLanguageService,\n PoNotificationService,\n PoPageAction,\n PoTableAction,\n PoTableColumnSort,\n PoTableColumnSortType,\n PoTableColumnSpacing,\n poLocaleDefault\n} from '@po-ui/ng-components';\n\nimport * as util from '../../utils/util';\nimport { convertToBoolean, getDefaultSizeFn, validateSizeFn } from '../../utils/util';\n\nimport { PoPageDynamicDetailComponent } from '../po-page-dynamic-detail/po-page-dynamic-detail.component';\n\nimport { PoPageDynamicService } from '../../services/po-page-dynamic/po-page-dynamic.service';\nimport { isExternalLink, openExternalLink, removeDuplicateItemsWithArrayKey } from '../../utils/util';\nimport { PoPageDynamicSearchLiterals } from '../po-page-dynamic-search/interfaces/po-page-dynamic-search-literals.interface';\nimport { PoPageCustomizationService } from './../../services/po-page-customization/po-page-customization.service';\nimport { PoPageDynamicOptionsSchema } from './../../services/po-page-customization/po-page-dynamic-options.interface';\nimport { PoPageDynamicTableActions } from './interfaces/po-page-dynamic-table-actions.interface';\nimport { PoPageDynamicTableBeforeDetail } from './interfaces/po-page-dynamic-table-before-detail.interface';\nimport { PoPageDynamicTableBeforeDuplicate } from './interfaces/po-page-dynamic-table-before-duplicate.interface';\nimport { PoPageDynamicTableBeforeEdit } from './interfaces/po-page-dynamic-table-before-edit.interface';\nimport { PoPageDynamicTableBeforeNew } from './interfaces/po-page-dynamic-table-before-new.interface';\nimport { PoPageDynamicTableBeforeRemoveAll } from './interfaces/po-page-dynamic-table-before-remove-all.interface';\nimport { PoPageDynamicTableBeforeRemove } from './interfaces/po-page-dynamic-table-before-remove.interface';\nimport { PoPageDynamicTableCustomAction } from './interfaces/po-page-dynamic-table-custom-action.interface';\nimport { PoPageDynamicTableCustomTableAction } from './interfaces/po-page-dynamic-table-custom-table-action.interface';\nimport { PoPageDynamicTableMetaData } from './interfaces/po-page-dynamic-table-metadata.interface';\nimport { PoPageDynamicTableOptions } from './interfaces/po-page-dynamic-table-options.interface';\nimport { PoPageDynamicListBaseComponent } from './po-page-dynamic-list-base.component';\nimport { PoPageDynamicTableActionsService } from './po-page-dynamic-table-actions.service';\nimport { poPageDynamicTableLiteralsDefault } from './po-page-dynamic-table-literals';\n\nconst PAGE_SIZE_DEFAULT = 10;\n\ntype UrlOrPoCustomizationFunction = string | (() => PoPageDynamicTableOptions);\n\n/**\n * @docsExtends PoPageDynamicListBaseComponent\n *\n * @description\n *\n * O `po-page-dynamic-table` é uma página que exibe uma lista de registros em uma tabela baseado em uma lista de fields,\n * o mesmo também suporta metadados conforme especificado na documentação.\n *\n * ### Utilização via rota\n *\n * Ao utilizar as rotas para inicializar o template, o `page-dynamic-table` disponibiliza propriedades que devem ser fornecidas no arquivo de configuração de rotas da aplicação, para\n * poder especificar o endpoint dos dados e dos metadados que serão carregados na inicialização.\n *\n * Exemplo de utilização:\n *\n * Arquivo de configuração de rotas da aplicação: `app-routing.module.ts`\n * ```\n * const routes: Routes = [\n * {\n * path: 'people',\n * component: PoPageDynamicTableComponent,\n * data: {\n * serviceApi: 'http://localhost:3000/v1/people', // endpoint dos dados\n * serviceMetadataApi: 'http://localhost:3000/v1/metadata', // endpoint dos metadados utilizando o método HTTP Get\n * serviceLoadApi: 'http://localhost:3000/load-metadata' // endpoint de customizações dos metadados utilizando o método HTTP Post\n * }\n * },\n * {\n * path: 'home',\n * component: HomeExampleComponent\n * }\n * ];\n *\n * ```\n * O componente primeiro irá carregar o metadado da rota definida na propriedade serviceMetadataApi\n * e depois irá buscar da rota definida na propriedade serviceLoadApi.\n *\n * A requisição dos metadados é feita na inicialização do template para buscar os metadados da página passando o\n * tipo do metadado esperado e a versão cacheada pelo browser.\n *\n * > Caso o servidor retornar um erro ao recuperar os metadados, serão repassados os metadados salvos em cache,\n * se o cache não existir será disparada uma notificação.\n *\n * O formato esperado na resposta da requisição está especificado na interface\n * [PoPageDynamicTableMetadata](/documentation/po-page-dynamic-table#po-page-dynamic-table-metadata). Por exemplo:\n *\n * ```\n * {\n * version: 1,\n * title: 'Person Table',\n * fields: [\n * { property: 'id', key: true, disabled: true },\n * { property: 'status' },\n * { property: 'name' },\n * { property: 'nickname' },\n * { property: 'birthdate', label: 'Birth date' },\n * { property: 'genre' },\n * { property: 'city' },\n * { property: 'country' }\n * ],\n * keepFilters: true\n * }\n * ```\n *\n * > Caso o endpoint dos metadados não seja especificado, será feito uma requisição utilizando o `serviceApi` da seguinte forma:\n * ```\n * GET {end-point}/metadata?type=list&version={version}\n * ```\n *\n * #### Tokens customizáveis\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade | Descrição | Valor Padrão |\n * |---------------------|---------------------------------------------|---------------------------------------|\n * | **Header** | | |\n * | `--padding` | Espaçamento do header | `var(--spacing-xs) var(--spacing-md)` |\n * | `--gap` | Espaçamento entre os breadcrumbs e o título | `var(--spacing-md)` |\n * | `--gap-actions` | Espaçamento entre as ações | `var(--spacing-xs)` |\n * | `--font-family` | Família tipográfica do título | `var(--font-family-theme)` |\n * | **Content** | | |\n * | `--padding-content` | Espaçamento do conteúdo | `var(--spacing-xs) var(--spacing-sm)` |\n *\n * @example\n *\n * <example name=\"po-page-dynamic-table-basic\" title=\"PO Page Dynamic Table Basic\">\n * <file name=\"sample-po-page-dynamic-table-basic/sample-po-page-dynamic-table-basic.component.html\"> </file>\n * <file name=\"sample-po-page-dynamic-table-basic/sample-po-page-dynamic-table-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-dynamic-table-people\" title=\"PO Page Dynamic Table - People\">\n * <file name=\"sample-po-page-dynamic-table-people/sample-po-page-dynamic-table-people.component.html\"> </file>\n * <file name=\"sample-po-page-dynamic-table-people/sample-po-page-dynamic-table-people.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-dynamic-table-users\" title=\"PO Page Dynamic Table - Users\">\n * <file name=\"sample-po-page-dynamic-table-users/sample-po-page-dynamic-table-users.component.html\"> </file>\n * <file name=\"sample-po-page-dynamic-table-users/sample-po-page-dynamic-table-users.component.ts\"> </file>\n * <file name=\"sample-po-page-dynamic-table-users/sample-po-page-dynamic-table-users.service.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-dynamic-table-hotels\" title=\"PO Page Dynamic Table - Hotels\">\n * <file name=\"sample-po-page-dynamic-table-hotels/sample-po-page-dynamic-table-hotels.component.html\"> </file>\n * <file name=\"sample-po-page-dynamic-table-hotels/sample-po-page-dynamic-table-hotels.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-dynamic-table-drag-and-drop\" title=\"PO Page Dynamic Table - Drag and Drop\">\n * <file name=\"sample-po-page-dynamic-table-drag-and-drop/sample-po-page-dynamic-table-drag-and-drop.component.html\"> </file>\n * <file name=\"sample-po-page-dynamic-table-drag-and-drop/sample-po-page-dynamic-table-drag-and-drop.component.ts\"> </file>\n * </example>\n */\n@Component({\n selector: 'po-page-dynamic-table',\n templateUrl: './po-page-dynamic-table.component.html',\n providers: [PoPageDynamicService],\n standalone: false\n})\nexport class PoPageDynamicTableComponent extends PoPageDynamicListBaseComponent implements OnInit, OnDestroy {\n private router = inject(Router);\n private activatedRoute = inject(ActivatedRoute);\n private poDialogService = inject(PoDialogService);\n private poNotification = inject(PoNotificationService);\n private poPageDynamicService = inject(PoPageDynamicService);\n private poPageCustomizationService = inject(PoPageCustomizationService);\n private poPageDynamicTableActionsService = inject(PoPageDynamicTableActionsService);\n\n /**\n * Função ou serviço que será executado na inicialização do componente.\n *\n * A propriedade aceita os seguintes tipos:\n * - `string`: *Endpoint* usado pelo componente para requisição via `POST`.\n * - `function`: Método que será executado.\n *\n * O retorno desta função deve ser do tipo `PoPageDynamicTableOptions`,\n * onde o usuário poderá customizar novos campos, breadcrumb, title e actions\n *\n * Por exemplo:\n *\n * ```\n * getPageOptions(): PoPageDynamicTableOptions {\n * return {\n * actions:\n * { new: 'new', edit: 'edit/:id', remove: true },\n * fields: [\n * { property: 'idCard', gridColumns: 6 }\n * ]\n * };\n * }\n *\n * ```\n * Para referenciar a sua função utilize a propriedade `bind`, por exemplo:\n * ```\n * [p-load]=\"onLoadOptions.bind(this)\"\n * ```\n */\n @Input('p-load') onLoad: string | (() => PoPageDynamicTableOptions);\n\n /**\n * @optional\n *\n * @description\n *\n * Mantém na modal de `Busca Avançada` os valores preenchidos do último filtro realizado pelo usuário.\n *\n * @default `false`\n */\n @Input({ alias: 'p-keep-filters', transform: convertToBoolean }) keepFilters: boolean = false;\n\n /**\n * @optional\n *\n * @description\n *\n * Define que a coluna de ações ficará no lado direito da tabela.\n *\n * @default `false`\n */\n @Input({ alias: 'p-actions-right', transform: convertToBoolean }) actionRight: boolean = false;\n\n /**\n * @optional\n *\n * @description\n *\n * Permite a utilização da pesquisa rápida junto com a pesquisa avançada.\n *\n * Desta forma, ao ter uma pesquisa avançada estabelecida e ser\n * preenchido a pesquisa rápida, o filtro será concatenado adicionando a pesquisa\n * rápida também na lista de `disclaimers` a aplicando uma nova busca com a concatenação.\n *\n * Por exemplo, com os seguintes filtros aplicados:\n * - filtro avançado: `{ name: 'Mike', age: '12' }`\n * - filtro rápido: `{ search: 'paper' }`\n *\n * A requisição dos dados na API ficará com os parâmetros:\n * ```\n * page=1&pageSize=10&name=Mike&age=12&search=paper\n * ```\n *\n * @default `false`\n */\n @Input({ alias: 'p-concat-filters', transform: convertToBoolean }) concatFilters: boolean = false;\n\n /**\n * @optional\n *\n * @description\n *\n * Permite que o gerenciador de colunas, responsável pela definição de quais colunas serão exibidas, seja escondido.\n *\n * @default `false`\n */\n @Input({ alias: 'p-hide-columns-manager', transform: convertToBoolean })\n hideColumnsManager: boolean = false;\n\n /**\n * @optional\n *\n * @description\n *\n * Oculta o botão para remover todos os *disclaimers* do grupo.\n *\n * > Por padrão, o mesmo é exibido à partir de dois ou mais *disclaimers* com a opção `hideClose` habilitada.\n *\n * @default `false`\n */\n @Input({ alias: 'p-hide-remove-all-disclaimer', transform: convertToBoolean })\n hideRemoveAllDisclaimer: boolean = false;\n\n /**\n * @optional\n *\n * @description\n *\n * Se verdadeiro, ativa a funcionalidade de scroll infinito para a tabela e o botão \"Carregar Mais\" deixará de ser exibido. Ao chegar no fim da tabela\n * executará a função `p-show-more`.\n *\n * **Regras de utilização:**\n * - O scroll infinito só funciona para tabelas que utilizam a propriedade `p-height` e que possuem o scroll já na carga inicial dos dados.\n *\n * @default `false`\n */\n @Input({ alias: 'p-infinite-scroll', transform: convertToBoolean }) infiniteScroll: boolean = false;\n\n hasNext = false;\n items = [];\n literals;\n pageActions: Array<PoPageAction> = [];\n tableActions: Array<PoTableAction> = [];\n\n private _actions: PoPageDynamicTableActions = {};\n private _pageCustomActions: Array<PoPageDynamicTableCustomAction> = [];\n private _height: number;\n private _oldQuickSearchParam: string;\n private _quickSearchParam: string = 'search';\n private _quickSearchValue: string;\n private _quickSearchWidth: number;\n private _tableCustomActions: Array<PoPageDynamicTableCustomTableAction> = [];\n\n private page: number = 1;\n private currentPage: number = 1;\n private itemSelectedAction;\n private params = {};\n private sortedColumn: PoTableColumnSort;\n private subscriptions = new Subscription();\n private hasCustomActionWithSelectable = false;\n\n private _componentsSize?: string = undefined;\n private _customPageListActions: Array<PoPageAction> = [];\n private _customTableActions: Array<PoTableAction> = [];\n private _defaultPageActions: Array<PoPageAction> = [];\n private _defaultTableActions: Array<PoTableAction> = [];\n private _hideCloseDisclaimers: Array<string> = [];\n private _draggable = false;\n private _virtualScroll?: boolean = true;\n\n private set defaultPageActions(value: Array<PoPageAction>) {\n this._defaultPageActions = value;\n this.updatePageActions();\n }\n\n private set defaultTableActions(value: Array<PoTableAction>) {\n this._defaultTableActions = value;\n this.updateTableActions();\n }\n\n private set customPageListActions(value: Array<PoPageAction>) {\n this._customPageListActions = value;\n this.updatePageActions();\n }\n\n private set customTableActions(value: Array<PoTableAction>) {\n this._customTableActions = value;\n this.updateTableActions();\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Ações da página e da tabela.\n * > Caso utilizar a ação padrão de excluir, a mesma será exibida por último na tabela.\n */\n @Input('p-actions') set actions(value: PoPageDynamicTableActions) {\n this._actions = value && typeof value === 'object' && Object.keys(value).length > 0 ? value : {};\n\n this.setPageActions(this.actions);\n this.setRemoveAllAction();\n this.setTableActions(this.actions);\n }\n\n get actions(): PoPageDynamicTableActions {\n return this._actions;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Define o tamanho dos componentes de formulário no template:\n * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n * - `medium`: aplica a medida medium de cada componente.\n *\n * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n *\n * @default `medium`\n */\n @Input('p-components-size') set componentsSize(value: string) {\n this._componentsSize = validateSizeFn(value);\n }\n\n get componentsSize(): string {\n return this._componentsSize ?? getDefaultSizeFn();\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Lista de ações customizadas da página que serão incorporadas às ações\n * informadas através da propriedade `p-actions`.\n *\n * Essas ações ficam localizadas na parte superior da página em botões com ações.\n *\n * Exemplo de utilização:\n * ```\n * [\n * { label: 'Export', action: this.export.bind(this) },\n * { label: 'Print', action: this.print.bind(this) }\n * ];\n * ```\n */\n @Input('p-page-custom-actions') set pageCustomActions(value: Array<PoPageDynamicTableCustomAction>) {\n this._pageCustomActions = Array.isArray(value) ? value : [];\n\n this.customPageListActions = this.transformCustomActionsToPageListAction(this.pageCustomActions);\n this.hasCustomActionWithSelectable = this.pageCustomActions.some(customAction => customAction.selectable);\n }\n\n get pageCustomActions(): Array<PoPageDynamicTableCustomAction> {\n return this._pageCustomActions;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Lista de ações customizadas na tabela da página que serão incorporadas às ações\n * informadas através da propriedade `p-actions`.\n *\n * Exemplo de utilização:\n * ```\n * [\n * { label: 'Apply discount', action: this.applyDiscount.bind(this) },\n * { label: 'Details', action: this.details.bind(this) }\n * ];\n * ```\n * > Caso utilizar a ação padrão de excluir, a mesma será exibida por último na tabela.\n */\n @Input('p-table-custom-actions') set tableCustomActions(value: Array<PoPageDynamicTableCustomTableAction>) {\n this._tableCustomActions = Array.isArray(value) ? value : [];\n\n this.customTableActions = this.transformTableCustomActionsToTableActions(this.tableCustomActions);\n }\n\n get tableCustomActions(): Array<PoPageDynamicTableCustomTableAction> {\n return this._tableCustomActions;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Largura do campo de busca, utilizando o *Grid System*,\n * e limitado ao máximo de 6 colunas. O tamanho mínimo é controlado\n * conforme resolução de tela para manter a consistência do layout.\n */\n @Input('p-quick-search-width') set quickSearchWidth(value: number) {\n this._quickSearchWidth = util.convertToInt(value);\n }\n\n get quickSearchWidth(): number {\n return this._quickSearchWidth;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Define a altura da tabela em *pixels* e fixa o cabeçalho.\n */\n @Input('p-height') set height(value: number) {\n this._height = util.convertToInt(value);\n }\n\n get height(): number {\n return this._height;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Lista de filtros que terão a opção de fechar ocultada\n * em seu respectivo disclaimer. Utilizar o atributo `property` do campo.\n *\n * Exemplo de utilização:\n * ```\n * ['city','name'];\n * ```\n */\n @Input('p-hide-close-disclaimers') set hideCloseDisclaimers(value: Array<string>) {\n this._hideCloseDisclaimers = Array.isArray(value) ? value : [];\n }\n\n get hideCloseDisclaimers(): Array<string> {\n return this._hideCloseDisclaimers;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Identificador do parâmetro enviado ao serviço ao realizar uma busca rápida.\n *\n * @default 'search'\n */\n @Input('p-quick-search-param') set quickSearchParam(value: string) {\n this._quickSearchParam = value ?? 'search';\n }\n\n get quickSearchParam(): string {\n return this._quickSearchParam;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Valor padrão na busca rápida ao inicializar o componente\n *\n */\n @Input('p-quick-search-value') set quickSearchValue(value: string) {\n this._quickSearchValue = value;\n }\n\n get quickSearchValue(): string {\n return this._quickSearchValue;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Objeto com as literais usadas no `po-page-dynamic-table`.\n *\n * Existem duas maneiras de customizar o componente, passando um objeto com todas as literais disponíveis:\n *\n * ```\n * const customLiterals: PoPageDynamicSearchLiterals = {\n * disclaimerGroupTitle: 'Filtros aplicados:',\n * filterTitle: 'Filtro avançado',\n * filterCancelLabel: 'Fechar',\n * filterConfirmLabel: 'Aplicar',\n * quickSearchLabel: 'Valor pesquisado:',\n * searchPlaceholder: 'Pesquise aqui'\n * };\n * ```\n *\n * Ou passando apenas as literais que deseja customizar:\n *\n * ```\n * const customLiterals: PoPageDynamicSearchLiterals = {\n * filterTitle: 'Filtro avançado'\n * };\n * ```\n *\n * E para carregar as literais customizadas, basta apenas passar o objeto para o componente.\n *\n * ```\n * <po-page-dynamic-table\n * [p-literals]=\"customLiterals\">\n * </po-page-dynamic-table>\n * ```\n *\n * > O valor padrão será traduzido de acordo com o idioma configurado no [`PoI18nService`](/documentation/po-i18n) ou *browser*.\n */\n @Input('p-literals') searchLiterals: PoPageDynamicSearchLiterals;\n\n /**\n * @optional\n *\n * @description\n *\n * Define o espaçamento interno das células, impactando diretamente na altura das linhas do table. Os valores\n * permitidos são definidos pelo enum **PoTableColumnSpacing**.\n *\n * > Em nível de acessibilidade **AA**, caso o valor de `p-spacing` não seja definido, o valor padrão será\n * > `extraSmall` nos seguintes cenários:\n * > - Quando o valor de `p-components-size` for `small`;\n * > - Quando o valor padrão dos componentes for configurado como `small` no\n * > [serviço de tema](https://po-ui.io/documentation/po-theme).\n *\n * @default `medium`\n */\n @Input('p-spacing') spacing: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Habilita ou desabilita a quebra automática de texto. Quando ativada, o texto que excede\n * o espaço disponível é transferido para a próxima linha em pontos apropriados para uma\n * leitura clara.\n *\n * > Incompatível com `virtual-scroll`, que requer altura fixa nas linhas.\n *\n * @default `false`\n */\n @Input({ alias: 'p-text-wrap', transform: convertToBoolean }) textWrap?: boolean = false;\n\n /**\n * @optional\n *\n * @description\n *\n * Habilita o modo drag and drop para as colunas da tabela.\n *\n */\n @Input('p-draggable') set draggable(value: boolean) {\n this._draggable = value;\n }\n\n get draggable(): boolean {\n return this._draggable;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Habilita o `virtual-scroll` na tabela para melhorar a performance com grandes volumes de dados.\n * Requer altura (`p-height`) para funcionar corretamente.\n *\n * > Incompatível com `p-text-wrap` e `master-detail`, pois o `virtual-scroll` exige altura fixa nas linhas.\n *\n * @default `true`\n */\n @Input('p-virtual-scroll') set virtualScroll(value: boolean) {\n this._virtualScroll = convertToBoolean(value && this.height > 0);\n }\n\n get virtualScroll() {\n return this._virtualScroll;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Controla a visibilidade dos filtros fixos na página.\n *\n * - Quando `true` (default), todos os filtros, incluindo os fixos, são exibidos, permitindo que o usuário visualize os filtros aplicados.\n * - Quando `false`, os filtros fixos são ocultados, não sendo exibidos na interface, mas ainda sendo aplicados como filtros nas requisições.\n *\n * Esta propriedade trabalha em conjunto com a propriedade `fixed` dos filtros individuais. Filtros marcados como `fixed: true` não serão exibidos na interface do filtro avançado quando `visibleFixedFilters` for `false`, mas continuarão a ser aplicados de forma transparente ao usuário. Dessa forma, permite-se maior flexibilidade no controle de quais filtros devem ser visíveis ao usuário ou devem ser aplicados permanentemente sem interferência.\n *\n * **Exemplo de uso:**\n * ```html\n * <!-- Para ocultar os filtros fixos -->\n * <po-page-dynamic-table [p-visible-fixed-filters]=\"false\"></po-page-dynamic-table>\n * ```\n */\n @Input('p-visible-fixed-filters') visibleFixedFilters: boolean = true;\n\n /* eslint-disable max-params */\n constructor() {\n const languageService = inject(PoLanguageService);\n\n super();\n\n const language = languageService.getShortLanguage();\n\n this.literals = {\n ...poPageDynamicTableLiteralsDefault[poLocaleDefault],\n ...poPageDynamicTableLiteralsDefault[language]\n };\n }\n /* eslint-enable max-params */\n\n ngOnInit(): void {\n this.loadDataFromAPI();\n }\n\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n\n onAdvancedSearch(filter) {\n this.subscriptions.add(this.loadData({ page: 1, ...filter }).subscribe());\n this.params = filter;\n\n if (this.keepFilters) {\n this.updateFilterValue(filter);\n }\n }\n\n onChangeDisclaimers(disclaimers) {\n const filter = {};\n\n disclaimers.forEach(disclaimer => {\n filter[disclaimer.property] = disclaimer.value;\n });\n\n this.onAdvancedSearch(filter);\n }\n\n onQuickSearch(termTypedInQuickSearch) {\n const quickSearchParam = termTypedInQuickSearch ? { [this.quickSearchParam]: termTypedInQuickSearch } : {};\n this.params = this.concatFilters ? { ...this.params, ...quickSearchParam } : { ...quickSearchParam };\n\n if (this._oldQuickSearchParam in this.params && this._oldQuickSearchParam !== this.quickSearchParam) {\n delete this.params[this._oldQuickSearchParam];\n }\n\n this._oldQuickSearchParam = this.quickSearchParam;\n this.subscriptions.add(this.loadData(termTypedInQuickSearch ? { page: 1, ...this.params } : undefined).subscribe());\n }\n\n onSort(sortedColumn: PoTableColumnSort) {\n if (this.height) {\n const order = sortedColumn.type === 'ascending' ? true : false;\n util.sortArrayOfObjects(this.items, sortedColumn.column.property, order);\n }\n this.sortedColumn = sortedColumn;\n }\n\n onChangeVisibleColumns(value) {\n this.changeVisibleColumns.emit(value);\n }\n\n onColumnRestoreManager(value: Array<string>) {\n this.columnRestoreManager.emit(value);\n }\n\n onSortBy(sortedColumn: PoTableColumnSort) {\n this.sortBy.emit(sortedColumn);\n }\n\n showMore() {\n this.subscriptions.add(this.loadData({ page: ++this.page, ...this.params }).subscribe());\n }\n\n get enableSelectionTable() {\n return this.hasActionRemoveAll || this.hasCustomActionWithSelectable;\n }\n\n get hasActionRemoveAll() {\n return !!this.actions.removeAll;\n }\n\n /**\n * Função que realiza a atualização dos dados da tabela.\n *\n * Para utilizá-la é necessário capturar a instância do `page dynamic table`, como por exemplo:\n *\n * ``` html\n * <po-page-dynamic-table #dynamicTable [p-service-api]=\"serviceApi\"></po-page-dynamic-table>\n * ```\n *\n * ``` javascript\n * import { PoPageDynamicTableComponent, PoDynamicFormField } from '@po-ui/ng-components';\n *\n * ...\n *\n * @ViewChild('dynamicTable', { static: true }) dynamicTable: PoPageDynamicTableComponent;\n *\n * pageCustomActions: Array<PoPageDynamicTableCustomAction> = [\n * {\n * label: 'Update',\n * action: this.updateTable.bind(this),\n * icon: 'an-arrows-clockwise'\n * }]\n *\n * updateTable() {\n * this.dynamicTable.updateDataTable();\n * }\n * ```\n *\n *\n * @param {{page: number, key: value }} filter Propriedade para envio de um filtro customizado.\n * Exemplo de envio:\n *\n *```\n * this.dynamicTable.updateDataTable({page: 3, search: 'Brasil'});\n * ```\n * Caso não seja passado um filtro customizado para o método `updateDataTable` a tabela será atualizada conforme a página do ultimo item modificado.\n */\n public updateDataTable(filter?: any) {\n const indexItemSelected = this.items.findIndex(item => item === this.itemSelectedAction);\n const pageNumber = Math.floor(indexItemSelected / PAGE_SIZE_DEFAULT);\n this.currentPage = pageNumber < 0 ? this.currentPage : pageNumber + 1;\n if (this.currentPage === undefined) {\n this.currentPage = 1;\n }\n\n if (filter) {\n this.subscriptions.add(this.loadData(filter).subscribe());\n } else {\n this.subscriptions.add(this.loadData({ page: this.currentPage, ...this.params }).subscribe());\n }\n }\n\n private confirmRemove(\n actionRemove: PoPageDynamicTableActions['remove'],\n actionBeforeRemove: PoPageDynamicTableActions['beforeRemove'],\n item\n ) {\n const confirmOptions: PoDialogConfirmOptions = {\n title: this.literals.confirmRemoveTitle,\n message: this.literals.confirmRemoveMessage,\n componentsSize: this.componentsSize,\n confirm: this.remove.bind(this, item, actionRemove, actionBeforeRemove)\n };\n\n this.poDialogService.confirm(confirmOptions);\n }\n\n private confirmRemoveAll(\n actionRemoveAll: PoPageDynamicTableActions['remove'],\n actionBeforeRemoveAll: PoPageDynamicTableActions['beforeRemove']\n ) {\n const confirmOptions: PoDialogConfirmOptions = {\n title: this.literals.confirmRemoveAllTitle,\n message: this.literals.confirmRemoveAllMessage,\n confirm: this.removeAll.bind(this, actionRemoveAll, actionBeforeRemoveAll)\n };\n\n this.poDialogService.confirm(confirmOptions);\n }\n\n private formatUniqueKey(item) {\n const keys = util.mapObjectByProperties(item, this.keys);\n\n return util.valuesFromObject(keys).join('|');\n }\n\n private getOrderParam(sortedColumn: PoTableColumnSort = { type: undefined }) {\n const { column, type } = sortedColumn;\n\n if (!column) {\n return {};\n }\n\n if (type === PoTableColumnSortType.Descending) {\n return { order: `-${column.property}` };\n }\n\n return { order: `${column.property}` };\n }\n\n private loadData(params: { page?: number; search?: string } = {}) {\n if (!this.serviceApi) {\n this.poNotification.error(this.literals.loadDataErrorNotification);\n return EMPTY;\n }\n\n const orderParam = this.getOrderParam(this.sortedColumn);\n const defaultParams: any = { page: 1, pageSize: PAGE_SIZE_DEFAULT };\n const fullParams: any = { ...defaultParams, ...params, ...orderParam };\n\n return this.poPageDynamicService.getResources(fullParams).pipe(\n tap(response => {\n let newArray;\n if (fullParams.page === 1) {\n newArray = removeDuplicateItemsWithArrayKey(response.items, response.items, this.keys);\n } else {\n newArray = removeDuplicateItemsWithArrayKey(this.items, response.items, this.keys);\n }\n this.items = newArray ? [...newArray] : this.items;\n this.page = fullParams.page;\n this.hasNext = response.hasNext;\n })\n );\n }\n\n private getMetadata(\n serviceApiFromRoute: string,\n onLoad: UrlOrPoCustomizationFunction\n ): Observable<PoPageDynamicTableMetaData> {\n if (serviceApiFromRoute) {\n return this.poPageDynamicService.getMetadata<PoPageDynamicTableMetaData>().pipe(\n tap(response => {\n this.autoRouter = response.autoRouter || this.autoRouter;\n this.actions = response.actions || this.actions;\n this.breadcrumb = response.breadcrumb || this.breadcrumb;\n this.fields = response.fields || this.fields;\n this.title = response.title || this.title;\n this.pageCustomActions = response.pageCustomActions || this.pageCustomActions;\n this.tableCustomActions = response.tableCustomActions || this.tableCustomActions;\n this.keepFilters = response.keepFilters || this.keepFilters;\n this.concatFilters = response.concatFilters || this.concatFilters;\n this.hideRemoveAllDisclaimer = response.hideRemoveAllDisclaimer || this.hideRemoveAllDisclaimer;\n this.hideCloseDisclaimers = response.hideCloseDisclaimers || this.hideCloseDisclaimers;\n this.quickSearchWidth = response.quickSearchWidth || this.quickSearchWidth;\n }),\n switchMap(() => this.loadOptionsOnInitialize(onLoad))\n );\n }\n\n return this.loadOptionsOnInitialize(onLoad);\n }\n\n // @todo Validar rotas na mão pois se existir uma rota '**' o catch do navigation não funciona.\n private navigateTo(\n route: { path: string; component?; url?: string; params?: any },\n forceStopAutoRouter: boolean = false\n ) {\n if (isExternalLink(route.path)) {\n return openExternalLink(route.path);\n }\n\n this.router.navigate([route.url || route.path], { queryParams: route.params }).catch(() => {\n if (forceStopAutoRouter || !this.autoRouter) {\n return;\n }\n\n this.router.config.unshift(<Route>{\n path: route.path,\n component: route.component,\n data: { serviceApi: this.serviceApi, autoRouter: true }\n });\n\n this.navigateTo(route, true);\n });\n }\n\n private createConcatenatedUrl(concatKeys: boolean, url: string, selectedItem): string {\n const keys = this.keys.map(key => encodeURIComponent(selectedItem[key])).join();\n return concatKeys ? `${url}/${keys}` : url;\n }\n\n private openDetail(action: PoPageDynamicTableActions['detail'], item) {\n const id = this.formatUniqueKey(item);\n this.subscriptions.add(\n this.poPageDynamicTableActionsService\n .beforeDetail(this.actions.beforeDetail, id, item)\n .subscribe((beforeDetailResult: PoPageDynamicTableBeforeDetail) =>\n this.executeDetail(action, beforeDetailResult, id, item)\n )\n );\n }\n\n private executeDetail(\n action: PoPageDynamicTableActions['detail'],\n beforeDetailResult?: PoPageDynamicTableBeforeNew,\n id?: string,\n item?: any\n ) {\n const before = beforeDetailResult ?? {};\n const allowAction = typeof before.allowAction === 'boolean' ? before.allowAction : true;\n const { newUrl } = before;\n\n if (allowAction && action) {\n if (newUrl) {\n const path = this.getPathFromNewUrl(newUrl, id);\n return this.navigateTo({ path });\n }\n\n if (typeof action === 'string') {\n const url = this.resolveUrl(item, action);\n this.navigateTo({ path: action, url, component: PoPageDynamicDetailComponent });\n } else {\n action(id, item);\n }\n }\n }\n\n private getPathFromNewUrl(newUrl: string, id: string): string {\n if (newUrl.includes(':id')) {\n return newUrl.replace(/:id/g, id);\n }\n return newUrl;\n }\n\n private openDuplicate(actionDuplicate: PoPageDynamicTableActions['duplicate'], item: any) {\n const id = this.formatUniqueKey(item);\n const duplicates = util.removeKeysProperties(this.keys, util.mapObjectByProperties(item, this.duplicates));\n\n this.subscriptions.add(\n this.poPageDynamicTableActionsService\n .beforeDuplicate(this.actions.beforeDuplicate, id, duplicates)\n .subscribe((beforeDuplicateResult: PoPageDynamicTableBeforeDuplicate) =>\n this.executeDuplicate(actionDuplicate, beforeDuplicateResult, duplicates)\n )\n );\n }\n\n private executeDuplicate(\n actionDuplicate: PoPageDynamicTableActions['duplicate'],\n beforeDuplicateResult: PoPageDynamicTableBeforeDuplicate,\n duplicates: any\n ) {\n const before = beforeDuplicateResult ?? {};\n const allowAction = typeof before.allowAction === 'boolean' ? before.allowAction : true;\n const beforeDuplicateResource = before.resource;\n const newAction = before.newUrl ?? actionDuplicate;\n\n if (allowAction && actionDuplicate) {\n if (typeof beforeDuplicateResource === 'object' && beforeDuplicateResource !== null) {\n duplicates = util.removeKeysProperties(this.keys, beforeDuplicateResource);\n }\n\n if (typeof newAction === 'string') {\n return this.navigateTo({ path: newAction, params: { duplicate: JSON.stringify(duplicates) } });\n }\n\n return newAction(duplicates);\n }\n }\n\n private openEdit(actionEdit: PoPageDynamicTableActions['edit'], item) {\n const id = this.formatUniqueKey(item);\n\n this.subscriptions.add(\n this.poPageDynamicTableActionsService\n .beforeEdit(this.actions.beforeEdit, id, item)\n .pipe(\n switchMap((beforeEditResult: PoPageDynamicTableBeforeEdit) =>\n this.executeEditAction(actionEdit, beforeEditResult, item, id)\n )\n )\n .subscribe()\n );\n }\n\n private executeEditAction(\n action: PoPageDynamicTableActions['edit'],\n beforeEditResult: PoPageDynamicTableBeforeEdit,\n item: any,\n id: string\n ) {\n const newEditAction = beforeEditResult?.newUrl ?? action;\n const allowAction = beforeEditResult?.allowAction ?? true;\n\n if (!allowAction) {\n return EMPTY;\n }\n\n if (typeof newEditAction === 'string') {\n this.openEditUrl(newEditAction, item);\n } else {\n const updatedItem = newEditAction(id, item);\n if (typeof updatedItem === 'object' && updatedItem !== null) {\n this.modifyUITableItem(item, util.removeKeysProperties(this.keys, updatedItem));\n }\n }\n\n return EMPTY;\n }\n\n private openEditUrl(path: string, item) {\n const url = this.resolveUrl(item, path);\n\n this.navigateTo({ path, url });\n }\n\n private modifyUITableItem(currentItem, newItemValue) {\n const tableItem = this.items.findIndex(item => item === currentItem);\n this.items[tableItem] = { ...currentItem, ...newItemValue };\n }\n\n private openNew(actionNew: PoPageDynamicTableActions['new']) {\n this.subscriptions.add(\n this.poPageDynamicTableActionsService\n .beforeNew(this.actions.beforeNew)\n .subscribe((beforeNewResult: PoPageDynamicTableBeforeNew) => this.executeNew(actionNew, beforeNewResult))\n );\n }\n\n private executeNew(actionNew: PoPageDynamicTableActions['new'], beforeNewResult?: PoPageDynamicTableBeforeNew) {\n const before = beforeNewResult ?? {};\n const allowAction = typeof before.allowAction === 'boolean' ? before.allowAction : true;\n const { newUrl } = before;\n\n if (allowAction && actionNew) {\n if (newUrl) {\n return this.navigateTo({ path: newUrl });\n }\n\n if (typeof actionNew === 'string') {\n return this.navigateTo({ path: actionNew });\n }\n\n return actionNew();\n }\n }\n\n /**\n * Caso exista mais de um identificador, será concatenado com '|'.\n *\n * Ex: { id: 1, company: 'po' }\n *\n * Para o endpoint /resources/:id será executada a url /resources/1|po\n */\n private remove(\n item,\n actionRemove: PoPageDynamicTableActions['remove'],\n actionBeforeRemove: PoPageDynamicTableActions['beforeRemove']\n ) {\n const uniqueKey = this.formatUniqueKey(item);\n\n this.subscriptions.add(\n this.poPageDynamicTableActionsService\n .beforeRemove(actionBeforeRemove, uniqueKey, item)\n .pipe(switchMap(beforeRemove => this.deleteAction(item, actionRemove, beforeRemove)))\n .subscribe()\n );\n }\n\n private deleteAction(\n item,\n actionRemove: PoPageDynamicTableActions['remove'],\n beforeRemove: PoPageDynamicTableBeforeRemove\n ): Observable<any> {\n const { allowAction, newUrl } = beforeRemove || {};\n const allow = allowAction ?? true;\n\n if (allow) {\n let uniqueKey = this.formatUniqueKey(item);\n const resourceToRemoveKey = this.returnResourcesKeys([item]);\n\n if (typeof actionRemove === 'boolean' || newUrl) {\n uniqueKey = newUrl ? undefined : uniqueKey;\n return this.poPageDynamicService\n .deleteResource(uniqueKey, newUrl)\n .pipe(map(() => this.removeFromUI(resourceToRemoveKey, this.literals.removeSuccessNotification)));\n }\n\n return of(actionRemove(uniqueKey, item)).pipe(\n tap(remove => {\n const removeItem = remove ?? false;\n this.removeFromUI(resourceToRemoveKey, this.literals.removeSuccessNotification, removeItem);\n })\n );\n }\n\n return of({});\n }\n\n private removeFromUI(items: Array<any>, message: string, remove = true) {\n if (remove === true && items?.length) {\n this.removeLocalItems(items);\n this.poNotification.success(message);\n }\n }\n\n private removeAll(\n actionRemoveAll: PoPageDynamicTableActions['removeAll'],\n actionBeforeRemoveAll: PoPageDynamicTableActions['beforeRemoveAll']\n ) {\n const originalResourcesKeys = this.getSelectedItemsKeys();\n this.subscriptions.add(\n this.poPageDynamicTableActionsService\n .beforeRemoveAll(actionBeforeRemoveAll, originalResourcesKeys)\n .pipe(switchMap(beforeRemove => this.deleteAllAction(actionRemoveAll, beforeRemove, originalResourcesKeys)))\n .subscribe()\n );\n }\n\n private getSelectedItemsKeys() {\n const resources = this.items.filter(item => item.$selected);\n\n if (resources.length === 0) {\n return;\n }\n return this.returnResourcesKeys(resources);\n }\n\n private returnResourcesKeys(resources) {\n return util.mapArrayByProperties(resources, this.keys);\n }\n\n private deleteAllAction(\n actionRemoveAll: PoPageDynamicTableActions['removeAll'],\n beforeRemoveAll: PoPageDynamicTableBeforeRemoveAll,\n originalResources: Array<any>\n ) {\n const { allowAction, newUrl, resources } = beforeRemoveAll ?? {};\n const allow = allowAction ?? true;\n const resourcestoDelete = resources ?? originalResources;\n\n if (allow && Array.isArray(resourcestoDelete)) {\n if (typeof actionRemoveAll === 'boolean' || newUrl) {\n return this.poPageDynamicService.deleteResources(resourcestoDelete, newUrl).pipe(\n tap(() => {\n this.removeFromUI(resourcestoDelete, this.literals.removeAllSuccessNotification);\n })\n );\n }\n return of(actionRemoveAll(resourcestoDelete)).pipe(\n tap(removeItems => this.removeFromUI(removeItems, this.literals.removeSuccessNotification))\n );\n }\n\n return of({});\n }\n\n private removeLocalItems(itemsKeysToRemove = []) {\n if (itemsKeysToRemove.length) {\n this.items = this.items.filter(item => {\n const itemKey = this.formatUniqueKey(item);\n return !itemsKeysToRemove.find(itemKeyToRemove => util.valuesFromObject(itemKeyToRemove).join('|') === itemKey);\n });\n }\n }\n\n private resolveUrl(item: any, path: string) {\n const uniqueKey = this.formatUniqueKey(item);\n\n return path.replace(/:id/g, uniqueKey);\n }\n\n private setPageActions(actions: PoPageDynamicTableActions) {\n if (actions?.new) {\n this.defaultPageActions = [{ label: this.literals.pageAction, action: this.openNew.bind(this, actions.new) }];\n }\n }\n\n private transformCustomActionsToPageListAction(\n customActions: Array<PoPageDynamicTableCustomAction>\n ): Array<PoPageAction> {\n /* istanbul ignore next */\n return customActions.map(customAction => ({\n label: customAction.label,\n action: this.callPageCustomAction.bind(this, customAction),\n disabled: this.isDisablePageCustomAction.bind(this, customAction),\n ...(customAction.icon && { icon: customAction.icon }),\n visible: customAction.visible\n }));\n }\n\n private transformTableCustomActionsToTableActions(\n tableCustomActions: Array<PoPageDynamicTableCustomTableAction>\n ): Array<PoTableAction> {\n return tableCustomActions.map(tableCustomAction => ({\n label: tableCustomAction.label,\n icon: tableCustomAction.icon,\n action: this.callTableCustomAction.bind(this, tableCustomAction),\n disabled: tableCustomAction.disabled,\n visible: tableCustomAction.visible\n }));\n }\n\n private isDisablePageCustomAction(customAction): boolean {\n return customAction.selectable && !this.getSelectedItemsKeys();\n }\n\n private callPageCustomAction(customAction: PoPageDynamicTableCustomAction) {\n if (customAction.action) {\n const selectedItems = customAction.selectable ? this.getSelectedItemsKeys() : undefined;\n\n const sendCustomActionSubscription = this.poPageDynamicTableActionsService\n .customAction(customAction.action, selectedItems)\n .subscribe();\n\n this.subscriptions.add(sendCustomActionSubscription);\n } else if (customAction.url) {\n this.navigateTo({ path: customAction.url });\n }\n }\n\n private callTableCustomAction(customAction: PoPageDynamicTableCustomTableAction, selectedItem) {\n this.itemSelectedAction = selectedItem;\n if (customAction.action) {\n const sendCustomActionSubscription = this.poPageDynamicTableActionsService\n .customAction(customAction.action, selectedItem)\n .subscribe(updatedItem => {\n if (typeof updatedItem === 'object' && updatedItem !== null) {\n this.modifyUITableItem(selectedItem, util.removeKeysProperties(this.keys, updatedItem));\n }\n });\n\n this.subscriptions.add(sendCustomActionSubscription);\n } else if (customAction.url) {\n if (isExternalLink(customAction.url)) {\n openExternalLink(this.createConcatenatedUrl(customAction.concatKeys, customAction.url, selectedItem));\n } else {\n this.navigateTo({\n path: this.createConcatenatedUrl(customAction.concatKeys, customAction.url, selectedItem)\n });\n }\n }\n }\n\n private setRemoveAllAction() {\n const action = this._actions;\n if (this.showRemove(action.removeAll)) {\n this.defaultPageActions = [\n ...this._defaultPageActions,\n {\n label: this.literals.pageActionRemoveAll,\n action: this.confirmRemoveAll.bind(this, action.removeAll, action.beforeRemoveAll),\n disabled: this.disableRemoveAll.bind(this),\n type: 'danger'\n }\n ];\n }\n }\n\n private disableRemoveAll(): boolean {\n return !this.getSelectedItemsKeys();\n }\n\n private setTableActions(actions: PoPageDynamicTableActions) {\n if (actions) {\n const visibleRemove = this.showRemove(actions.remove);\n this.defaultTableActions = [\n {\n action: this.openDetail.bind(this, actions.detail),\n label: this.literals.tableActionView,\n visible: !!this._actions.detail\n },\n {\n action: this.openEdit.bind(this, actions.edit),\n label: this.literals.tableActionEdit,\n visible: !!this._actions.edit\n },\n {\n action: this.openDuplicate.bind(this, actions.duplicate),\n label: this.literals.tableActionDuplicate,\n visible: !!this._actions.duplicate\n },\n {\n action: this.confirmRemove.bind(this, actions.remove, actions.beforeRemove),\n label: this.literals.tableActionDelete,\n separator: true,\n type: 'danger',\n visible: visibleRemove\n }\n ];\n }\n }\n\n private loadDataFromAPI() {\n const { serviceApi: serviceApiFromRoute, serviceMetadataApi, serviceLoadApi } = this.activatedRoute.snapshot.data;\n\n const onLoad = serviceLoadApi || this.onLoad;\n this.serviceApi = serviceApiFromRoute || this.serviceApi;\n\n this.poPageDynamicService.configServiceApi({ endpoint: this.serviceApi, metadata: serviceMetadataApi });\n\n const metadata$ = this.getMetadata(serviceApiFromRoute, onLoad);\n let data$;\n if (this.quickSearchValue) {\n const paramsQuickSearchValue = { [this.quickSearchParam]: this.quickSearchValue };\n data$ = this.loadData(paramsQuickSearchValue);\n } else {\n data$ = this.loadData();\n }\n\n this.subscriptions.add(\n metadata$\n .pipe(\n switchMap(() => {\n const initialFilters = this.getInitialValuesFromFilter();\n\n if (!Object.keys(initialFilters).length) {\n return data$;\n }\n\n return EMPTY;\n })\n )\n .subscribe()\n );\n }\n\n private getInitialValuesFromFilter() {\n const initialFilters = this.filters.reduce(\n (result, item) => Object.assign(result, { [item.property]: item.initValue }),\n {}\n );\n\n Object.keys(initialFilters).forEach(key => {\n if (!initialFilters[key]) {\n delete initialFilters[key];\n }\n });\n\n return initialFilters;\n }\n\n private loadOptionsOnInitialize(onLoad: UrlOrPoCustomizationFunction) {\n if (onLoad) {\n return this.getPoDynamicPageOptions(onLoad).pipe(\n tap(responsePoOption =>\n this.poPageCustomizationService.changeOriginalOptionsToNewOptions(this, responsePoOption)\n )\n );\n }\n\n return of(null);\n }\n\n private getPoDynamicPageOptions(onLoad: UrlOrPoCustomizationFunction): Observable<PoPageDynamicTableOptions> {\n const originalOption: PoPageDynamicTableOptions = {\n fields: this.fields,\n actions: this.actions,\n breadcrumb: this.breadcrumb,\n title: this.title,\n keepFilters: this.keepFilters,\n concatFilters: this.concatFilters,\n hideRemoveAllDisclaimer: this.hideRemoveAllDisclaimer,\n hideCloseDisclaimers: this.hideCloseDisclaimers,\n pageCustomActions: this.pageCustomActions,\n tableCustomActions: this.tableCustomActions,\n quickSearchWidth: this.quickSearchWidth\n };\n\n const pageOptionSchema: PoPageDynamicOptionsSchema<PoPageDynamicTableOptions> = {\n schema: [\n {\n nameProp: 'fields',\n merge: true,\n keyForMerge: 'property'\n },\n {\n nameProp: 'actions',\n merge: true\n },\n {\n nameProp: 'breadcrumb'\n },\n {\n nameProp: 'title'\n },\n {\n nameProp: 'keepFilters'\n },\n {\n nameProp: 'quickSearchWidth'\n },\n {\n nameProp: 'concatFilters'\n },\n {\n nameProp: 'hideRemoveAllDisclaimer'\n },\n {\n nameProp: 'hideCloseDisclaimers'\n },\n {\n nameProp: 'pageCustomActions',\n merge: true,\n keyForMerge: 'label'\n },\n {\n nameProp: 'tableCustomActions',\n merge: true,\n keyForMerge: 'label'\n }\n ]\n };\n\n return this.poPageCustomizationService.getCustomOptions(onLoad, originalOption, pageOptionSchema);\n }\n\n private showRemove<T>(actionRemove: T): boolean {\n const action = actionRemove ?? false;\n if (typeof action === 'boolean') {\n return action;\n }\n return true;\n }\n\n private updateFilterValue(filter) {\n return this.fields.map(item => {\n if (filter.hasOwnProperty(item.property)) {\n item.initValue = filter[item.property];\n }\n });\n }\n\n private updatePageActions() {\n this.pageActions = [...this._defaultPageActions, ...this._customPageListActions];\n }\n\n private updateTableActions() {\n const defaultTableActionsWithoutActionDelete = this._defaultTableActions.filter(\n tableAction => tableAction.label !== this.literals.tableActionDelete\n );\n\n const tableActionDelete = this._defaultTableActions.find(\n tableAction => tableAction.label === this.literals.tableActionDelete\n );\n\n const newTableActions = [...defaultTableActionsWithoutActionDelete, ...this._customTableActions];\n\n if (tableActionDelete) {\n newTableActions.push(tableActionDelete);\n }\n\n this.tableActions = newTableActions;\n }\n}\n","<po-page-dynamic-search\n [p-actions]=\"pageActions\"\n [p-breadcrumb]=\"breadcrumb\"\n [p-components-size]=\"componentsSize\"\n [p-hide-close-disclaimers]=\"hideCloseDisclaimers\"\n [p-filters]=\"filters\"\n [p-keep-filters]=\"keepFilters\"\n [p-literals]=\"searchLiterals\"\n [p-concat-filters]=\"concatFilters\"\n [p-hide-remove-all-disclaimer]=\"hideRemoveAllDisclaimer\"\n [p-quick-search-width]=\"quickSearchWidth\"\n [p-title]=\"title\"\n [p-visible-fixed-filters]=\"visibleFixedFilters\"\n (p-advanced-search)=\"onAdvancedSearch($event)\"\n (p-change-disclaimers)=\"onChangeDisclaimers($event)\"\n (p-quick-search)=\"onQuickSearch($event)\"\n [p-quick-search-value]=\"quickSearchValue || ''\"\n>\n <po-table\n [p-sort]=\"true\"\n [p-actions]=\"tableActions\"\n [p-actions-right]=\"actionRight\"\n [p-selectable]=\"enableSelectionTable\"\n [p-columns]=\"columns\"\n [p-components-size]=\"componentsSize\"\n [p-items]=\"items\"\n [p-height]=\"height\"\n [p-hide-columns-manager]=\"hideColumnsManager\"\n [p-infinite-scroll]=\"infiniteScroll\"\n [p-show-more-disabled]=\"!hasNext\"\n (p-show-more)=\"showMore()\"\n (p-sort-by)=\"onSort($event)\"\n (p-change-visible-columns)=\"onChangeVisibleColumns($event)\"\n (p-restore-column-manager)=\"onColumnRestoreManager($event)\"\n (p-sort-by)=\"onSortBy($event)\"\n [p-text-wrap]=\"textWrap\"\n [p-draggable]=\"draggable\"\n [p-spacing]=\"spacing\"\n [p-virtual-scroll]=\"virtualScroll\"\n >\n </po-table>\n</po-page-dynamic-search>\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { PoTableModule } from '@po-ui/ng-components';\n\nimport { PoPageDynamicSearchModule } from '../po-page-dynamic-search/po-page-dynamic-search.module';\n\nimport { PoPageDynamicTableComponent } from './po-page-dynamic-table.component';\nimport { PoPageCustomizationModule } from '../../services/po-page-customization/po-page-customization.module';\nimport { PoPageDynamicModule } from '../../services/po-page-dynamic/po-page-dynamic.module';\n\n/**\n * @description\n *\n * Módulo do template do po-page-dynamic-table.\n */\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n RouterModule,\n\n PoTableModule,\n PoPageDynamicSearchModule,\n PoPageCustomizationModule,\n PoPageDynamicModule\n ],\n declarations: [PoPageDynamicTableComponent],\n exports: [PoPageDynamicTableComponent]\n})\nexport class PoPageDynamicTableModule {}\n","import { PoJobSchedulerInternal } from './interfaces/po-job-scheduler-internal.interface';\n\nexport class PoPageJobSchedulerInternal implements PoJobSchedulerInternal {\n periodicity = 'single';\n firstExecution = new Date();\n firstExecutionHour = this.getCurrentHour(this.firstExecution);\n recurrent = true;\n frequency = {};\n\n private getCurrentHour(date: Date): string {\n const hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours();\n const minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();\n\n return `${hours}:${minutes}`;\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { addZero, convertDateToISOExtended } from '../../utils/util';\nimport { PoDynamicFormField } from '@po-ui/ng-components';\n\nimport { PoJobScheduler } from './interfaces/po-job-scheduler.interface';\nimport { PoJobSchedulerInternal } from './interfaces/po-job-scheduler-internal.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PoPageJobSchedulerService {\n private http = inject(HttpClient);\n\n readonly headers: HttpHeaders = new HttpHeaders({\n 'X-PO-SCREEN-LOCK': 'true'\n });\n\n private endpoint = '/';\n\n configServiceApi(config: { endpoint?: string } = {}) {\n this.endpoint = config.endpoint;\n }\n\n // Cria um recurso\n createResource(resource): Observable<any> {\n const newResouce = this.convertToJobScheduler(resource);\n\n return this.http.post(`${this.endpoint}`, newResouce, { headers: this.headers });\n }\n\n getHeadProcesses() {\n const headers = { 'X-PO-No-Error': 'true' };\n\n return this.http.head(`${this.endpoint}/processes`, { headers });\n }\n\n // Busca parametros pelo processo id\n getParametersByProcess(processId: string | number): Observable<any> {\n return this.http\n .get(`${this.endpoint}/processes/${processId}/parameters`, { headers: this.headers })\n .pipe(map((resource: { items: Array<PoDynamicFormField> }) => resource.items));\n }\n\n // Busca um único recurso\n getProcess(id: string | number): Observable<any> {\n return this.http.get(`${this.endpoint}/processes/${id}`, { headers: this.headers });\n }\n\n // Busca uma lista de processos\n getProcesses(params: {} = {}): Observable<any> {\n return this.http.get(`${this.endpoint}/processes`, { params });\n }\n\n // Busca um único recurso\n getResource(id: string | number): Observable<any> {\n return this.http\n .get(`${this.endpoint}/${id}`, { headers: this.headers })\n .pipe(map(resource => this.convertToJobSchedulerInternal(resource)));\n }\n\n // Atualiza um recurso\n updateResource(id, resource): Observable<any> {\n const newResouce = this.convertToJobScheduler(resource);\n return this.http.put(`${this.endpoint}/${id}`, newResouce, { headers: this.headers });\n }\n\n convertToJobScheduler(jobSchedulerInternal): PoJobScheduler {\n const jobScheduler = { ...jobSchedulerInternal };\n\n if (jobSchedulerInternal.periodicity) {\n if (jobSchedulerInternal.periodicity === 'single') {\n jobScheduler.recurrent = false;\n } else {\n Object.assign(jobScheduler, this.convertToPeriodicity(jobSchedulerInternal));\n }\n }\n\n if (jobSchedulerInternal.firstExecutionHour) {\n jobScheduler.firstExecution = this.replaceHourFirstExecution(\n jobSchedulerInternal.firstExecution,\n jobSchedulerInternal.firstExecutionHour\n );\n }\n\n if (jobSchedulerInternal.frequency && jobSchedulerInternal.frequency.type) {\n jobScheduler.rangeExecutions = {\n frequency: { ...jobSchedulerInternal.frequency }\n };\n\n if (jobSchedulerInternal.rangeLimitHour) {\n const splitRangeLimitHour = jobSchedulerInternal.rangeLimitHour.split(':');\n\n jobScheduler.rangeExecutions.rangeLimit = {\n hour: parseInt(splitRangeLimitHour[0], 10),\n minute: parseInt(splitRangeLimitHour[1], 10)\n };\n }\n\n if (jobSchedulerInternal.rangeLimitDay) {\n jobScheduler.rangeExecutions.rangeLimit = {\n ...jobScheduler.rangeExecutions.rangeLimit,\n day: jobSchedulerInternal.rangeLimitDay\n };\n }\n }\n\n if (!Object.keys(this.returnValidExecutionParameter(jobScheduler.executionParameter)).length) {\n delete jobScheduler.executionParameter;\n }\n\n this.removeInvalidKeys(jobScheduler);\n\n return jobScheduler;\n }\n\n convertToJobSchedulerInternal(jobScheduler = <any>{}): PoJobSchedulerInternal {\n const jobSchedulerInternal = { ...jobScheduler };\n\n if (jobScheduler.firstExecution) {\n jobSchedulerInternal.firstExecutionHour = this.getHourFirstExecution(jobScheduler.firstExecution);\n }\n\n Object.assign(jobSchedulerInternal, this.convertToPeriodicityInternal(jobScheduler));\n\n if (jobScheduler.rangeExecutions) {\n jobSchedulerInternal.rangeLimitHour = `${\n jobScheduler.rangeExecutions.rangeLimit.hour < 10\n ? '0' + jobScheduler.rangeExecutions.rangeLimit.hour\n : jobScheduler.rangeExecutions.rangeLimit.hour\n }:${\n jobScheduler.rangeExecutions.rangeLimit.minute < 10\n ? '0' + jobScheduler.rangeExecutions.rangeLimit.minute\n : jobScheduler.rangeExecutions.rangeLimit.minute\n }`;\n jobSchedulerInternal.rangeLimitDay = jobScheduler.rangeExecutions.rangeLimit.day;\n jobSchedulerInternal.frequency = {\n type: jobScheduler.rangeExecutions.frequency.type,\n value: jobScheduler.rangeExecutions.frequency.value\n };\n }\n\n this.removeInvalidKeys(jobSchedulerInternal, ['weekly', 'monthly', 'daily']);\n\n return jobSchedulerInternal;\n }\n\n private convertToPeriodicity(value: {\n periodicity: string;\n dayOfMonth?: string;\n daysOfWeek?: number;\n hour?: string;\n }) {\n const newValue = {};\n const valuePeriodicity = value.periodicity;\n\n if (valuePeriodicity) {\n newValue[valuePeriodicity] = {};\n\n if (valuePeriodicity === 'monthly') {\n newValue[valuePeriodicity].day = value.dayOfMonth ? parseInt(value.dayOfMonth, 10) : 0;\n } else if (valuePeriodicity === 'weekly') {\n newValue[valuePeriodicity].daysOfWeek = value.daysOfWeek;\n }\n\n newValue[valuePeriodicity].hour = value.hour ? parseInt(value.hour.split(':')[0], 10) : 0;\n newValue[valuePeriodicity].minute = value.hour ? parseInt(value.hour.split(':')[1], 10) : 0;\n }\n\n return newValue;\n }\n\n private convertToPeriodicityInternal(value = <any>{}) {\n if (value.monthly) {\n return {\n periodicity: 'monthly',\n hour: `${addZero(value.monthly.hour)}:${addZero(value.monthly.minute)}`,\n dayOfMonth: value.monthly.day\n };\n } else if (value.daily) {\n return {\n periodicity: 'daily',\n hour: `${addZero(value.daily.hour)}:${addZero(value.daily.minute)}`\n };\n } else if (value.weekly) {\n return {\n periodicity: 'weekly',\n hour: `${addZero(value.weekly.hour)}:${addZero(value.weekly.minute)}`,\n daysOfWeek: [...value.weekly.daysOfWeek]\n };\n } else {\n return {\n periodicity: 'single'\n };\n }\n }\n\n private getCurrentHour(date: Date): string {\n const hours = addZero(date.getHours());\n const minutes = addZero(date.getMinutes());\n\n return `${hours}:${minutes}`;\n }\n\n private getHourFirstExecution(firstExecutionDate: string): string {\n return this.getCurrentHour(new Date(firstExecutionDate));\n }\n\n private removeInvalidKeys(value: object, keys?: Array<string>) {\n const invalidKeys = keys || [\n 'periodicity',\n 'hour',\n 'minute',\n 'day',\n 'daysOfWeek',\n 'dayOfMonth',\n 'firstExecutionHour',\n 'frequency',\n 'rangeLimitHour',\n 'rangeLimitDay'\n ];\n\n Object.keys(value).forEach(key => {\n if (invalidKeys.includes(key)) {\n delete value[key];\n } else if (key === 'rangeExecutions' && value['periodicity'] === 'single') {\n delete value[key];\n }\n });\n }\n\n private replaceHourFirstExecution(date: string, time: string): string {\n try {\n if (!date) {\n return date;\n }\n\n const dateSplited = date.split('-');\n const timeSplited = time.split(':');\n\n if (dateSplited.length < 2 || timeSplited.length < 1) {\n return date;\n }\n\n const year = parseInt(dateSplited[0]);\n const monthIndex = parseInt(dateSplited[1]) - 1;\n const day = parseInt(dateSplited[2]);\n\n const hours = parseInt(timeSplited[0], 10);\n const minutes = parseInt(timeSplited[1], 10);\n\n const firstExecutionDate = new Date(year, monthIndex, day, hours, minutes);\n\n if (!(firstExecutionDate instanceof Date && !isNaN(firstExecutionDate.getTime()))) {\n return date;\n }\n\n return convertDateToISOExtended(firstExecutionDate);\n } catch {\n return date;\n }\n }\n\n private returnValidExecutionParameter(parameter: object) {\n const newParameter = { ...parameter };\n\n for (const key in newParameter) {\n if (newParameter.hasOwnProperty(key) && newParameter[key] === undefined) {\n delete newParameter[key];\n }\n }\n\n return newParameter;\n }\n}\n","import { Directive, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\n\nimport { PoBreadcrumb, PoDynamicFormField, PoStepperOrientation } from '@po-ui/ng-components';\n\nimport { Subscription } from 'rxjs';\nimport { getDefaultSizeFn, validateSizeFn } from '../../utils/util';\nimport { PoJobSchedulerInternal } from './interfaces/po-job-scheduler-internal.interface';\nimport { PoPageJobSchedulerInternal } from './po-page-job-scheduler-internal';\nimport { PoPageJobSchedulerService } from './po-page-job-scheduler.service';\n\n/**\n * @description\n *\n * O `po-page-job-scheduler` é uma página para criação e atualização de agendamentos da execução de processos (Job Scheduler),\n * como por exemplo: a geração da folha de pagamento dos funcionários.\n *\n * Para utilizar esta página, basta informar o serviço (endpoint) para consumo,\n * sem a necessidade de criar componentes e tratamentos dos dados.\n *\n * Veja mais sobre os padrões utilizados nas requisições no [Guia de implementação de APIs](guides/api).\n *\n * #### Tokens customizáveis\n *\n * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).\n *\n * | Propriedade | Descrição | Valor Padrão |\n * |---------------------|---------------------------------------------|---------------------------------------|\n * | **Header** | | |\n * | `--padding` | Espaçamento do header | `var(--spacing-xs) var(--spacing-md)` |\n * | `--gap` | Espaçamento entre os breadcrumbs e o título | `var(--spacing-md)` |\n * | `--gap-actions` | Espaçamento entre as ações | `var(--spacing-xs)` |\n * | `--font-family` | Família tipográfica do título | `var(--font-family-theme)` |\n * | **Content** | | |\n * | `--padding-content` | Espaçamento do conteúdo | `var(--spacing-xs) var(--spacing-sm)` |\n */\n@Directive()\nexport class PoPageJobSchedulerBaseComponent implements OnDestroy {\n private _componentsSize?: string = undefined;\n\n /** Objeto com as propriedades do breadcrumb. */\n @Input('p-breadcrumb') breadcrumb?: PoBreadcrumb = { items: [] };\n\n /**\n * @optional\n *\n * @description\n *\n * Define o tamanho dos componentes de formulário no template:\n * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n * - `medium`: aplica a medida medium de cada componente.\n *\n * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n *\n * @default `medium`\n */\n @Input('p-components-size') set componentsSize(value: string) {\n this._componentsSize = validateSizeFn(value);\n }\n\n get componentsSize(): string {\n return this._componentsSize ?? getDefaultSizeFn();\n }\n\n /**\n * Endpoint usado pelo componente para busca dos processos e parâmetros que serão utilizados para criação e edição dos agendamentos.\n *\n * #### Processos\n *\n * Os processos são as tarefas que estarão disponíveis para o usuário poder fazer os agendamentos.\n * Ao inicializar o componente, será feito uma requisição `GET` para o endpoint `{service-api}/processes`, para buscar\n * essa lista de processos.\n *\n * Este endpoint `{service-api}/processes` deve retornar uma lista de objetos que seguem a definição de dados abaixo:\n *\n * ```\n * GET {service-api}/processes\n * ```\n *\n * ```\n * {\n * items: [\n * { \"processID\": \"ac4f\", \"description\": \"Gerar folha de pagamento\" },\n * { \"processID\": \"df6l\", \"description\": \"Relatório de imposto a recolher\" },\n * { \"processID\": \"dk3p\", \"description\": \"Títulos em aberto\" },\n * ]\n * }\n * ```\n *\n * Desta forma será renderizado um componente para selecionar o processo e/ou filtrá-los.\n *\n * Para realizar o filtro de busca do processo, será feita uma requisição enviando o conteúdo digitado na busca através do\n * parâmetro `search`. Da seguinte forma:\n *\n * ```\n * GET {service-api}/processes?search=relatorio\n * ```\n *\n * > Veja mais sobre paginação e filtros no [Guia de implementação de APIs](guides/api).\n * Caso seja informada a propriedade `p-parameters` não serão realizadas as requisições de processos e nem de parametros automaticamente.\n *\n * Também é possível fazer um agendamento de um processo específico, sem que seja necessário um endpoint para busca desses\n * processos. Então, caso o endpoint `{service-api}/processes` não seja válido, será apresentado um campo de entrada de\n * texto para o usuário informar diretamente\n * o **identificador do processo - `processID`** e ao salvar será enviado um `POST` para o endpoint difinido `serviceApi` conforme abaixo:\n *\n * ```\n * POST {service-api}\n * ```\n *\n * *Request payload* - estrutura de dados enviada no corpo da requisição conforme interface `PoJobScheduler`:\n *\n * ```\n * {\n * \"daily\": { \"hour\": 10, \"minute\": 12 },\n * \"firstExecution\": \"2018-12-07T00:00:01-00:00\",\n * \"recurrent\": true,\n * \"processID\": \"ac0405\"\n * ...\n * }\n * ```\n *\n * Caso seja necessário informar parâmetros e adicionar configurações no processo selecionado, será realizado um `GET`\n * como exemplificado abaixo. Os parâmetros devem retornar uma lista de objetos que seguem a interface\n * [PoDynamicFormField](/documentation/po-dynamic-form). Porém, caso utilizar a propriedade `p-parameters` o componente não\n * realizará a busca automática e o campo de processos não será exibido.\n *\n * ```\n * GET {service-api}/processes/:id/parameters\n * ...\n * {\n * items: [\n * { \"property\": \"vencimento\", type: \"date\" },\n * { \"property\": \"imposto-retido\", \"label\": \"Imposto Retido\", type: \"boolean\" }\n * ]\n * }\n * ```\n *\n * #### Salvar e Atualizar\n *\n * Para salvar o agendamento, será feita uma requisição de criação, passando os valores preenchidos pelo usuário via *payload*.\n * Abaixo uma requisição `POST` disparada, onde as propriedades do *Job Scheduler* foram preenchidas:\n *\n * ```\n * POST {service-api}\n * ```\n *\n * *Request payload* - estrutura de dados enviada no corpo da requisição conforme interface `PoJobScheduler`:\n *\n * ```\n * {\n * \"firstExecution\": \"2018-12-07T00:00:01-00:00\",\n * \"recurrent\": true,\n * \"monthly\": { \"day\": 1, \"hour\": 10, \"minute\": 0 },\n * \"processID\": \"ac0405\",\n * \"rangeExecutions: { \"frequency\": { \"type\": \"hour\", \"value\": 2 }, \"rangeLimit\": { \"hour\": 18, \"minute\": 0, \"day\": 20 } }\n * }\n * ```\n *\n * Caso queira que o componente carregue um agendamento já existente, deve ser incluído um parâmetro na rota chamado `id`.\n *\n * Exemplo de configuração de rota:\n *\n * ```\n * RouterModule.forRoot([\n * ...\n * { path: 'edit/:id', component: ExampleJobSchedulerComponent },\n * ...\n * ],\n * ```\n *\n * Baseado nisso, na inicialização do template será disparado uma requisição para buscar o recurso que será editado.\n *\n * ```\n * GET {service-api}/{id}\n * ```\n *\n * Ao atualizar o agendamento, será disparado um `PUT` com os dados preenchidos.\n * Veja abaixo uma requisição `PUT` disparada, onde a propriedade *recurrent* e *daily* foram atualizadas:\n *\n * ```\n * PUT {service-api}/{id}\n * ```\n *\n * *Request payload* - estrutura de dados enviada no corpo da requisição conforme interface `PoJobScheduler`:\n *\n * ```\n * {\n * \"firstExecution\": \"2018-12-07T00:00:01-00:00\",\n * \"recurrent\": true,\n * \"processID\": \"ac0405\",\n * \"monthly\": { \"day\": 1, \"hour\": 10, \"minute\": 0 },\n * \"processID\": \"ac0405\",\n * \"rangeExecutions: { \"frequency\": { \"type\": \"hour\", \"value\": 2 }, \"rangeLimit\": { \"hour\": 18, \"minute\": 0, \"day\": 20 } }\n * }\n * ```\n */\n @Input('p-service-api') serviceApi: string;\n\n /** Título da página. */\n @Input('p-title') title: string;\n\n /**\n * Parâmetros que serão utilizados para criação e edição dos agendamentos.\n *\n * Ao utilizar esta propriedade, o componente não buscará automaticamente os parâmetros da API e o campo para preenchimento do processo não será exibido.\n *\n */\n @Input('p-parameters') parameters: Array<PoDynamicFormField> = [];\n\n @Input('p-value') set value(value: any) {\n this.model = this.poPageJobSchedulerService.convertToJobSchedulerInternal(value);\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Define a orientação de exibição do `po-stepper`.\n *\n * > Quando não utilizada, segue o comportamento com base nas dimensões da tela.\n *\n * > Veja os valores válidos no *enum* [PoStepperOrientation](documentation/po-stepper#stepperOrientation).\n *\n */\n\n @Input('p-orientation') set stepperDefaultOrientation(value: PoStepperOrientation) {\n this._orientation = (<any>Object).values(PoStepperOrientation).includes(value) ? value : undefined;\n }\n\n get stepperDefaultOrientation(): PoStepperOrientation {\n return this._orientation;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Função chamada após realizar a confirmação da execução no PoPageJobScheduler.\n * Permite alterar os valores do model do PoPageJobScheduler antes de realizar o envio para a Api.\n *\n * > Deve retornar um objeto do tipo `PoPageJobScheduler` para ser adicionado ao model do PoPageJobScheduler.\n *\n * > Ao ser disparada, a mesma receberá por parâmetro o model do PoPageJobScheduler de interface `PoJobSchedulerInternal`.\n *\n * O contexto da função que será chamada, será o mesmo que o do `PoPageJobScheduler`, então para poder alterar\n * para o contexto do componente que o está utilizando, pode ser utilizado a propriedade `bind` do Javascript.\n * Por exemplo, para a função `beforeSend`:\n *\n * ```\n * <po-page-job-scheduler [p-service-api]=\"serviceApi\" [p-parameters]=\"params\" [p-before-send]=\"beforeSend.bind(this)\">\n * ...\n * </po-page-job-scheduler>\n * ```\n */\n @Input('p-before-send') beforeSendAction: (model: PoJobSchedulerInternal) => PoJobSchedulerInternal;\n\n /**\n * @optional\n *\n * @description\n *\n * Define se o step `Agendamento` deve ser exibido como o último na sequência de steps\n *\n * > Aplicável apenas quando utilizado `PoJobSchedulerParametersTemplateDirective`\n */\n @Input('p-step-execution-last') stepExecutionLast: boolean;\n\n /**\n * @optional\n *\n * @description\n *\n * Evento disparado ao concluir o processo de agendamento com sucesso.\n */\n @Output('p-success') success = new EventEmitter<any>();\n\n /**\n * @optional\n *\n * @description\n *\n * Evento disparado ao ocorrer um erro impossibilitando a conclusão do agendamento.\n * Para este evento será passado como parâmetro os detalhes do erro.\n */\n @Output('p-error') error = new EventEmitter<any>();\n\n model: PoJobSchedulerInternal = new PoPageJobSchedulerInternal();\n\n private _subscription = new Subscription();\n private _orientation;\n\n constructor(protected poPageJobSchedulerService: PoPageJobSchedulerService) {}\n\n ngOnDestroy() {\n this._subscription.unsubscribe();\n }\n\n protected loadData(id: string | number) {\n if (!id) {\n this.model = this.model || new PoPageJobSchedulerInternal();\n return;\n }\n\n this._subscription.add(\n this.poPageJobSchedulerService.getResource(id).subscribe(\n (response: PoJobSchedulerInternal) => {\n this.model = response;\n },\n () => {\n this.model = new PoPageJobSchedulerInternal();\n }\n )\n );\n }\n\n protected markAsDirtyInvalidControls(controls: { [key: string]: AbstractControl }) {\n for (const key in controls) {\n if (controls.hasOwnProperty(key)) {\n const control = controls[key];\n\n if (control.invalid) {\n control.markAsDirty();\n }\n }\n }\n }\n}\n","export const poPageJobSchedulerLiteralsDefault = {\n en: {\n at: 'at',\n back: 'Back',\n next: 'Next',\n periodicity: 'Periodicity',\n execution: 'Execution',\n process: 'Process',\n enterProcess: 'Enter a process',\n recurrent: 'Recurrent',\n single: 'Single',\n daily: 'Daily',\n weekly: 'Weekly',\n monthly: 'Monthly',\n scheduling: 'Scheduling',\n parameterization: 'Parameterization',\n conclude: 'Conclude',\n firstExecution: 'First Execution',\n startTime: 'Start time',\n endTime: 'End time',\n time: 'Time',\n hour: 'Hour',\n minute: 'Minute',\n day: 'Day',\n endDay: 'End day',\n startDay: 'Start day',\n weekDays: 'Week days',\n sunday: 'Sunday',\n monday: 'Monday',\n tuesday: 'Tuesday',\n wednesday: 'Wednesday',\n thursday: 'Thursday',\n friday: 'Friday',\n saturday: 'Saturday',\n parameters: 'Parameters',\n yes: 'Yes',\n no: 'No',\n notReported: 'Not reported',\n periodicityData: 'Periodicity data',\n confirmation: 'Confirmation',\n confirmSaveMessage: 'Are you sure you want to complete this schedule?',\n confirmUpdateMessage: 'Are you sure you want to update this schedule?',\n saveNotificationSuccessUpdate: 'Successfully updated scheduling',\n saveNotificationSuccessSave: 'Successfully saved scheduling',\n parametersNotFound: 'Parameters not found.',\n frequency: 'Frequency',\n to: 'to',\n from: 'from'\n },\n es: {\n at: 'a las',\n back: 'Volver',\n next: 'Avanzar',\n periodicity: 'Periodicidad',\n execution: 'Ejecución',\n process: 'Proceso',\n enterProcess: 'Informe un proceso',\n recurrent: 'Recurrente',\n single: 'Única',\n daily: 'Diaria',\n weekly: 'Semanal',\n monthly: 'Mensual',\n scheduling: 'Programación',\n parameterization: 'Parametrización',\n conclude: 'Completar',\n firstExecution: 'Primera ejecución',\n startTime: 'Hora de inicio',\n endTime: 'Hora de finalización',\n time: 'Horário',\n hour: 'Hora',\n minute: 'Minute',\n day: 'Día',\n endDay: 'Último Día',\n startDay: 'Día de inicio',\n weekDays: 'Dias de la semana',\n sunday: 'Domingo',\n monday: 'Lunes',\n tuesday: 'Martes',\n wednesday: 'Miércoles',\n thursday: 'Jueves',\n friday: 'Viernes',\n saturday: 'Sábado',\n parameters: 'Parámetros',\n yes: 'Sí',\n no: 'No',\n notReported: 'No informado',\n periodicityData: 'Dados da periodicidade',\n confirmation: 'Confirmación',\n confirmSaveMessage: '¿Está seguro de que desea completar esta programación de proceso?',\n confirmUpdateMessage: '¿Está seguro de que desea cambiar esta programación de proceso?',\n saveNotificationSuccessUpdate: 'Programación de proceso actualizada con éxito.',\n saveNotificationSuccessSave: 'Programación de proceso salvo con éxito.',\n parametersNotFound: 'No se encontraron parámetros.',\n frequency: 'Frecuencia',\n to: 'de',\n from: 'a'\n },\n pt: {\n at: 'às',\n back: 'Voltar',\n next: 'Avançar',\n periodicity: 'Periodicidade',\n execution: 'Execução',\n process: 'Processo',\n enterProcess: 'Informe um processo',\n recurrent: 'Recorrente',\n single: 'Única',\n daily: 'Diária',\n weekly: 'Semanal',\n monthly: 'Mensal',\n scheduling: 'Agendamento',\n parameterization: 'Parametrização',\n conclude: 'Concluir',\n firstExecution: 'Primeira execução',\n startTime: 'Horário inicial',\n endTime: 'Horário final',\n time: 'Horário',\n hour: 'Hora',\n minute: 'Minuto',\n day: 'Dia',\n endDay: 'Dia final',\n startDay: 'Dia inicial',\n weekDays: 'Dias de semana',\n sunday: 'Domingo',\n monday: 'Segunda-feira',\n tuesday: 'Terça-feira',\n wednesday: 'Quarta-feira',\n thursday: 'Quinta-feira',\n friday: 'Sexta-feira',\n saturday: 'Sábado',\n parameters: 'Parâmetros',\n yes: 'Sim',\n no: 'Não',\n notReported: 'Não informado',\n periodicityData: 'Dados da periodicidade',\n confirmation: 'Confirmação',\n confirmSaveMessage: 'Tem certeza que deseja concluir este agendamento de processo?',\n confirmUpdateMessage: 'Tem certeza que deseja alterar este agendamento de processo?',\n saveNotificationSuccessUpdate: 'Agendamento de processo atualizado com sucesso.',\n saveNotificationSuccessSave: 'Agendamento de processo salvo com sucesso.',\n parametersNotFound: 'Parâmetros não foram encontrados.',\n frequency: 'Frequência',\n to: 'das',\n from: 'até'\n },\n ru: {\n at: 'в',\n back: 'Назад',\n next: 'Следующий',\n periodicity: 'Периодичность',\n execution: 'Выполнение',\n process: 'Процесс',\n enterProcess: 'Укажите процесс',\n recurrent: 'Периодически',\n single: 'Одиночный',\n daily: 'Ежедневно',\n weekly: 'Еженедельно',\n monthly: 'Ежемесячно',\n scheduling: 'Планирование',\n parameterization: 'Параметризация',\n conclude: 'Завершить',\n firstExecution: 'Первичное выполнение',\n startTime: 'начальное время',\n endTime: 'время окончания',\n time: 'расписание',\n hour: 'Час',\n day: 'День',\n minute: 'минута',\n endDay: 'последний день',\n startDay: 'день начала',\n weekDays: 'Рабочие дни',\n sunday: 'Воскресенье',\n monday: 'Понедельник',\n tuesday: 'Вторник',\n wednesday: 'Среда',\n thursday: 'Четверг',\n friday: 'Пятница',\n saturday: 'Суббота',\n parameters: 'Параметры',\n yes: 'Да',\n no: 'Нет',\n notReported: 'Не сообщается',\n periodicityData: 'Данные о периодичности',\n confirmation: 'Подтверждение',\n confirmSaveMessage: 'Вы уверены, что хотите завершить это расписание?',\n confirmUpdateMessage: 'Вы уверены, что хотите обновить это расписание?',\n saveNotificationSuccessUpdate: 'Расписание успешно обновлено',\n saveNotificationSuccessSave: 'Расписание успешно сохранено ',\n parametersNotFound: 'Параметры не найдены',\n frequency: 'Частота',\n to: 'с',\n from: 'до'\n }\n};\n","import { Injectable, inject } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { PoLookupFilter } from '@po-ui/ng-components';\n\nimport { PoPageJobSchedulerService } from './po-page-job-scheduler.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PoPageJobSchedulerLookupService implements PoLookupFilter {\n private poPageJobSchedulerService = inject(PoPageJobSchedulerService);\n\n getFilteredItems({ filter, page, pageSize }): Observable<any> {\n const params = { page, pageSize, search: filter };\n\n return this.poPageJobSchedulerService.getProcesses(params);\n }\n\n getObjectByValue(processId: string): Observable<any> {\n return this.poPageJobSchedulerService.getProcess(processId);\n }\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n/**\n * @usedBy PoPageJobScheduler\n *\n * @description\n *\n * Esta diretiva permite personalizar o conteúdo da uma ou várias etapa(s) de parametrização do componente de PoPageJobScheduler.\n *\n * Para repassar as alterações realizadas no componente customizado ao model do PoPageJobScheduler, deve\n * ser atualizado os valores através da propriedade p-execution-parameter. Dessa forma as alterações serão adicionadas ao\n * atributo executionParameter do objeto de envio a Api.\n * É possível também controlar a permissão de avançar, fazendo uso da propriedade p-disable-advance.\n *\n * ```\n * ...\n * <po-page-job-scheduler [p-service-api]=\"serviceApi\">\n * <ng-template p-job-scheduler-parameters-template\n * [p-execution-parameter]=\"executionParameter\"\n * [p-disable-advance]=\"disableAdvance\"\n * p-label-step=\"titleStep\"\n * >\n * ...\n * </ng-template>\n * <ng-template p-job-scheduler-parameters-template\n * [p-execution-parameter]=\"executionParameter\"\n * [p-disable-advance]=\"disableAdvance\"\n * p-label-step=\"titleStep\"\n * >\n * ...\n * </ng-template>\n * </po-page-job-scheduler>\n * ...\n * ```\n *\n */\n@Directive({\n selector: '[p-job-scheduler-parameters-template]',\n standalone: false\n})\nexport class PoJobSchedulerParametersTemplateDirective {\n /**\n * @optional\n *\n * @description\n *\n * Objeto que deve conter as alterações feitas pelo componente de template que serão repassadas dentro do atributo\n * `executionParameter` para envio na api.\n *\n * > O componente deve manter essa propriedade atualizada. É chamada após o avançar da etapa de parametrização.\n */\n @Input('p-execution-parameter') executionParameter: object;\n\n /**\n * @optional\n *\n * @default false\n *\n * @description\n *\n * Determina se deve desabilitar o botão de avançar para a próxima etapa\n *\n * > Pode ser utilizado para validar campos antes de avançar.\n */\n @Input('p-disable-advance') disabledAdvance: boolean = false;\n\n /**\n * @optional\n *\n * @description\n *\n * Determina o label do step\n */\n @Input('p-label-step') title: string;\n\n // Necessário manter templateRef para o funcionamento do row template.\n constructor(public templateRef: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n/**\n * @usedBy PoPageJobScheduler\n *\n * @description\n *\n * Esta diretiva permite personalizar o conteúdo de resumo das informações de parâmetro na etapa de conclusão do componente de PoPageJobScheduler.\n *\n * Essa funcionalidade costuma ser útil em casos onde a propriedade parameters não tem valor e mesmo assim é necessário exibir\n * as informações de resumo na etapa de conclusão.\n *\n * ```\n * ...\n * <po-page-job-scheduler [p-service-api]=\"serviceApi\">\n * <ng-template p-job-scheduler-summary-template>\n * ...\n * <po-dynamic-view\n * [p-fields]=\"fieldsSummary\"\n * [p-value]=\"valueSummary\"\n * >\n * </po-dynamic-view\n * </ng-template>\n * </po-page-job-scheduler>\n * ...\n * ```\n *\n */\n@Directive({\n selector: '[p-job-scheduler-summary-template]',\n standalone: false\n})\nexport class PoJobSchedulerSummaryTemplateDirective {\n // Necessário manter templateRef para o funcionamento do row template.\n constructor(public templateRef: TemplateRef<any>) {}\n}\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n inject\n} from '@angular/core';\nimport { NgForm } from '@angular/forms';\n\nimport { PoCheckboxGroupOption, PoRadioGroupOption } from '@po-ui/ng-components';\n\nimport { isTypeof } from '../../../utils/util';\n\nimport { PoPageJobSchedulerLookupService } from '../po-page-job-scheduler-lookup.service';\nimport { PoPageJobSchedulerService } from '../po-page-job-scheduler.service';\n\n@Component({\n selector: 'po-page-job-scheduler-execution',\n templateUrl: 'po-page-job-scheduler-execution.component.html',\n standalone: false\n})\nexport class PoPageJobSchedulerExecutionComponent implements OnInit, AfterViewInit {\n private poPageJobSchedulerService = inject(PoPageJobSchedulerService);\n poPageJobSchedulerLookup = inject(PoPageJobSchedulerLookupService);\n\n @ViewChild('formExecution', { static: true }) form: NgForm;\n\n // templates\n @ViewChild('dailyTemplate', { static: true }) dailyTemplate;\n @ViewChild('monthlyTemplate', { static: true }) monthlyTemplate;\n @ViewChild('weeklyTemplate', { static: true }) weeklyTempalte;\n\n @Input('p-components-size') componentsSize: string;\n\n @Input('p-is-edit') isEdit: boolean = false;\n\n @Input('p-literals') literals = <any>{};\n\n @Input('p-no-parameters') noParameters: boolean = true;\n @Input('p-no-custom-params-component') noCustomParamsComponent: boolean = true;\n\n @Output('p-change-process') changeProcess: EventEmitter<any> = new EventEmitter<any>();\n\n dayPattern = '^(3[0-1]|[0-2][0-9]|[1-9]|0[1-9])$';\n existProcessAPI = true;\n minDateFirstExecution = new Date();\n periodicityOptions: Array<PoRadioGroupOption> = [];\n periodicityTemplates: { daily: TemplateRef<any>; weekly: TemplateRef<any>; monthly: TemplateRef<any> };\n timePattern = '^(2[0-3]|[01][0-9]):?([0-5][0-9])$';\n weekDays: Array<PoCheckboxGroupOption> = [];\n frequencyOptions: Array<PoRadioGroupOption> = [];\n containsFrequency = false;\n frequency: string = 'hour';\n rangeLimitHour: string;\n\n private _value: any = {};\n\n @Input('p-value') set value(value: any) {\n this._value = value && isTypeof(value, 'object') ? value : {};\n\n this.containsFrequency = this._value.frequency && this._value.frequency.value ? true : false;\n }\n\n get value() {\n return this._value;\n }\n\n get startDateFirstExecution() {\n return this.isEdit ? undefined : this.minDateFirstExecution;\n }\n\n get hourLabel() {\n return this.containsFrequency ? this.literals.startTime : this.literals.time;\n }\n\n get dayLabel() {\n return this.containsFrequency ? this.literals.startDay : this.literals.day;\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.subscribeProcessIdValueChanges();\n\n if (this.value.periodicity) {\n this.frequencyOptions = this.frequencyOptions.map(frequencyOption => ({\n ...frequencyOption,\n disabled: frequencyOption.value === 'day' && this.value.periodicity !== 'monthly'\n }));\n }\n });\n }\n\n ngOnInit() {\n this.periodicityTemplates = {\n daily: this.dailyTemplate,\n monthly: this.monthlyTemplate,\n weekly: this.weeklyTempalte\n };\n\n if (this.noParameters && this.noCustomParamsComponent) {\n this.checkExistsProcessesAPI();\n }\n\n this.periodicityOptions = this.getPeriodicityOptions();\n this.weekDays = this.getWeekDays();\n this.frequencyOptions = this.getFrequencyOptions();\n }\n\n onChangeContainsFrequency(containsFrequency) {\n if (containsFrequency) {\n this.value.frequency = { type: 'hour', value: null };\n } else {\n this.value.frequency = {};\n }\n\n this.value.rangeLimitHour = null;\n this.value.rangeLimitDay = null;\n this.value.dayOfMonth = null;\n }\n\n onChangePeriodicityOptions(periodicity) {\n this.frequencyOptions = this.frequencyOptions.map(frequencyOption => ({\n ...frequencyOption,\n disabled: frequencyOption.value === 'day' && periodicity !== 'monthly'\n }));\n\n this.value.frequency.type = null;\n }\n\n onChangeFrequencyOptions() {\n this.value.rangeLimitHour = null;\n }\n\n private checkExistsProcessesAPI() {\n this.poPageJobSchedulerService.getHeadProcesses().subscribe(undefined, error => {\n this.existProcessAPI = false;\n });\n }\n\n private getPeriodicityOptions() {\n return [\n { label: this.literals.single, value: 'single' },\n { label: this.literals.daily, value: 'daily' },\n { label: this.literals.weekly, value: 'weekly' },\n { label: this.literals.monthly, value: 'monthly' }\n ];\n }\n\n private getFrequencyOptions() {\n return [\n { label: this.literals.day, value: 'day' },\n { label: this.literals.hour, value: 'hour' },\n { label: this.literals.minute, value: 'minute' }\n ];\n }\n\n private getWeekDays() {\n return [\n { label: this.literals.sunday, value: 'Sunday' },\n { label: this.literals.monday, value: 'Monday' },\n { label: this.literals.tuesday, value: 'Tuesday' },\n { label: this.literals.wednesday, value: 'Wednesday' },\n { label: this.literals.thursday, value: 'Thursday' },\n { label: this.literals.friday, value: 'Friday' },\n { label: this.literals.saturday, value: 'Saturday' }\n ];\n }\n\n private subscribeProcessIdValueChanges() {\n this.form.controls['processID']?.valueChanges.subscribe(processId => {\n this.changeProcess.emit({ processId, existAPI: this.existProcessAPI });\n });\n }\n}\n","<form #formExecution=\"ngForm\">\n <div class=\"po-row\">\n @if (existProcessAPI) {\n @if (noParameters && noCustomParamsComponent) {\n <po-lookup\n class=\"po-md-12\"\n name=\"processID\"\n [(ngModel)]=\"value.processID\"\n p-field-label=\"description\"\n p-field-value=\"processID\"\n p-required\n [p-disabled]=\"isEdit\"\n [p-filter-service]=\"poPageJobSchedulerLookup\"\n [p-label]=\"literals.process\"\n [p-placeholder]=\"literals.enterProcess\"\n [p-size]=\"componentsSize\"\n >\n </po-lookup>\n }\n } @else {\n <po-input\n class=\"po-md-12\"\n name=\"processID\"\n [(ngModel)]=\"value.processID\"\n p-required\n [p-disabled]=\"isEdit\"\n [p-label]=\"literals.process\"\n [p-placeholder]=\"literals.enterProcess\"\n [p-size]=\"componentsSize\"\n >\n </po-input>\n }\n </div>\n\n <div class=\"po-row\">\n <po-divider class=\"po-md-12\" [p-label]=\"literals.firstExecution\"></po-divider>\n\n <po-datepicker\n class=\"po-md-4\"\n name=\"firstExecution\"\n [(ngModel)]=\"value.firstExecution\"\n p-placeholder=\"dd/mm/aaaa\"\n p-required\n [p-disabled]=\"isEdit\"\n [p-label]=\"literals.day\"\n [p-min-date]=\"startDateFirstExecution\"\n [p-size]=\"componentsSize\"\n >\n </po-datepicker>\n\n <po-input\n class=\"po-md-2\"\n name=\"firstExecutionHour\"\n [(ngModel)]=\"value.firstExecutionHour\"\n p-mask=\"99:99\"\n p-mask-format-model\n p-placeholder=\"HH:mm\"\n p-required\n [p-disabled]=\"isEdit\"\n [p-label]=\"literals.time\"\n [p-pattern]=\"timePattern\"\n [p-size]=\"componentsSize\"\n >\n </po-input>\n </div>\n\n <hr />\n\n <div class=\"po-row\">\n <po-radio-group\n class=\"po-sm-12\"\n name=\"periodicity\"\n [(ngModel)]=\"value.periodicity\"\n p-columns=\"4\"\n p-required\n [p-label]=\"literals.periodicity\"\n [p-options]=\"periodicityOptions\"\n [p-size]=\"componentsSize\"\n (p-change)=\"onChangePeriodicityOptions($event)\"\n >\n </po-radio-group>\n\n @if (value.periodicity !== 'single') {\n <div class=\"po-row\">\n <po-switch\n class=\"po-md-12\"\n name=\"containsFrequency\"\n [(ngModel)]=\"containsFrequency\"\n [p-label]=\"literals.frequency\"\n [p-label-off]=\"literals.no\"\n [p-label-on]=\"literals.yes\"\n [p-size]=\"componentsSize\"\n (p-change)=\"onChangeContainsFrequency($event)\"\n >\n </po-switch>\n @if (containsFrequency) {\n <po-radio-group\n class=\"po-md-10\"\n name=\"frequencyType\"\n p-required\n [(ngModel)]=\"value.frequency.type\"\n [p-columns]=\"3\"\n [p-options]=\"frequencyOptions\"\n [p-size]=\"componentsSize\"\n (p-change)=\"onChangeFrequencyOptions()\"\n >\n </po-radio-group>\n <po-number\n class=\"po-md-2\"\n name=\"frequencyValue\"\n p-required\n [p-size]=\"componentsSize\"\n [(ngModel)]=\"value.frequency.value\"\n >\n </po-number>\n }\n </div>\n <div class=\"po-row\">\n <po-divider class=\"po-md-12\" [p-label]=\"literals.periodicityData\"> </po-divider>\n <ng-container *ngTemplateOutlet=\"periodicityTemplates[value.periodicity]\"> </ng-container>\n </div>\n <div class=\"po-row\">\n <po-switch\n class=\"po-md-3\"\n name=\"recurrent\"\n [(ngModel)]=\"value.recurrent\"\n [p-label]=\"literals.recurrent\"\n [p-label-off]=\"literals.no\"\n [p-label-on]=\"literals.yes\"\n [p-size]=\"componentsSize\"\n >\n </po-switch>\n </div>\n }\n </div>\n\n <ng-template #dailyTemplate>\n <ng-container *ngTemplateOutlet=\"inputHourTemplate\"> </ng-container>\n </ng-template>\n\n <ng-template #weeklyTemplate>\n <div class=\"po-row\">\n <ng-container *ngTemplateOutlet=\"inputHourTemplate\"> </ng-container>\n </div>\n\n <po-checkbox-group\n class=\"po-md-12\"\n name=\"daysOfWeek\"\n [(ngModel)]=\"value.daysOfWeek\"\n p-columns=\"4\"\n p-required\n [p-label]=\"literals.weekDays\"\n [p-options]=\"weekDays\"\n [p-size]=\"componentsSize\"\n >\n </po-checkbox-group>\n </ng-template>\n\n <ng-template #monthlyTemplate>\n <po-number\n class=\"po-md-3\"\n name=\"dayOfMonth\"\n [(ngModel)]=\"value.dayOfMonth\"\n p-required\n [p-error-pattern]=\"'Dia inválido'\"\n [p-label]=\"dayLabel\"\n [p-max]=\"31\"\n [p-pattern]=\"dayPattern\"\n [p-size]=\"componentsSize\"\n >\n </po-number>\n\n @if (containsFrequency) {\n <po-number\n class=\"po-md-3\"\n name=\"rangeLimitDay\"\n [(ngModel)]=\"value.rangeLimitDay\"\n p-required\n [p-error-pattern]=\"'Dia inválido'\"\n [p-label]=\"literals.endDay\"\n [p-max]=\"31\"\n [p-pattern]=\"dayPattern\"\n [p-size]=\"componentsSize\"\n >\n </po-number>\n }\n\n <ng-container *ngTemplateOutlet=\"inputHourTemplate\"> </ng-container>\n </ng-template>\n\n <ng-template #inputHourTemplate>\n <po-input\n class=\"po-md-2\"\n name=\"hour\"\n [(ngModel)]=\"value.hour\"\n p-mask=\"99:99\"\n p-mask-format-model\n p-placeholder=\"HH:mm\"\n p-required\n [p-label]=\"hourLabel\"\n [p-pattern]=\"timePattern\"\n [p-size]=\"componentsSize\"\n >\n </po-input>\n\n @if (containsFrequency && value.frequency.type !== 'day') {\n <po-input\n class=\"po-md-2\"\n name=\"rangeLimitHour\"\n [(ngModel)]=\"value.rangeLimitHour\"\n p-mask=\"99:99\"\n p-mask-format-model\n p-placeholder=\"HH:mm\"\n p-required\n [p-label]=\"literals.endTime\"\n [p-pattern]=\"timePattern\"\n [p-size]=\"componentsSize\"\n >\n </po-input>\n }\n </ng-template>\n</form>\n","import { AfterViewInit, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { NgForm } from '@angular/forms';\n\nimport { PoDynamicFormField } from '@po-ui/ng-components';\n\n@Component({\n selector: 'po-page-job-scheduler-parameters',\n templateUrl: 'po-page-job-scheduler-parameters.component.html',\n standalone: false\n})\nexport class PoPageJobSchedulerParametersComponent implements AfterViewInit {\n @ViewChild('parametersForm') form: NgForm;\n\n @Input('p-components-size') componentsSize: string;\n\n @Input('p-literals') literals = <any>{};\n\n @Input('p-parameters') parameters: Array<PoDynamicFormField> = [];\n\n @Input('p-value') value;\n\n @Output('p-valueChange') valueChange: EventEmitter<any> = new EventEmitter<any>();\n\n ngAfterViewInit() {\n if (this.form) {\n setTimeout(() => {\n this.form.valueChanges.subscribe(value => {\n this.valueChange.emit(value);\n });\n });\n }\n }\n}\n","@if (parameters && parameters.length) {\n <form #parametersForm=\"ngForm\">\n <po-dynamic-form p-group-form [p-components-size]=\"componentsSize\" [p-fields]=\"parameters\" [p-value]=\"value\">\n </po-dynamic-form>\n </form>\n} @else {\n <div class=\"po-text-center\">\n <po-icon p-icon=\"ICON_INFO\"></po-icon>\n <span class=\"po-font-text-large\">\n {{ literals.parametersNotFound }}\n </span>\n </div>\n}\n","import { DatePipe } from '@angular/common';\nimport { Component, Input, OnInit, inject } from '@angular/core';\n\nimport { PoDynamicViewField, PoInfoOrientation } from '@po-ui/ng-components';\n\nimport { PoJobSchedulerInternal } from '../interfaces/po-job-scheduler-internal.interface';\n\n@Component({\n selector: 'po-page-job-scheduler-summary',\n templateUrl: 'po-page-job-scheduler-summary.component.html',\n standalone: false\n})\nexport class PoPageJobSchedulerSummaryComponent implements OnInit {\n private datePipe = inject(DatePipe);\n\n @Input('p-components-size') componentsSize: string;\n\n @Input('p-literals') literals = <any>{};\n\n @Input('p-parameters') parameters: Array<PoDynamicViewField> = [];\n\n @Input('p-value') value: PoJobSchedulerInternal = <any>{};\n\n @Input('p-no-parameters') noParameters: boolean = true;\n\n @Input('p-summary-template') jobSchedulerSummaryTemplate;\n\n executionValue = '';\n firstExecutionValue = '';\n infoOrientation = PoInfoOrientation.Horizontal;\n periodicityValue = '';\n frequencyValue = '';\n rangeLimitHour = '';\n rangeLimitDay = '';\n recurrentValue = '';\n\n ngOnInit() {\n const {\n periodicity,\n hour,\n dayOfMonth,\n daysOfWeek,\n recurrent,\n firstExecution,\n firstExecutionHour,\n frequency,\n rangeLimitHour,\n rangeLimitDay\n } = this.value;\n\n this.periodicityValue = this.getPeriodicityLabel(periodicity);\n if (frequency) {\n this.frequencyValue = this.getFrequencyValue(frequency, periodicity);\n }\n this.executionValue = this.getExecutionValue(\n periodicity,\n hour,\n daysOfWeek,\n dayOfMonth,\n rangeLimitHour,\n rangeLimitDay\n );\n this.firstExecutionValue = this.getFirstExecutionLabel(firstExecution, firstExecutionHour);\n this.recurrentValue = this.getRecurrentValue(recurrent);\n }\n\n private getFrequencyValue(frequency, periodicity) {\n return frequency['value'] && frequency['type'] && periodicity !== 'single'\n ? `${frequency['value']} - ${frequency['type']}`\n : '';\n }\n\n private getExecutionValue(\n periodicity: string,\n hour?: string,\n daysOfWeek?: Array<string>,\n dayOfMonth?: number,\n rangeLimitHour?: string,\n rangeLimitDay?: number\n ) {\n switch (periodicity) {\n case 'daily':\n return this.getHourLabel(hour, rangeLimitHour);\n case 'monthly':\n return this.getMonthlyLabelExecution(dayOfMonth, hour, rangeLimitHour, rangeLimitDay);\n case 'weekly':\n return this.getWeeklyLabelExecution(daysOfWeek, hour, rangeLimitHour);\n default:\n return this.literals.notReported;\n }\n }\n\n private getFirstExecutionLabel(firstExecution: Date, firstExecutionHour?: string): string {\n if (firstExecution) {\n const date = this.datePipe.transform(firstExecution, 'dd/MM/yyyy', '-0200');\n\n return `${date} ${this.getHourLabel(firstExecutionHour)}`;\n } else {\n return this.literals.notReported;\n }\n }\n\n private getHourLabel(hour: string, rangeLimitHour?) {\n return `${rangeLimitHour ? this.literals.from : this.literals.at} ${hour || '00:00'} ${\n rangeLimitHour ? this.literals.to + ' ' + rangeLimitHour : ''\n }`;\n }\n\n private getMonthlyLabelExecution(dayOfMonth: number, hour: string, rangeLimitHour?: string, rangeLimitDay?: number) {\n const hourLabel = this.getHourLabel(hour, rangeLimitHour);\n\n return `${rangeLimitDay ? this.literals.from : ''} ${dayOfMonth} ${rangeLimitDay ? this.literals.to : ''} ${\n rangeLimitDay ? rangeLimitDay : ''\n } ${hourLabel}`;\n }\n\n private getPeriodicityLabel(periodicity) {\n switch (periodicity) {\n case 'daily':\n return this.literals.daily;\n case 'monthly':\n return this.literals.monthly;\n case 'weekly':\n return this.literals.weekly;\n default:\n return this.literals.single;\n }\n }\n\n private getRecurrentValue(recurrent: boolean): string {\n return recurrent ? this.literals.yes : this.literals.no;\n }\n\n private getSorterWeekDays() {\n return {\n 'sunday': 0,\n 'monday': 1,\n 'tuesday': 2,\n 'wednesday': 3,\n 'thursday': 4,\n 'friday': 5,\n 'saturday': 6\n };\n }\n\n private getTranslateWeekDay(day: string): string {\n const days = {\n Sunday: this.literals.sunday,\n Monday: this.literals.monday,\n Tuesday: this.literals.tuesday,\n Wednesday: this.literals.wednesday,\n Thursday: this.literals.thursday,\n Friday: this.literals.friday,\n Saturday: this.literals.saturday\n };\n\n return days[day] || '';\n }\n\n private getWeekDaysLabel(days: Array<string> = []): string {\n const weekDaysSorted = this.sortWeekDays(days);\n\n return weekDaysSorted.map(day => this.getTranslateWeekDay(day)).join(', ');\n }\n\n private getWeeklyLabelExecution(daysOfWeek: Array<string>, hour: string, rangeLimitHour?: string) {\n if (daysOfWeek && Array.isArray(daysOfWeek)) {\n return `${this.getWeekDaysLabel(daysOfWeek)} ${this.getHourLabel(hour, rangeLimitHour)}`;\n } else {\n return this.literals.notReported;\n }\n }\n\n private sortWeekDays(days: Array<string> = []) {\n const sorterWeekDays = this.getSorterWeekDays();\n\n return days.sort((a: string, b: string) => {\n const currDay = a.toLowerCase();\n const nextDay = b.toLowerCase();\n\n return sorterWeekDays[currDay] > sorterWeekDays[nextDay] ? 1 : -1;\n });\n }\n}\n","<div class=\"po-md-12\">\n @if (!noParameters) {\n <po-info\n [p-label]=\"literals.process\"\n [p-orientation]=\"infoOrientation\"\n [p-size]=\"componentsSize\"\n [p-value]=\"value.processID\"\n >\n </po-info>\n }\n\n <po-info\n [p-label]=\"literals.periodicity\"\n [p-orientation]=\"infoOrientation\"\n [p-size]=\"componentsSize\"\n [p-value]=\"periodicityValue\"\n >\n </po-info>\n\n @if (frequencyValue !== '') {\n <po-info\n [p-label]=\"literals.frequency\"\n [p-orientation]=\"infoOrientation\"\n [p-size]=\"componentsSize\"\n [p-value]=\"frequencyValue\"\n >\n </po-info>\n }\n\n @if (value.periodicity !== 'single') {\n <po-info\n [p-label]=\"literals.execution\"\n [p-orientation]=\"infoOrientation\"\n [p-size]=\"componentsSize\"\n [p-value]=\"executionValue\"\n >\n </po-info>\n }\n\n <po-info\n [p-label]=\"literals.recurrent\"\n [p-orientation]=\"infoOrientation\"\n [p-size]=\"componentsSize\"\n [p-value]=\"recurrentValue\"\n >\n </po-info>\n\n <po-info\n [p-label]=\"literals.firstExecution\"\n [p-orientation]=\"infoOrientation\"\n [p-size]=\"componentsSize\"\n [p-value]=\"firstExecutionValue\"\n >\n </po-info>\n</div>\n@if (parameters && parameters.length && !jobSchedulerSummaryTemplate) {\n <po-widget class=\"po-pt-1 po-pb-1 po-md-12\" [p-size]=\"componentsSize\" [p-title]=\"literals.parameters\">\n <po-dynamic-view [p-components-size]=\"componentsSize\" [p-fields]=\"parameters\" [p-value]=\"value.executionParameter\">\n </po-dynamic-view>\n </po-widget>\n}\n@if (jobSchedulerSummaryTemplate) {\n <div class=\"po-pt-1 po-pb-1 po-md-12\">\n <ng-template [ngTemplateOutlet]=\"jobSchedulerSummaryTemplate?.templateRef\"></ng-template>\n </div>\n}\n","import {\n AfterContentInit,\n Component,\n ContentChild,\n ContentChildren,\n OnInit,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { Observable } from 'rxjs';\n\nimport {\n PoDialogService,\n PoDynamicFormField,\n PoLanguageService,\n PoNotificationService,\n PoPageAction,\n PoStepperItem,\n PoStepperStatus,\n poLocaleDefault\n} from '@po-ui/ng-components';\n\nimport { PoJobSchedulerInternal } from './interfaces/po-job-scheduler-internal.interface';\nimport { PoPageJobSchedulerBaseComponent } from './po-page-job-scheduler-base.component';\nimport { PoPageJobSchedulerInternal } from './po-page-job-scheduler-internal';\nimport { poPageJobSchedulerLiteralsDefault } from './po-page-job-scheduler-literals';\nimport { PoPageJobSchedulerLookupService } from './po-page-job-scheduler-lookup.service';\nimport { PoJobSchedulerParametersTemplateDirective } from './po-page-job-scheduler-parameters';\nimport { PoJobSchedulerSummaryTemplateDirective } from './po-page-job-scheduler-summary';\nimport { PoPageJobSchedulerService } from './po-page-job-scheduler.service';\n\n/**\n * @docsExtends PoPageJobSchedulerBaseComponent\n *\n * @example\n *\n * <example name=\"po-page-job-scheduler-background-process\" title=\"PO Page Job Scheduler - Background Process\">\n * <file name=\"sample-po-page-job-scheduler-background-process/sample-po-page-job-scheduler-background-process.component.html\"> </file>\n * <file name=\"sample-po-page-job-scheduler-background-process/sample-po-page-job-scheduler-background-process.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-job-scheduler-directives\" title=\"PO Page Job Scheduler - Directives\">\n * <file name=\"sample-po-page-job-scheduler-directives/sample-po-page-job-scheduler-directives.component.html\"> </file>\n * <file name=\"sample-po-page-job-scheduler-directives/sample-po-page-job-scheduler-directives.component.ts\"> </file>\n * </example>\n *\n */\n@Component({\n selector: 'po-page-job-scheduler',\n templateUrl: './po-page-job-scheduler.component.html',\n encapsulation: ViewEncapsulation.None,\n styles: [\n `\n po-container .po-container {\n overflow-y: unset;\n }\n `\n ],\n standalone: false\n})\nexport class PoPageJobSchedulerComponent extends PoPageJobSchedulerBaseComponent implements OnInit, AfterContentInit {\n poPageDynamicLookupService = inject(PoPageJobSchedulerLookupService);\n private activatedRoute = inject(ActivatedRoute);\n private poDialogService = inject(PoDialogService);\n private poNotification = inject(PoNotificationService);\n\n @ViewChild('schedulerExecution', { static: true }) schedulerExecution: { form: NgForm };\n @ViewChild('schedulerParameters') schedulerParameters: { form: NgForm };\n @ContentChildren(PoJobSchedulerParametersTemplateDirective)\n parametersTemplate: QueryList<PoJobSchedulerParametersTemplateDirective>;\n\n @ContentChild(PoJobSchedulerSummaryTemplateDirective)\n jobSchedulerSummaryTemplate: PoJobSchedulerSummaryTemplateDirective;\n\n isEdit = false;\n literals = {\n ...poPageJobSchedulerLiteralsDefault[poLocaleDefault]\n };\n\n publicValues: PoJobSchedulerInternal;\n saveOperation: Observable<any>;\n step: number = 1;\n parametersEmpty: boolean = true;\n\n stepParametersInitialized = false;\n\n protected steps: Array<PoStepperItem> = [];\n\n private backPageAction: PoPageAction = {\n label: this.literals.back,\n action: this.nextStepOperation.bind(this, 'back'),\n disabled: this.isDisabledBack.bind(this)\n };\n\n private concludePageAction: PoPageAction = {\n label: this.literals.conclude,\n action: this.confirmJobScheduler.bind(this)\n };\n\n private nextPageAction: PoPageAction = {\n label: this.literals.next,\n action: this.nextStepOperation.bind(this, 'next'),\n disabled: this.isDisabledAdvance.bind(this)\n };\n\n private concludePageActions: Array<PoPageAction> = [this.concludePageAction, this.backPageAction];\n\n private nextPageActions: Array<PoPageAction> = [this.nextPageAction, this.backPageAction];\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n jobSchedulerActions: Array<PoPageAction> = [...this.nextPageActions];\n\n protected stepExecution = 1;\n protected stepParameters = 2;\n protected stepSummary = 3;\n protected _stepExecutionLast: boolean;\n\n constructor() {\n const poPageJobSchedulerService = inject(PoPageJobSchedulerService);\n const languageService = inject(PoLanguageService);\n\n super(poPageJobSchedulerService);\n this.poPageJobSchedulerService = poPageJobSchedulerService;\n\n const language = languageService.getShortLanguage();\n\n this.literals = {\n ...this.literals,\n ...poPageJobSchedulerLiteralsDefault[language]\n };\n\n this.backPageAction.label = this.literals.back;\n this.concludePageAction.label = this.literals.conclude;\n this.nextPageAction.label = this.literals.next;\n }\n\n get stepperOrientation(): 'horizontal' | 'vertical' {\n return (\n this.stepperDefaultOrientation || (window.innerWidth > 481 && window.innerWidth < 960 ? 'horizontal' : 'vertical')\n );\n }\n\n ngOnInit() {\n const paramId = this.activatedRoute.snapshot.params['id'];\n\n this.isEdit = !!paramId;\n\n this.poPageJobSchedulerService.configServiceApi({ endpoint: this.serviceApi });\n\n if (this.parameters.length) {\n this.parametersEmpty = false;\n }\n\n this.loadData(paramId);\n }\n\n ngAfterContentInit(): void {\n this.checkStepExecutionLast();\n this.getSteps();\n }\n\n changePageActionsBySteps(currentStep: number, nextStep: number) {\n const stepsLength = this.steps.length;\n\n if (nextStep === stepsLength) {\n this.jobSchedulerActions = [...this.concludePageActions];\n } else if (currentStep === stepsLength && nextStep < currentStep) {\n this.jobSchedulerActions = [...this.nextPageActions];\n }\n }\n\n nextStep(stepNumber: number) {\n const operation: 'back' | 'next' = stepNumber > this.step ? 'next' : 'back';\n\n // Previne o usuário pular etapas\n const jumpStep = (stepNumber - this.step) * (operation === 'back' ? -1 : 1);\n if (jumpStep > 1) {\n return;\n }\n\n if (!this.validateStepExecution()) {\n return;\n }\n\n if (operation === 'next' && !this.validateStepSchedulerParameters()) {\n return;\n }\n\n if (operation === 'next' && !this.validateStepTemplateParameters()) {\n return;\n }\n\n if (this.step === this.stepExecution) {\n this.setModelRecurrent();\n }\n\n // Busca os parâmetros do template\n this.setPropertiesFromTemplate();\n\n if (stepNumber === this.steps.length) {\n const model = JSON.parse(JSON.stringify(this.model));\n this.publicValues = this.hidesSecretValues(model);\n }\n\n this.steps[this.step - 1].status = operation === 'next' ? PoStepperStatus.Done : PoStepperStatus.Default;\n\n this.changePageActionsBySteps(this.step, stepNumber);\n this.step = stepNumber;\n\n // Caso já tenha iniciado a etapa de parametrização,\n // guarda essa informação para não precisar renderizar novamente\n this.stepParametersInitialized = this.stepParametersInitialized || stepNumber === this.stepParameters;\n }\n\n onChangeProcess(process: { processId: string; existAPI: boolean }) {\n if (process.existAPI && process.processId && this.parametersEmpty && !this.parametersTemplate.length) {\n this.getParametersByProcess(process.processId);\n if (!this.isEdit) {\n this.model.executionParameter = {};\n }\n }\n }\n\n private checkStepExecutionLast() {\n if (!this.parametersTemplate.length) {\n this._stepExecutionLast = false;\n return;\n }\n\n this._stepExecutionLast = this.stepExecutionLast;\n }\n\n private confirmJobScheduler() {\n const paramId = this.activatedRoute.snapshot.params['id'];\n\n const confirmMessage = paramId ? this.literals.confirmUpdateMessage : this.literals.confirmSaveMessage;\n\n this.poDialogService.confirm({\n title: this.literals.confirmation,\n message: confirmMessage,\n confirm: () => {\n const beforeSendModel = this.beforeSendAction ? this.beforeSendAction(this.model) : undefined;\n\n const model = { ...(beforeSendModel || this.model) };\n\n this.save(model, paramId);\n }\n });\n }\n\n private emitSuccessMessage(msgSuccess: any, saveOperation: Observable<any>) {\n saveOperation.subscribe({\n next: () => {\n this.success.emit();\n this.poNotification.success(msgSuccess);\n this.resetJobSchedulerForm();\n },\n error: e => this.error.emit(e)\n });\n }\n\n private getParametersByProcess(process: any) {\n this.poPageJobSchedulerService.getParametersByProcess(process).subscribe(parameters => {\n this.parameters = parameters;\n });\n }\n\n private hidesSecretValues(model: PoJobSchedulerInternal): PoJobSchedulerInternal {\n const hiddenSecretValue = '**********';\n this.parameters.forEach(parameter => {\n if (this.isSecretParameter(model, parameter)) {\n model.executionParameter[parameter.property] = hiddenSecretValue;\n }\n });\n return model;\n }\n\n private getSteps() {\n const templateArray: Array<PoStepperItem> = [];\n\n this.parametersTemplate.toArray().forEach((value, index, array) => {\n templateArray.push({\n label: value.title || `${this.literals.parameterization} ${array.length > 1 ? index + 1 : ''}`\n });\n });\n\n let _steps = [];\n\n if (!this._stepExecutionLast) {\n _steps.push({ label: this.literals.scheduling });\n }\n\n if (!templateArray.length) {\n _steps.push({ label: this.literals.parameterization });\n } else {\n _steps = [..._steps, ...templateArray];\n }\n\n if (this._stepExecutionLast) {\n _steps.push({ label: this.literals.scheduling });\n }\n\n _steps.push({ label: this.literals.conclude });\n\n this.steps = _steps;\n\n this.stepSummary = this.steps.length;\n if (this._stepExecutionLast) {\n this.stepExecution = this.stepSummary - 1;\n }\n }\n\n private getTemplateCurrent() {\n const indexTemplate = this.step - (this.stepExecutionLast ? 1 : 2);\n return this.parametersTemplate.toArray()[indexTemplate];\n }\n\n private templateHasDisable(): boolean {\n const template = this.getTemplateCurrent();\n\n return !template?.disabledAdvance;\n }\n\n private isDisabledAdvance(): boolean {\n if (this.step === this.stepExecution) {\n return this.schedulerExecution?.form?.invalid;\n }\n\n if (this.schedulerParameters) {\n return this.schedulerParameters?.form?.invalid;\n }\n\n const templateCurrent = this.getTemplateCurrent();\n\n if (templateCurrent) {\n return templateCurrent.disabledAdvance;\n }\n\n return false;\n }\n\n private isDisabledBack(): boolean {\n return this.step === 1;\n }\n\n private isSecretParameter(model: PoJobSchedulerInternal, parameter: PoDynamicFormField): boolean {\n return (\n model.executionParameter &&\n parameter.hasOwnProperty('secret') &&\n parameter['secret'] === true &&\n model.executionParameter.hasOwnProperty(parameter.property)\n );\n }\n\n private nextStepOperation(operation?: 'back' | 'next') {\n const stepNumber = operation === 'back' ? this.step - 1 : this.step + 1;\n\n this.nextStep(stepNumber);\n }\n\n private resetJobSchedulerForm() {\n this.schedulerExecution.form.reset();\n\n // radiogroup não estava atribuindo novo valor, fica vermelho sem o timetout.\n setTimeout(() => {\n this.model = new PoPageJobSchedulerInternal();\n\n this.step = 1;\n this.steps.forEach(step => {\n step.status = PoStepperStatus.Default;\n });\n\n this.jobSchedulerActions = [...this.nextPageActions];\n });\n }\n\n private save(model: PoJobSchedulerInternal, paramId) {\n const saveOperation = paramId\n ? this.poPageJobSchedulerService.updateResource(paramId, model)\n : this.poPageJobSchedulerService.createResource(model);\n\n const msgSuccess = paramId\n ? this.literals.saveNotificationSuccessUpdate\n : this.literals.saveNotificationSuccessSave;\n\n this.emitSuccessMessage(msgSuccess, saveOperation);\n }\n\n private setModelRecurrent() {\n this.model.recurrent = this.model.periodicity === 'single' ? false : this.model.recurrent;\n }\n\n private setPropertiesFromTemplate() {\n const templateCurrent = this.getTemplateCurrent();\n\n if (!templateCurrent) {\n return;\n }\n\n this.model = {\n ...this.model,\n executionParameter: { ...this.model.executionParameter, ...templateCurrent.executionParameter }\n };\n }\n\n private validateStepExecution(): boolean {\n const stepCurrent = this.step;\n\n if (stepCurrent == this.stepExecution && this.schedulerExecution.form.invalid) {\n this.markAsDirtyInvalidControls(this.schedulerExecution.form.controls);\n return false;\n }\n\n return true;\n }\n\n private validateStepSchedulerParameters(): boolean {\n if (this.step === this.stepExecution || this.step === this.stepSummary) {\n return true;\n }\n\n if (this.schedulerParameters && this.schedulerParameters.form && this.schedulerParameters.form.invalid) {\n this.markAsDirtyInvalidControls(this.schedulerParameters.form.controls);\n return false;\n }\n\n return true;\n }\n\n private validateStepTemplateParameters(): boolean {\n if (this.step === this.stepExecution || this.step === this.stepSummary) {\n return true;\n }\n\n if (!this.parametersTemplate.length) {\n return true;\n }\n\n return this.templateHasDisable();\n }\n}\n","<po-page-default\n [p-actions]=\"jobSchedulerActions\"\n [p-breadcrumb]=\"breadcrumb\"\n [p-components-size]=\"componentsSize\"\n [p-title]=\"title\"\n>\n <div class=\"po-row\">\n <po-stepper\n [ngClass]=\"stepperDefaultOrientation === 'horizontal' ? 'po-lg-12 po-xl-12' : 'po-lg-3 po-xl-2'\"\n p-sequential=\"true\"\n [p-orientation]=\"stepperOrientation\"\n [p-step]=\"step\"\n [p-steps]=\"steps\"\n (p-change-step)=\"nextStep($event)\"\n >\n </po-stepper>\n\n <po-container [ngClass]=\"stepperDefaultOrientation === 'horizontal' ? 'po-lg-12 po-xl-12' : 'po-lg-8 po-xl-6'\">\n <form #formScheduler=\"ngForm\">\n <div class=\"po-row\">\n <po-page-job-scheduler-execution\n [p-no-parameters]=\"parametersEmpty\"\n [p-no-custom-params-component]=\"!parametersTemplate.length\"\n [hidden]=\"step !== stepExecution\"\n #schedulerExecution\n class=\"po-md-12\"\n [p-components-size]=\"componentsSize\"\n [p-is-edit]=\"isEdit\"\n [p-literals]=\"literals\"\n [p-value]=\"model\"\n (p-change-process)=\"onChangeProcess($event)\"\n >\n </po-page-job-scheduler-execution>\n\n @if (stepParametersInitialized && !parametersTemplate.length) {\n <po-page-job-scheduler-parameters\n [hidden]=\"step !== stepParameters\"\n #schedulerParameters\n class=\"po-md-12\"\n [p-components-size]=\"componentsSize\"\n [p-literals]=\"literals\"\n [p-parameters]=\"parameters || []\"\n [(p-value)]=\"model.executionParameter\"\n >\n </po-page-job-scheduler-parameters>\n }\n\n @if (step === stepSummary) {\n <po-page-job-scheduler-summary\n [p-no-parameters]=\"!parameters.length\"\n [p-summary-template]=\"jobSchedulerSummaryTemplate\"\n class=\"po-md-12\"\n [p-components-size]=\"componentsSize\"\n [p-literals]=\"literals\"\n [p-parameters]=\"parameters\"\n [p-value]=\"publicValues\"\n >\n </po-page-job-scheduler-summary>\n }\n </div>\n </form>\n\n @for (template of parametersTemplate; track template; let index = $index) {\n <div [hidden]=\"step !== index + (_stepExecutionLast ? 1 : 2)\">\n <ng-template [ngTemplateOutlet]=\"template?.templateRef\"></ng-template>\n </div>\n }\n </po-container>\n </div>\n</po-page-default>\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\n\nimport {\n PoButtonModule,\n PoContainerModule,\n PoDialogModule,\n PoDividerModule,\n PoDynamicModule,\n PoFieldModule,\n PoIconModule,\n PoInfoModule,\n PoPageModule,\n PoStepperModule,\n PoWidgetModule\n} from '@po-ui/ng-components';\n\nimport { PoPageJobSchedulerComponent } from './po-page-job-scheduler.component';\nimport { PoPageJobSchedulerExecutionComponent } from './po-page-job-scheduler-execution/po-page-job-scheduler-execution.component';\nimport { PoPageJobSchedulerLookupService } from './po-page-job-scheduler-lookup.service';\nimport { PoPageJobSchedulerParametersComponent } from './po-page-job-scheduler-parameters/po-page-job-scheduler-parameters.component';\nimport { PoPageJobSchedulerService } from './po-page-job-scheduler.service';\nimport { PoPageJobSchedulerSummaryComponent } from './po-page-job-scheduler-summary/po-page-job-scheduler-summary.component';\nimport { PoJobSchedulerParametersTemplateDirective } from './po-page-job-scheduler-parameters';\nimport { PoJobSchedulerSummaryTemplateDirective } from './po-page-job-scheduler-summary/po-job-scheduler-summary-template';\n\n@NgModule({\n declarations: [\n PoPageJobSchedulerComponent,\n PoPageJobSchedulerExecutionComponent,\n PoPageJobSchedulerParametersComponent,\n PoPageJobSchedulerSummaryComponent,\n PoJobSchedulerParametersTemplateDirective,\n PoJobSchedulerSummaryTemplateDirective\n ],\n exports: [\n PoPageJobSchedulerComponent,\n PoJobSchedulerParametersTemplateDirective,\n PoJobSchedulerSummaryTemplateDirective\n ],\n imports: [\n CommonModule,\n FormsModule,\n PoButtonModule,\n PoContainerModule,\n PoDialogModule,\n PoDividerModule,\n PoDynamicModule,\n PoFieldModule,\n PoIconModule,\n PoInfoModule,\n PoPageModule,\n PoStepperModule,\n PoWidgetModule\n ],\n providers: [PoPageJobSchedulerService, PoPageJobSchedulerLookupService]\n})\nexport class PoPageJobSchedulerModule {}\n","/**\n * @usedBy PoPageLoginComponent\n *\n * @description\n *\n * *Enum* para definição do tipo de autenticação.\n */\nexport enum PoPageLoginAuthenticationType {\n /** Autenticação Basic */\n Basic = 'Basic',\n\n /** Autenticação Bearer */\n Bearer = 'Bearer'\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { PoPageLogin } from './interfaces/po-page-login.interface';\nimport { PoPageLoginAuthenticationType } from './enums/po-page-login-authentication-type.enum';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PoPageLoginService {\n constructor(private http: HttpClient) {}\n\n onLogin(url: string, type: PoPageLoginAuthenticationType, loginForm: PoPageLogin): Observable<object> {\n if (type === PoPageLoginAuthenticationType.Bearer) {\n loginForm.password = btoa(loginForm.password);\n return this.http.post(url, loginForm);\n } else {\n const user = `(${loginForm.login}:${loginForm.password})`;\n const headers = new HttpHeaders({\n 'Authorization': `${type} ` + btoa(user)\n });\n delete loginForm.login;\n delete loginForm.password;\n return this.http.post(url, loginForm, { headers });\n }\n }\n}\n","import { Directive, EventEmitter, HostBinding, Input, OnDestroy, Output } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\n\nimport {\n convertToBoolean,\n convertToInt,\n getDefaultSizeFn,\n getShortBrowserLanguage,\n isExternalLink,\n isTypeof,\n validateSizeFn\n} from './../../utils/util';\n\nimport { PoLanguage, poLanguageDefault, PoLanguageService, poLocaleDefault } from '@po-ui/ng-components';\n\nimport { PoPageLoginAuthenticationType } from './enums/po-page-login-authentication-type.enum';\nimport { PoPageLoginCustomField } from './interfaces/po-page-login-custom-field.interface';\nimport { PoPageLoginLiterals } from './interfaces/po-page-login-literals.interface';\nimport { PoPageLoginRecovery } from './interfaces/po-page-login-recovery.interface';\nimport { PoPageLogin } from './interfaces/po-page-login.interface';\nimport { PoPageLoginService } from './po-page-login.service';\n\nconst poPageLoginContentMaxLength = 40;\n\nexport const poPageLoginLiteralsDefault = {\n en: <PoPageLoginLiterals>{\n title: 'Welcome',\n loginErrorPattern: 'Invalid Login',\n loginHint: `Your login user was given to you at your first day.\n If you don't have this information contact support`,\n loginPlaceholder: 'Insert your e-mail',\n passwordErrorPattern: 'Invalid Password',\n passwordPlaceholder: 'Insert your password',\n customFieldErrorPattern: 'Invalid value',\n customFieldPlaceholder: 'Please enter a value',\n rememberUser: 'Automatic login',\n rememberUserHint: 'You can disable this option in system configuration',\n submitLabel: 'Enter',\n submittedLabel: 'Loading...',\n forgotPassword: 'Forgot your Password?',\n highlightInfo: '',\n registerUrl: 'New register',\n titlePopover: 'Oops!',\n forgotYourPassword: 'Forgot your password?',\n ifYouTryHarder: 'If you try ',\n attempts: '{0} more time(s) ',\n yourUserWillBeBlocked:\n 'without success your user will be blocked and you will be left 24 hours without being able to access :(',\n createANewPasswordNow: 'Better create a new password now! You will be able to log into the system right away.',\n iForgotMyPassword: 'I forgot my password',\n welcome: 'Welcome',\n support: 'Support'\n },\n es: <PoPageLoginLiterals>{\n title: 'Bienvenido',\n loginErrorPattern: 'Login inválido',\n loginHint: `Su usuario ha sido entregado para usted en su primer día.\n Si no tiene esta información, póngase en contacto con el soporte técnico`,\n loginPlaceholder: 'Inserte su e-mail',\n passwordErrorPattern: 'Contraseña inválida',\n passwordPlaceholder: 'Inserte su contraseña',\n customFieldErrorPattern: 'Valor no válido.',\n customFieldPlaceholder: 'Por favor introduzca un valor',\n rememberUser: 'Inicio de sesión automáticamente',\n rememberUserHint: 'Puede deshabilitar esta opción en el menú del sistema.',\n submitLabel: 'Entrar',\n submittedLabel: 'Cargando...',\n forgotPassword: 'Olvidaste tu contraseña?',\n highlightInfo: '',\n registerUrl: 'Nuevo registro',\n titlePopover: 'Opa!',\n forgotYourPassword: 'Olvidaste tu contraseña?',\n ifYouTryHarder: 'Si intenta más ',\n attempts: '{0} vez/veces ',\n yourUserWillBeBlocked: 'sin éxito su usuario sera bloqueado y usted vás permanecer 24 horas sin poder acceder a :(',\n createANewPasswordNow:\n '¡Mejor crear una nueva contraseña ahora! Usted podrá entrar en el sistema inmediatamente después.',\n iForgotMyPassword: 'Olvide mi contraseña',\n welcome: 'Bienvenido',\n support: 'Soporte'\n },\n pt: <PoPageLoginLiterals>{\n title: 'Bem-vindo',\n loginErrorPattern: 'Login inválido',\n loginHint: `Seu usuário foi entregue a você no seu primeiro dia.\n Caso não tenha mais essa informação contacte o suporte`,\n loginPlaceholder: 'Insira seu e-mail',\n passwordErrorPattern: 'Senha inválida',\n passwordPlaceholder: 'Insira sua senha',\n customFieldErrorPattern: 'Valor inválido.',\n customFieldPlaceholder: 'Por favor insira um valor',\n rememberUser: 'Logar automaticamente',\n rememberUserHint: 'Você pode desabilitar essa opção no menu do sistema',\n submitLabel: 'Entrar',\n submittedLabel: 'Carregando...',\n forgotPassword: 'Esqueceu sua senha?',\n highlightInfo: '',\n registerUrl: 'Novo registro',\n titlePopover: 'Opa!',\n forgotYourPassword: 'Esqueceu sua senha?',\n ifYouTryHarder: 'Se tentar mais ',\n attempts: '{0} vez(es) ',\n yourUserWillBeBlocked: 'sem sucesso seu usuário será bloqueado e você fica 24 horas sem poder acessar :(',\n createANewPasswordNow: 'Melhor criar uma senha nova agora! Você vai poder entrar no sistema logo em seguida.',\n iForgotMyPassword: 'Esqueci minha senha',\n welcome: 'Boas-vindas',\n support: 'Suporte'\n },\n ru: <PoPageLoginLiterals>{\n title: 'Добро пожаловать!',\n loginErrorPattern: 'Неверный логин',\n loginHint: `Ваш логин был предоставлен вам в первый день.\n Если у вас нет этой информации, обратитесь в службу поддержки`,\n loginPlaceholder: 'Вставьте свой адрес электронной почты',\n passwordErrorPattern: 'Неверный пароль',\n passwordPlaceholder: 'Введите свой пароль',\n customFieldErrorPattern: 'Неверное значение.',\n customFieldPlaceholder: 'Пожалуйста, введите значение',\n rememberUser: 'Автоматический вход',\n rememberUserHint: 'Вы можете отключить эту опцию в конфигурации системы',\n submitLabel: 'Войти',\n submittedLabel: '3агрузка...',\n forgotPassword: 'Забыли пароль?',\n highlightInfo: '',\n registerUrl: 'Новый регистр',\n titlePopover: 'Ой!',\n forgotYourPassword: 'Забыли пароль?',\n ifYouTryHarder: 'Если вы безуспешно попытаетесь войти еще ',\n attempts: '{0} раз(а) ',\n yourUserWillBeBlocked: 'Ваш пользователь будет заблокирован, и Вы останетесь на 24 часа без возможности доступа :(',\n createANewPasswordNow: 'Лучше создайте новый пароль сейчас! Вы сможете сразу войти в систему.',\n iForgotMyPassword: 'Я забыл свой пароль',\n welcome: 'добро пожаловать',\n support: 'Поддержка'\n }\n};\n\nexport const poPageLoginLiteralIn = {\n en: 'in',\n es: 'en',\n pt: 'em',\n ru: 'в'\n};\n\n/**\n * @description\n *\n * O componente `po-page-login` é utilizado como template para tela de login.\n * Com ele é possível definirmos valores para usuário, senha e definir ações para recuperação de senha e gravação de dados do usuário.\n * Também é possível inserir uma imagem em conjunto com um texto de destaque.\n *\n *\n * A propriedade `p-authentication-url` automatiza a rotina do componente e simplifica o processo para autenticação do usuário, bastando\n * definir uma url para requisição da autenticação. A flexibilidade e praticidade podem chegar a um nível em que o desenvolvimento\n * da aplicação no *client side* é desprovida de qualquer código-fonte relacionado à rotina de login de usuário.\n * Seu detalhamento para uso pode ser visto logo abaixo em *propriedades*.\n * Caso julgue necessário, pode-se também definir manualmente a rotina do componente.\n *\n *\n * Para que as imagens sejam exibidas corretamente, é necessário incluir o caminho delas ao projeto. Para isso, edite\n * o *assets* no arquivo **angular.json** da aplicação na seguinte ordem:\n * ```\n * \"assets\": [\n * \"src/assets\",\n * \"src/favicon.ico\",\n * {\n * \"glob\": \"**\\/*\",\n * \"input\": \"node_modules/@po-ui/style/images\",\n * \"output\": \"assets/images\"\n * }\n * ]\n * ```\n */\n@Directive()\nexport abstract class PoPageLoginBaseComponent implements OnDestroy {\n /**\n * O `p-background` permite inserir uma imagem de destaque ao lado direito do formulário de login, caso a propriedade\n * não seja preenchida o formulário será centralizado no espaço disponível.\n *\n * A fonte da imagem pode ser de um caminho local ou uma url de um servidor externo.\n *\n * Além da imagem, é possível adicionar um texto informativo por cima da imagem da imagem de destaque, para isso informe\n * um valor para a literal `highlightInfo`.\n *\n * > Veja mais sobre as literais na propriedade `p-literals`.\n *\n * Exemplos de valores válidos:\n * - **local**: `./assets/images/login-background.png`\n * - **url externa**: `https://po-ui.io/assets/images/login-background.png`\n *\n * > Essa propriedade é ignorada para aplicações mobile.\n */\n @Input('p-background') background?: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Caminho para a logomarca localizada na parte superior.\n *\n * > Caso seja indefinida o espaço se mantém preservado porém vazio.\n */\n @Input('p-logo') logo?: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Expressão regular para validar o campo de login, caso a expressão não seja atentida, a literal `loginErrorPattern`\n * será exibida.\n *\n * Exemplos de valores válidos:\n * - email: `[expressao-regular-email]`\n * - cpf: `[expressao-regular-cpf]`\n *\n * > Veja a propriedade `p-literals` para customizar a literal `loginErrorPattern`.\n */\n @Input('p-login-pattern') loginPattern?: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Expressão regular para validar o campo de password, caso a expressão não seja atentida, a literal `passwordErrorPattern`\n * será exibida.\n *\n * Exemplos de valores válidos:\n * - Apenas números: `\\d?`\n * - Letras mínusculas: `\\z?`\n *\n * > Veja a propriedade `p-literals` para customizar a literal `passwordErrorPattern`.\n */\n @Input('p-password-pattern') passwordPattern?: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Caminho para a logomarca localizada no rodapé.\n */\n @Input('p-secondary-logo') secondaryLogo?: string;\n\n /**\n * @optional\n *\n * @description\n *\n * Evento disparado quando o usuário alterar o input do campo login.\n *\n * Esse evento receberá como parâmetro uma variável do tipo `string` com o texto informado no campo.\n *\n * > Esta propriedade será ignorada se for definido valor para a propriedade `p-authentication-url`.\n */\n @Output('p-login-change') loginChange: EventEmitter<string> = new EventEmitter<string>();\n\n /**\n * Evento disparado ao submeter o formulário de login (apertando `Enter` dentro dos campos ou pressionando o botão de confirmação).\n *\n * Esse evento receberá como parâmetro um objeto do tipo `PoPageLogin` com os dados informados no formulário.\n *\n * > Esta propriedade será ignorada se for definido valor para a propriedade `p-url-recovery`.\n *\n * > Para mais detalhes consulte a documentação sobre a interface `PoPageLogin` mais abaixo.\n */\n @Output('p-login-submit') loginSubmit = new EventEmitter<PoPageLogin>();\n\n /**\n * @optional\n *\n * @description\n *\n * Evento disparado quando o usuário alterar o input do campo password.\n *\n * Esse evento receberá como parâmetro uma variável do tipo `string` com o texto informado no campo.\n *\n * > Esta propriedade será ignorada se for definido valor para a propriedade `p-authentication-url`.\n */\n @Output('p-password-change') passwordChange: EventEmitter<string> = new EventEmitter<string>();\n\n /**\n * @optional\n *\n * @description\n *\n * Evento disparado quando o usuário alterar o idioma da página.\n *\n * Esse evento receberá como parâmetro um objeto do tipo `PoLanguage` com a linguagem selecionada.\n *\n */\n @Output('p-language-change') languageChange: EventEmitter<PoLanguage> = new EventEmitter<PoLanguage>();\n\n /**\n * @optional\n *\n * @description\n *\n * Define a propriedade nativa `autocomplete` do campo como `off`.\n *\n * @default `true`\n */\n @Input('p-no-autocomplete-login') noAutocompleteLogin: boolean = true;\n\n /**\n * @optional\n *\n * @description\n *\n * Define a propriedade nativa `autocomplete` do campo como `off`.\n *\n * > No componente `po-password` será definido como `new-password`.\n *\n * @default `true`\n */\n @Input('p-no-autocomplete-password') noAutocompletePassword: boolean = true;\n\n /**\n * @optional\n *\n * @description\n *\n * Indica se o status do `model` do switch de lembrar o usuário será escondido visualmente.\n *\n * > Por padrão será atribuído `false`.\n * @default `false`\n */\n @Input({ alias: 'p-hide-label-status', transform: convertToBoolean }) hideLabelStatus: boolean = false;\n\n /**\n * @optional\n *\n * @description\n *\n * Permite esconder a função de espiar a senha digitada.\n *\n * @default `false`\n */\n @Input('p-hide-password-peek') hidePasswordPeek: boolean;\n\n allLoginErrors: Array<string> = [];\n allPasswordErrors: Array<string> = [];\n customFieldObject: PoPageLoginCustomField;\n customFieldType: string;\n loginSubscription: Subscription;\n password: string;\n rememberUser: boolean = false;\n selectedLanguage: string;\n showExceededAttemptsWarning = false;\n\n private _authenticationType: PoPageLoginAuthenticationType = PoPageLoginAuthenticationType.Basic;\n private _authenticationUrl: string;\n private _blockedUrl: string;\n private _componentsSize?: string = undefined;\n private _contactEmail: string;\n private _customField: string | PoPageLoginCustomField;\n private _environment?: string;\n private _exceededAttemptsWarning?: number;\n private _hideRememberUser: boolean = false;\n private _literals: PoPageLoginLiterals;\n private _loading?: boolean = false;\n private _login: string;\n private _loginErrors: Array<string> = [];\n private _passwordErrors: Array<string> = [];\n private _productName: string;\n private _recovery: string | PoPageLoginRecovery | Function;\n private _registerUrl: string;\n private _support: string | Function;\n private _languagesList: Array<PoLanguage>;\n\n /**\n * @optional\n *\n * @description\n *\n * Define o tamanho dos componentes de formulário no template:\n * - `small`: aplica a medida small de cada componente (disponível apenas para acessibilidade AA).\n * - `medium`: aplica a medida medium de cada componente.\n *\n * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido.\n * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme).\n *\n * @default `medium`\n */\n @HostBinding('attr.p-components-size')\n @Input('p-components-size')\n set componentsSize(value: string) {\n this._componentsSize = validateSizeFn(value);\n }\n\n get componentsSize(): string {\n return this._componentsSize ?? getDefaultSizeFn();\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Ao informar um valor do tipo `string`, o mesmo será aplicado como a chave do campo customizado e utilizará\n * os valores padrões contidos na propriedade `literals` como `customFieldErrorPattern` e `customFieldPlaceholder`.\n *\n * Existe a possibilidade de informar um objeto que segue a definição da interface `PoPageLoginCustomField`, onde\n * através dos parâmetros enviados pode gerar um `po-input`, `po-combo` especificamente para serviços\n * ou `po-select` para valores fixos.\n *\n * Abaixo seguem os exemplos de cada tipo de campo.\n *\n * `po-input`:\n *\n * ```\n * {\n * property: 'domain',\n * value: 'jv01',\n * placeholder: 'Enter your domain',\n * pattern: '[a-z]',\n * errorPattern: 'Invalid value'\n * }\n * ```\n *\n * `po-combo`:\n *\n * ```\n * {\n * property: 'domain',\n * value: 'jv01',\n * placeholder: 'Enter your domain',\n * url: 'https://po-ui.io/sample/api/comboOption/domains',\n * fieldValue: 'nickname'\n * }\n * ```\n *\n * `po-select`:\n *\n * ```\n * {\n * property: 'domain',\n * value: 'jv01',\n * placeholder: 'Enter your domain',\n * options: [{label: 'Domain 1', value: '1'}, {label: 'Domain 2', value: '2'}]\n * }\n * ```\n *\n * Caso o customField possua options, url e fieldValue preenchidos, será priorizado o po-select\n * utilizando o options.\n *\n */\n @Input('p-custom-field') set customField(value: string | PoPageLoginCustomField) {\n if (value) {\n if (isTypeof(value, 'string')) {\n this.customFieldType = 'input';\n this._customField = value;\n this.customFieldObject = this.getDefaultCustomFieldObject(value);\n return;\n }\n\n if (isTypeof(value, 'object') && !Array.isArray(value) && value['property']) {\n this._customField = value;\n this.customFieldObject = <PoPageLoginCustomField>value;\n\n if (!this.customFieldObject.options && !this.customFieldObject.url) {\n this.customFieldType = 'input';\n } else {\n this.customFieldType = this.customFieldObject.options ? 'select' : 'combo';\n }\n\n return;\n }\n }\n\n this._customField = undefined;\n this.customFieldObject = undefined;\n }\n\n get customField(): string | PoPageLoginCustomField {\n return this._customField;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Personaliza o e-mail que é exibido na mensagem de dica de login padrão para contato de suporte.\n */\n @Input('p-contact-email') set contactEmail(value: string) {\n this._contactEmail = value;\n }\n get contactEmail() {\n return this._contactEmail;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Texto customizado que fica entre a logo e a mensagem de boas-vindas.\n */\n @Input('p-product-name') set productName(value: string) {\n this._productName = value;\n }\n get productName() {\n return this._productName;\n }\n\n /**\n * @optional\n *\n * @description\n * Adiciona uma `tag` abaixo do título que especifica o ambiente que o usuário está fazendo o login.\n *\n * > Essa propriedade limita o texto em 40 caracteres.\n */\n @Input('p-environment') set environment(environment: string) {\n if (environment && environment.length > poPageLoginContentMaxLength) {\n this._environment = environment.substring(0, poPageLoginContentMaxLength);\n } else {\n this._environment = environment;\n }\n }\n get environment() {\n return this._environment;\n }\n\n /**\n * @optional\n *\n * @description\n * Exibe um aviso de bloqueio de acordo com a quantidade restante de tentativas.\n * O aviso será exibido somente se a quantidade for maior que zero.\n *\n * > Caso tenha algum valor atribuído para o atributo `p-authentication-url` e o retorno da requisição estiver atribuindo valor\n * para o `p-exceeded-attempts-warning`, o valor considerado será o do retorno da requisição.\n *\n * @default `0`\n */\n @Input('p-exceeded-attempts-warning') set exceededAttemptsWarning(value: number) {\n this._exceededAttemptsWarning = convertToInt(value);\n this.showExceededAttemptsWarning = this.exceededAttemptsWarning > 0;\n }\n\n get exceededAttemptsWarning(): number {\n return this._exceededAttemptsWarning;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Esconde a função \"Lembrar usuário\" do formulário de login.\n *\n * Quando essa propriedade é setada com `true` a propriedade `rememberUser` enviada no evento `p-login-submit` será sempre\n * `false`.\n *\n * > Veja a propriedade `p-literals` para customizar a literal `rememberUser`.\n *\n * @default `false`\n */\n @Input('p-hide-remember-user') set hideRememberUser(value: boolean) {\n this._hideRememberUser = <any>value === '' ? true : convertToBoolean(value);\n\n if (this._hideRememberUser) {\n this.rememberUser = false;\n }\n }\n get hideRememberUser(): boolean {\n return this._hideRememberUser;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Objeto com as literais usadas no `po-page-login`.\n *\n * Existem duas maneiras de customizar o componente, passando um objeto com todas as literais disponíveis:\n *\n * ```\n * const customLiterals: PoPageLoginLiterals = {\n * attempts: '{0} vez(es) ',\n * createANewPasswordNow: 'Melhor criar uma senha nova agora! Você vai poder entrar no sistema logo em seguida.',\n * forgotPassword: 'Esqueceu sua senha?',\n * forgotYourPassword: 'Esqueceu sua senha?',\n * highlightInfo: '',\n * iForgotMyPassword: 'Esqueci minha senha',\n * ifYouTryHarder: 'Se tentar mais ',\n * welcome: 'Boas-vindas',\n * loginErrorPattern: 'Login obrigatório',\n * loginHint: 'Caso não possua usuário entre em contato com o suporte',\n * loginLabel: 'Insira seu usuário',\n * loginPlaceholder: 'Insira seu usuário de acesso',\n * passwordErrorPattern: 'Senha obrigatória',\n * passwordLabel: 'Insira sua senha',\n * passwordPlaceholder: 'Insira sua senha de acesso',\n * customFieldErrorPattern: 'Campo customizado inválido',\n * customFieldPlaceholder: 'Por favor insira um valor',\n * registerUrl: 'Novo registro',\n * rememberUser: 'Lembrar usuário',\n * rememberUserHint: 'Esta opção pode ser desabilitada nas configurações do sistema',\n * submitLabel: 'Acessar sistema',\n * submittedLabel: 'Carregando...',\n * titlePopover: 'Opa!',\n * yourUserWillBeBlocked: 'sem sucesso seu usuário será bloqueado e você fica 24 horas sem poder acessar :('\n * };\n * ```\n *\n * Ou passando apenas as literais que deseja customizar:\n *\n * ```\n * const customLiterals: PoPageLoginLiterals = {\n * loginPlaceholder: 'Insira seu usuário de acesso',\n * passwordPlaceholder: 'Insira sua senha de acesso',\n * submitLabel: 'Acessar sistema'\n * };\n * ```\n *\n * E para carregar as literais customizadas, basta apenas passar o objeto para o componente.\n *\n * ```\n * <po-page-login\n * [p-literals]=\"customLiterals\">\n * </po-page-login>\n * ```\n *\n * > O objeto padrão de literais será traduzido de acordo com o idioma do browser (pt, en, es).\n * > É também possível alternar o objeto padrão de literais através do seletor de idiomas localizado na parte inferior do template,\n * nesse caso, há também a opção do idioma russo.\n */\n @Input('p-literals') set literals(value: PoPageLoginLiterals) {\n this._literals = value;\n }\n\n get literals() {\n return this._literals;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Habilita um estado de carregamento ao botão de *login*.\n *\n * > É necessário atribuir `true` à esta propriedade na função definida em `p-login-submit`.\n *\n * @default `false`\n */\n @Input('p-loading') set loading(value: boolean) {\n this._loading = convertToBoolean(value);\n }\n\n get loading(): boolean {\n return this._loading;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Valor do modelo do campo de login.\n */\n @Input('p-login') set login(value: string) {\n this._login = value;\n\n if (!this.authenticationUrl) {\n this.loginChange.emit(this._login);\n }\n }\n\n get login(): string {\n return this._login;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Atributo que recebe uma lista de erros e exibe abaixo do campo de login.\n */\n @Input('p-login-errors') set loginErrors(value: Array<string>) {\n this._loginErrors = value || [];\n this.setLoginErrors(this._loginErrors);\n }\n get loginErrors() {\n return this._loginErrors;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Atributo que recebe uma lista de erros e exibe abaixo do campo de password.\n */\n @Input('p-password-errors') set passwordErrors(value: Array<string>) {\n this._passwordErrors = value || [];\n this.setPasswordErrors(this._passwordErrors);\n }\n get passwordErrors() {\n return this._passwordErrors;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Exibe um link abaixo do formulário de login para que os usuários da aplicação façam a recuperação dos dados de autenticação.\n *\n * A propriedade aceita os seguintes tipos:\n *\n * - **String**: informe uma url externa ou uma rota válida;\n * - **Function**: pode-se customizar a ação. Para esta possilidade basta atribuir:\n * ```\n * <po-page-login>\n * [recovery]=\"this.myRecovery.bind(this)\">\n * </po-page-login>\n * ```\n *\n * - **PoPageLoginRecovery**: cria-se vínculo automático com o template **po-modal-password-recovery**.\n * O objeto deve conter a **url** para requisição dos recursos e pode-se definir o **tipo** de modal para recuperação de senha,\n * **email** para contato e **máscara** do campo de telefone.\n */\n @Input('p-recovery') set recovery(value: string | Function | PoPageLoginRecovery) {\n this._recovery = value;\n }\n\n get recovery() {\n return this._recovery;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Caso a aplicação tenha um link para novos cadastros, informe uma url externa ou uma rota válida, dessa\n * forma será exibido um link abaixo do formulário de login para os usuários da aplicação.\n *\n * Exemplos de valores válidos:\n * - **local**: `/home`\n * - **url externa**: `https://po-ui.io`\n *\n * > Veja a propriedade `p-literals` para customizar a literal `registerUrl`.\n */\n @Input('p-register-url') set registerUrl(value: string) {\n this._registerUrl = isTypeof(value, 'string') ? value : undefined;\n }\n\n get registerUrl(): string {\n return this._registerUrl;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Atributo que recebe o tipo de esquema da autenticação, sendo suportados apenas os valores `Basic` e `Bearer`.\n *\n * > Caso o tipo definido seja `Basic`, o componente fará uma requisição `POST` contendo:\n *\n * ```\n * headers {\n * Authorization: Basic base64(login:password)\n * }\n *\n * body {\n * rememberUser: rememberUser\n * }\n * ```\n *\n * > Caso o tipo definido seja `Bearer`, o componente fará uma requisição `POST` contendo:\n *\n * ```\n * body {\n * login: login,\n * password: base64(password),\n * rememberUser: rememberUser\n * }\n * ```\n *\n * @default `PoPageLoginAuthenticationType.Basic`\n */\n @Input('p-authentication-type') set authenticationType(value: PoPageLoginAuthenticationType) {\n this._authenticationType = (<any>Object).values(PoPageLoginAuthenticationType).includes(value)\n ? value\n : PoPageLoginAuthenticationType.Basic;\n }\n\n get authenticationType(): PoPageLoginAuthenticationType {\n return this._authenticationType;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Endpoint usado pelo template para requisição do recurso. Quando preenchido, o método `p-login-submit` será ignorado e o\n * componente adquirirá automatização para o processo de autenticação.\n *\n * ### Processos\n * Ao digitar um valor válido no campo de login/password e pressionar **Enter**, o componente fará uma requisição `POST`\n * na url especificada nesta propriedade passando o objeto contendo o valor definido pelo usuário:\n *\n * ```\n * headers {\n * Authorization: Basic base64(login:password)\n * }\n *\n * body {\n * rememberUser: rememberUser\n * }\n * ```\n *\n * Em caso de **sucesso**, o objeto de retorno é armazenado no `sessionStorage` e o usuário é redirecionado para a página inicial da\n * aplicação `/`.\n *\n * ```\n * 200:\n * {\n * user: user\n * }\n * ```\n *\n * Em caso de **erro** na autenticação, espera-se o seguinte retorno:\n *\n * ```\n * 400/401\n * {\n * code: 400/401,\n * message: message,\n * detailedMessage: detailedMessage,\n * helpUrl?: helpUrl\n * }\n * ```\n *\n * > Pode-se atribuir uma quantidade máxima de tentativas restantes (maxAttemptsRemaining) para o atributo `p-exceeded-attempts-warning`,\n * assim como os avisos relacionados aos campos login e password (loginWarnings, passwordWarnings) para os atributos `p-login-errors` e\n * `p-password-errors` conforme retorno abaixo:\n *\n * ```\n * 400\n * {\n * code: 400/401,\n * message: message,\n * detailedMessage: detailedMessage,\n * helpUrl?: helpUrl,\n * maxAttemptsRemaining?: maxAttemptsRemaining,\n * loginWarnings?: [loginWarnings],\n * passwordWarnings?: [passwordWarnings]\n * }\n * ```\n *\n * > Caso o valor atribuído para `p-exceeded-attempts-warning` seja igual a 0(zero), poderá ser passado um valor para o\n * atributo `p-blocked-url` e o usuário será redirecionado para uma tela de bloqueio.\n *\n * *Processo finalizado.*\n *\n * _______________\n *\n * #### Praticidade\n * As informações do serviço de autenticação também podem ser transmitidas diretamente pelas configuraçãos de rota e, desta maneira,\n * dispensa-se qualquer menção e/ou importação do componente `po-page-login` no restante da aplicação. O exemplo abaixo exemplifica\n * a forma dinâmica com a qual o template de tela de login pode ser gerado ao navegar para rota `/login`, e também como ele se comunica\n * com o serviço para efetuação do processo de autenticação do usuário e solicitação de nova senha.\n * Basta definir nas configurações de rota:\n *\n *\n * ```\n * import { PoPageLoginComponent, PoPageLoginAthenticationType } from '@po-ui/ng-templates';\n *\n * ...\n * const routes: Routes = [\n * {\n * path: 'login', component: PoPageLoginComponent, data: {\n * serviceApi: 'https://po-ui.io/sample/api/users/authentication',\n * environment: 'development',\n * recovery: {\n * url: 'https://po-ui.io/sample/api/users',\n * type: PoModalPasswordRecoveryType.All,\n * contactMail: 'dev.po@po-ui.com',\n * phoneMask: '9-999-999-9999'\n * },\n * registerUrl: '/new-password',\n * authenticationType: PoPageLoginAthenticationType.Basic\n * }\n * }\n * ...\n * ];\n *\n * @NgModule({\n * imports: [RouterModule.forRoot(routes)],\n * exports: [RouterModule]\n * })\n * export class AppRoutingModule { }\n * ```\n *\n *\n * O metadado `serviceApi` deve ser a **url** para requisição dos recursos de autenticação, o `environment` alimenta a propriedade\n * `p-environment`, `recovery` é a interface `PoPageLoginRecovery` responsável pelas especificações contidas na modal de recuperação de\n * senha, `registerUrl` alimenta a propriedade `p-register-url` e `authenticationType` que define a propriedade `p-authentication-type`.\n *\n * > É essencial que siga a nomenclatura dos atributos exemplificados acima para sua efetiva funcionalidade.\n *\n */\n @Input('p-authentication-url') set authenticationUrl(value: string) {\n this._authenticationUrl = isTypeof(value, 'string') ? value : undefined;\n }\n\n get authenticationUrl(): string {\n return this._authenticationUrl;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Caso o valor atribuído para `p-exceeded-attempts-warning` seja igual a 0(zero) e a aplicação tenha um link de bloqueio de usuário,\n * informe uma url externa ou uma rota válida, dessa forma em caso de bloqueio o usuário será redirecionado.\n */\n @Input('p-blocked-url') set blockedUrl(value: string) {\n this._blockedUrl = isTypeof(value, 'string') ? value : undefined;\n }\n\n get blockedUrl(): string {\n return this._blockedUrl;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Exibe um botão para suporte.\n *\n * A propriedade aceita os seguintes tipos:\n *\n * - **String**: URL externa ou uma rota válida;\n * - **Function**: Função a ser disparada ao clicar no botão de suporte;\n * ```\n * <po-page-login>\n * [p-support]=\"this.mySupport.bind(this)\">\n * </po-page-login>\n * ```\n *\n */\n @Input('p-support') set support(value: string | Function) {\n this._support = value;\n }\n\n get support() {\n return this._support;\n }\n\n /**\n * @optional\n *\n * @description\n *\n * Coleção de idiomas que o componente irá tratar e disponibilizará para o usuário escolher.\n *\n * Caso essa propriedade não seja utilizada o componente mostrará no combo os idiomas que ele suporta por padrão.\n *\n * Caso a coleção tenha um idioma, a página estará nesse idioma e não mostrará o combo.\n *\n * Caso seja passado um array vazio, a página terá o idioma configurado no `i18n` e não mostrará o combo de seleção.\n *\n * > Se for passado um idioma não suportado, será preciso passar as literais pela propriedade `p-literals`.\n *\n *\n */\n @Input('p-languages') set languagesList(languagesList: Array<PoLanguage>) {\n if (languagesList) {\n if (languagesList.length) {\n this._languagesList = languagesList;\n } else {\n this._languagesList = poLanguageDefault.filter(language => language.language === this.language);\n }\n }\n }\n\n get languagesList(): Array<PoLanguage> {\n if (this._languagesList) {\n return this._languagesList;\n }\n return poLanguageDefault;\n }\n\n get showLanguage() {\n return this.languagesList.length > 1;\n }\n\n get language(): string {\n return this.selectedLanguage || getShortBrowserLanguage();\n }\n\n get pageLoginLiterals(): PoPageLoginLiterals {\n const loginHintWithContactEmail = this.contactEmail\n ? this.concatenateLoginHintWithContactEmail(this.contactEmail)\n : undefined;\n\n return {\n ...poPageLoginLiteralsDefault[poLocaleDefault],\n ...poPageLoginLiteralsDefault[this.language],\n ...loginHintWithContactEmail,\n ...this.literals\n };\n }\n\n constructor(\n private loginService: PoPageLoginService,\n public router: Router,\n public poLanguageService: PoLanguageService\n ) {\n this.selectedLanguage = this.poLanguageService.getShortLanguage();\n }\n\n ngOnDestroy() {\n if (this.loginSubscription) {\n this.loginSubscription.unsubscribe();\n }\n }\n\n closePopover() {\n this.showExceededAttemptsWarning = false;\n }\n\n onLoginSubmit(): void {\n const loginForm: PoPageLogin = {\n login: this.login,\n password: this.password,\n rememberUser: this.rememberUser\n };\n\n if (this.customField) {\n loginForm[this.customFieldObject.property] = this.customFieldObject.value;\n }\n\n if (this.authenticationUrl) {\n this.loading = true;\n this.loginSubscription = this.loginService\n .onLogin(this.authenticationUrl, this.authenticationType, loginForm)\n .subscribe(\n data => {\n this.setValuesToProperties();\n sessionStorage.setItem('PO_USER_LOGIN', JSON.stringify(data));\n this.openInternalLink('/');\n this.loading = false;\n },\n error => {\n if (error.error.code === '400' || error.error.code === '401') {\n this.setValuesToProperties(error);\n this.redirectBlockedUrl(this.exceededAttemptsWarning, this.blockedUrl);\n }\n this.loading = false;\n }\n );\n } else {\n this.loginSubmit.emit(loginForm);\n this.showExceededAttemptsWarning = this.exceededAttemptsWarning > 0;\n }\n }\n\n private getDefaultCustomFieldObject(property): PoPageLoginCustomField {\n return { property };\n }\n\n private openExternalLink(url: string) {\n window.open(url, '_blank');\n }\n\n private openInternalLink(url: string) {\n this.router.navigate([url]);\n }\n\n private redirectBlockedUrl(attempts: number, blockedUrl: string) {\n if (attempts === 0 && blockedUrl) {\n this.showExceededAttemptsWarning = false;\n isExternalLink(blockedUrl) ? this.openExternalLink(blockedUrl) : this.openInternalLink(blockedUrl);\n }\n }\n\n private setValuesToProperties(result?) {\n if (result) {\n this.exceededAttemptsWarning = result.error.maxAttemptsRemaining;\n this.loginErrors = result.error.loginWarnings;\n this.passwordErrors = result.error.passwordWarnings;\n this.blockedUrl = result.error.blockedUrl;\n } else {\n this.exceededAttemptsWarning = 0;\n this.loginErrors = [];\n this.passwordErrors = [];\n this.blockedUrl = '';\n }\n }\n\n protected abstract concatenateLoginHintWithContactEmail(contactEmail: string);\n\n protected abstract setLoginErrors(value: Array<string>): void;\n\n protected abstract setPasswordErrors(value: Array<string>): void;\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { isExternalLink, isTypeof } from '../../../utils/util';\n\nimport { PoPageLoginLiterals } from '../interfaces/po-page-login-literals.interface';\nimport { PoPageLoginRecovery } from '../interfaces/po-page-login-recovery.interface';\n\n@Component({\n selector: 'po-page-login-popover',\n templateUrl: './po-page-login-popover.component.html',\n standalone: false\n})\n\n/**\n * @docsPrivate\n *\n * @description\n *\n * Componente para definição da mensagem de aviso de bloqueio do `po-page-login`.\n */\nexport class PoPageLoginPopoverComponent {\n @Input('p-literals') literals: PoPageLoginLiterals;\n\n /** exibe o link de 'esqueci minha senha' e verifica se o valor é um link interno ou externo */\n @Input('p-recovery') set recovery(value: string | Function | PoPageLoginRecovery) {\n this._recovery = value;\n\n if (isTypeof(value, 'string')) {\n this.recoveryType = isExternalLink(value) ? 'externalLink' : 'internalLink';\n }\n }\n\n get recovery() {\n return this._recovery;\n }\n\n /** define se a mensagem deverá ser exibida caso seja maior que 0(zero) */\n @Input('p-remaining-attempts') remainingAttempts: number;\n\n /** se 'p-recovery' for do tipo Function ou PoPageLoginRecovery, emite para o método 'openUrl' do componente 'po-page-login' */\n @Output('p-forgot-password') forgotPassword = new EventEmitter<any>();\n\n recoveryType: string;\n\n private _recovery: string | Function | PoPageLoginRecovery;\n\n onForgotPasswordClick(recovery) {\n this.forgotPassword.emit(recovery);\n }\n}\n","<div class=\"po-page-login-popover-container\">\n <div class=\"po-page-login-popover\">\n <div class=\"po-page-login-popover-arrow\"></div>\n <div class=\"po-page-login-popover-content\">\n <p class=\"po-font-text-bold po-page-login-popover-title\">\n {{ literals?.titlePopover }}\n </p>\n <p class=\"po-font-text\">\n {{ literals?.forgotYourPassword }}\n </p>\n <p class=\"po-font-text\">\n {{ literals?.ifYouTryHarder }}\n <span class=\"po-font-text-bold po-page-login-popover-attempts\">\n {{ literals?.attempts | poI18n: remainingAttempts }} </span\n >{{ literals?.yourUserWillBeBlocked }}\n </p>\n <br />\n <p class=\"po-font-text\">\n {{ literals?.createANewPasswordNow }}\n </p>\n @if (recovery) {\n <div class=\"po-font-text-bold po-mt-1 po-page-login-popover-link-container\">\n @if (recoveryType === 'internalLink') {\n <a class=\"po-page-login-popover-link\" [routerLink]=\"recovery\">\n {{ literals?.iForgotMyPassword }}\n </a>\n }\n @if (recoveryType === 'externalLink') {\n <a class=\"po-page-login-popover-link\" [href]=\"recovery\" target=\"_blank\">\n {{ literals?.iForgotMyPassword }}\n </a>\n }\n @if (!recoveryType) {\n <a class=\"po-page-login-popover-link\" (click)=\"onForgotPasswordClick(recovery)\">\n {{ literals?.iForgotMyPassword }}\n </a>\n }\n </div>\n }\n </div>\n </div>\n</div>\n","import {\n AfterViewChecked,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n IterableDiffers,\n OnInit,\n ViewChild,\n ViewContainerRef,\n inject\n} from '@angular/core';\nimport { AbstractControl, NgForm } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { PoLanguageService } from '@po-ui/ng-components';\n\nimport { PoComponentInjectorService } from '@po-ui/ng-components';\nimport { isExternalLink } from '../../utils/util';\n\nimport { PoModalPasswordRecoveryType } from '../po-modal-password-recovery/enums/po-modal-password-recovery-type.enum';\nimport { PoModalPasswordRecoveryComponent } from '../po-modal-password-recovery/po-modal-password-recovery.component';\nimport { PoPageLoginRecovery } from './interfaces/po-page-login-recovery.interface';\nimport {\n PoPageLoginBaseComponent,\n poPageLoginLiteralIn,\n poPageLoginLiteralsDefault\n} from './po-page-login-base.component';\nimport { PoPageLoginService } from './po-page-login.service';\n\n/**\n * @docsExtends PoPageLoginBaseComponent\n *\n * @example\n *\n * <example name=\"po-page-login-basic\" title=\"PO Page Login Basic\">\n * <file name=\"sample-po-page-login-basic/sample-po-page-login-basic.component.html\"> </file>\n * <file name=\"sample-po-page-login-basic/sample-po-page-login-basic.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-login-labs\" title=\"PO Page Login Labs\">\n * <file name=\"sample-po-page-login-labs/sample-po-page-login-labs.component.html\"> </file>\n * <file name=\"sample-po-page-login-labs/sample-po-page-login-labs.component.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-login-human-resources\" title=\"PO Page Login - Human Resources\">\n * <file name=\"sample-po-page-login-human-resources/sample-po-page-login-human-resources.component.html\"> </file>\n * <file name=\"sample-po-page-login-human-resources/sample-po-page-login-human-resources.component.ts\"> </file>\n * <file name=\"sample-po-page-login-human-resources/sample-po-page-login-human-resources.module.ts\"> </file>\n * </example>\n *\n * <example name=\"po-page-login-automatic-service\" title=\"PO Page Login - Automatic Service\">\n * <file name=\"sample-po-page-login-automatic-service/sample-po-page-login-automatic-service.component.html\"> </file>\n * <file name=\"sample-po-page-login-automatic-service/sample-po-page-login-automatic-service.component.ts\"> </file>\n * </example>\n */\n\n@Component({\n selector: 'po-page-login',\n templateUrl: './po-page-login.component.html',\n standalone: false\n})\nexport class PoPageLoginComponent extends PoPageLoginBaseComponent implements AfterViewChecked, OnInit {\n changeDetector = inject(ChangeDetectorRef);\n private activatedRoute = inject(ActivatedRoute);\n private poComponentInjector = inject(PoComponentInjectorService);\n\n @ViewChild('loginForm', { read: NgForm, static: true }) loginForm: NgForm;\n @ViewChild('pageLogin', { read: ViewContainerRef, static: true }) pageLogin: ViewContainerRef;\n\n initialSelectLanguage: string;\n\n private componentRef: ComponentRef<any> = null;\n private differ: any;\n private readonly customPasswordError = { custom: false };\n\n constructor() {\n const differs = inject(IterableDiffers);\n const loginService = inject(PoPageLoginService);\n const router = inject(Router);\n const poLanguageService = inject(PoLanguageService);\n\n super(loginService, router, poLanguageService);\n this.differ = differs.find([]).create(null);\n }\n\n ngAfterViewChecked() {\n if (this.differ) {\n this.validateArrayChanges(this.differ, [\n { array: this.loginErrors, callback: this.generateLoginError.bind(this) },\n { array: this.passwordErrors, callback: this.generatePasswordError.bind(this) }\n ]);\n }\n }\n\n ngOnInit() {\n this.checkingForRouteMetadata(this.activatedRoute.snapshot.data);\n this.selectedLanguage = this.initializeLanguage();\n this.initialSelectLanguage = this.selectedLanguage;\n }\n\n activateSupport() {\n switch (typeof this.support) {\n case 'string': {\n this.setUrlRedirect(this.support);\n break;\n }\n case 'function': {\n this.support();\n break;\n }\n }\n }\n\n changeLoginModel() {\n if (this.authenticationUrl) {\n this.loginErrors = [];\n } else {\n this.setLoginErrors(this.loginErrors);\n this.loginChange.emit(this.login);\n }\n }\n\n changePasswordModel() {\n if (this.authenticationUrl) {\n this.passwordErrors = [];\n } else {\n this.setPasswordErrors(this.passwordErrors);\n this.passwordChange.emit(this.password);\n }\n }\n\n onSelectedLanguage(language: string) {\n this.languageChange.emit(this.languagesList.find(languageItem => languageItem.language === language));\n this.selectedLanguage = language;\n }\n\n openUrl(recovery: any): void {\n switch (typeof recovery) {\n case 'string': {\n this.setUrlRedirect(recovery);\n break;\n }\n case 'function': {\n recovery();\n break;\n }\n case 'object': {\n this.createModalPasswordRecoveryComponent(recovery);\n break;\n }\n }\n }\n\n protected concatenateLoginHintWithContactEmail(contactEmail: string) {\n const defaultLoginHintLiteral = poPageLoginLiteralsDefault[this.language].loginHint;\n const prepositionLiteral = poPageLoginLiteralIn[this.language];\n\n return this.concatenateLiteral(contactEmail, 'loginHint', defaultLoginHintLiteral, prepositionLiteral);\n }\n\n protected setLoginErrors(errors: Array<string>) {\n const control = this.loginForm.form.controls['login'];\n this.setControlErrors('allLoginErrors', control, errors, this.pageLoginLiterals.loginErrorPattern);\n }\n\n protected setPasswordErrors(errors: Array<string>) {\n const control = this.loginForm.form.controls['password'];\n this.setControlErrors('allPasswordErrors', control, errors, this.pageLoginLiterals.passwordErrorPattern);\n }\n\n private checkingForMetadataProperty(object, property) {\n if (Object.prototype.hasOwnProperty.call(object, property)) {\n return object[property];\n }\n }\n\n private checkingForRouteMetadata(data) {\n if (Object.keys(data).length !== 0) {\n this.authenticationUrl = this.checkingForMetadataProperty(data, 'serviceApi') || this.authenticationUrl;\n this.authenticationType = this.checkingForMetadataProperty(data, 'authenticationType') || this.authenticationType;\n this.environment = this.checkingForMetadataProperty(data, 'environment') || this.environment;\n this.recovery = this.checkingForMetadataProperty(data, 'recovery') || this.recovery;\n this.registerUrl = this.checkingForMetadataProperty(data, 'registerUrl') || this.registerUrl;\n }\n }\n\n private concatenate(defaultLiteral: string, prefixLiteral: string, value: string) {\n return `${defaultLiteral} ${prefixLiteral} ${value}`;\n }\n\n private concatenateLiteral(value: string, literal: string, defaultLiteral: string, prepositionLiteral: string) {\n return { [literal]: this.concatenate(defaultLiteral, prepositionLiteral, value) };\n }\n\n private createModalPasswordRecoveryComponent(poPageLoginRecovery: PoPageLoginRecovery) {\n if (this.componentRef) {\n this.poComponentInjector.destroyComponentInApplication(this.componentRef);\n }\n\n this.componentRef = this.poComponentInjector.createComponentInApplication(PoModalPasswordRecoveryComponent);\n this.componentRef.instance.urlRecovery = poPageLoginRecovery.url;\n this.componentRef.instance.contactEmail = poPageLoginRecovery.contactMail;\n this.componentRef.instance.phoneMask = poPageLoginRecovery.phoneMask;\n this.componentRef.instance.type = poPageLoginRecovery.type || PoModalPasswordRecoveryType.Email;\n this.componentRef.changeDetectorRef.detectChanges();\n setTimeout(() => {\n this.componentRef.instance.open();\n });\n }\n\n private generateLoginError() {\n if (this.loginErrors && this.loginErrors.length) {\n this.setLoginErrors(this.loginErrors);\n } else {\n const control = this.loginForm.form.controls['login'];\n if (control) {\n this.resetControl(control);\n }\n }\n }\n\n private generatePasswordError() {\n if (this.passwordErrors && this.passwordErrors.length) {\n this.setPasswordErrors(this.passwordErrors);\n } else {\n const control = this.loginForm.form.controls['password'];\n\n if (control) {\n this.resetControl(control);\n }\n }\n }\n\n private resetControl(control: AbstractControl) {\n control.markAsPristine();\n control.markAsUntouched();\n control.updateValueAndValidity();\n }\n\n private setControlErrors(allErrors: string, control: AbstractControl, errors: Array<string>, patternError: string) {\n if (control) {\n this[allErrors] = control.hasError('pattern') ? [...errors, ...[patternError]] : [...errors];\n\n if (errors && errors.length && (control.valid || control.pristine)) {\n control.markAsTouched();\n control.markAsDirty();\n control.setErrors(this.customPasswordError);\n }\n }\n }\n\n private setUrlRedirect(url) {\n isExternalLink(url) ? window.open(url, '_blank') : this.router.navigate([url]);\n }\n\n private validateArrayChanges(differ: any, array: Array<{ array: Array<any>; callback: any }>) {\n array.forEach(element => {\n const changes = differ.diff(element.array);\n if (changes) {\n element.callback();\n this.changeDetector.detectChanges();\n }\n });\n }\n\n private initializeLanguage() {\n const language = this.languagesList.find(languageItem => languageItem.language === this.language);\n return language?.language || this.languagesList[0].language;\n }\n}\n","<button class=\"po-page-login-support\" (click)=\"activateSupport()\" [hidden]=\"!support\">\n <po-icon p-icon=\"ICON_HELP\"></po-icon>\n {{ pageLoginLiterals?.support }}\n</button>\n\n<po-page-background\n #pageLogin\n [p-components-size]=\"componentsSize\"\n [p-show-select-language]=\"showLanguage\"\n [p-languages]=\"languagesList\"\n [p-initial-language]=\"initialSelectLanguage\"\n [p-background]=\"background\"\n [p-highlight-info]=\"pageLoginLiterals.highlightInfo\"\n [p-logo]=\"logo\"\n [p-secondary-logo]=\"secondaryLogo\"\n (p-selected-language)=\"onSelectedLanguage($event)\"\n>\n <header class=\"po-page-login-header\">\n <div class=\"po-page-login-header-product-name\">\n <h1>{{ productName }}</h1>\n </div>\n\n <div class=\"po-page-login-header-product-environment po-mb-md-4 po-mb-sm-1\">\n @if (environment) {\n <po-tag p-type=\"warning\" [p-value]=\"environment\"> </po-tag>\n }\n </div>\n <div class=\"po-page-login-header-welcome po-mb-md-4 po-mb-sm-2\">{{ pageLoginLiterals.welcome }}</div>\n </header>\n\n <form #loginForm=\"ngForm\" class=\"po-page-login-form\">\n <div class=\"po-row\">\n <div class=\"po-lg-12\">\n <div class=\"po-page-login-hint po-page-login-info-container\">\n <po-login\n class=\"po-page-login-info-field\"\n [class.po-page-login-info-field-dynamic]=\"\n !pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\n \"\n name=\"login\"\n [(ngModel)]=\"login\"\n p-auto-focus\n p-required\n [p-label]=\"pageLoginLiterals.loginLabel\"\n [p-no-autocomplete]=\"noAutocompleteLogin\"\n [p-pattern]=\"loginPattern\"\n [p-placeholder]=\"pageLoginLiterals.loginPlaceholder\"\n [p-size]=\"componentsSize\"\n (click)=\"closePopover()\"\n (keyup.enter)=\"loginForm.valid && onLoginSubmit()\"\n (p-change-model)=\"changeLoginModel()\"\n >\n </po-login>\n\n @if (pageLoginLiterals.loginHint || pageLoginLiterals.rememberUserHint) {\n <div\n class=\"po-page-login-info-icon-container\"\n [class.po-page-login-info-icon-container-dynamic]=\"\n !pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\n \"\n >\n @if (pageLoginLiterals.loginHint) {\n <po-icon\n p-icon=\"ICON_INFO po-field-icon\"\n p-tooltip-position=\"right\"\n [p-tooltip]=\"pageLoginLiterals.loginHint\"\n >\n </po-icon>\n }\n </div>\n }\n </div>\n\n <div class=\"po-field-container-bottom po-field-container-error-container\">\n @for (error of allLoginErrors; track error) {\n <div class=\"po-field-container-bottom-text-error po-field-container-error-item\">\n <po-icon p-icon=\"ICON_EXCLAMATION\"></po-icon>\n <span class=\"po-field-error-message\">{{ error }}</span>\n </div>\n }\n </div>\n </div>\n\n <div class=\"po-lg-12\">\n <div class=\"po-page-login-password-container\">\n <po-password\n class=\"po-page-login-field-size po-page-login-password-item\"\n [class.po-page-login-field-size-dynamic]=\"\n !pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\n \"\n name=\"password\"\n [(ngModel)]=\"password\"\n p-required\n [p-hide-password-peek]=\"hidePasswordPeek\"\n [p-label]=\"pageLoginLiterals.passwordLabel\"\n [p-no-autocomplete]=\"noAutocompletePassword\"\n [p-pattern]=\"passwordPattern\"\n [p-placeholder]=\"pageLoginLiterals.passwordPlaceholder\"\n [p-size]=\"componentsSize\"\n (click)=\"closePopover()\"\n (keyup.enter)=\"loginForm.valid && onLoginSubmit()\"\n (p-change-model)=\"changePasswordModel()\"\n >\n </po-password>\n @if (pageLoginLiterals.loginHint || pageLoginLiterals.rememberUserHint) {\n <div class=\"po-page-login-password-item po-page-login-password-popover-container\">\n @if (showExceededAttemptsWarning && exceededAttemptsWarning) {\n <po-page-login-popover\n [p-literals]=\"pageLoginLiterals\"\n [p-recovery]=\"recovery\"\n [p-remaining-attempts]=\"exceededAttemptsWarning\"\n (p-forgot-password)=\"openUrl($event)\"\n >\n </po-page-login-popover>\n }\n </div>\n }\n </div>\n <div class=\"po-field-container-bottom po-field-container-error-container\">\n @for (error of allPasswordErrors; track error) {\n <div class=\"po-field-container-bottom-text-error po-field-container-error-item\">\n <po-icon p-icon=\"ICON_EXCLAMATION\"></po-icon>\n <span class=\"po-field-error-message\">{{ error }}</span>\n </div>\n }\n </div>\n </div>\n\n @if (customField && customFieldType === 'input') {\n <po-input\n [class.po-page-login-field-size-dynamic]=\"!pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\"\n class=\"po-page-login-field-size po-lg-12\"\n name=\"customFieldInput\"\n [(ngModel)]=\"customFieldObject.value\"\n p-required\n [p-error-pattern]=\"customFieldObject.errorPattern || pageLoginLiterals.customFieldErrorPattern\"\n [p-pattern]=\"customFieldObject.pattern\"\n [p-placeholder]=\"customFieldObject.placeholder || pageLoginLiterals.customFieldPlaceholder\"\n [p-size]=\"componentsSize\"\n (keyup.enter)=\"loginForm.valid && onLoginSubmit()\"\n >\n </po-input>\n }\n\n @if (customField && customFieldType === 'combo') {\n <po-combo\n [class.po-page-login-field-size-dynamic]=\"!pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\"\n class=\"po-page-login-field-size po-lg-12\"\n name=\"customFieldCombo\"\n [(ngModel)]=\"customFieldObject.value\"\n p-required\n [p-field-value]=\"customFieldObject.fieldValue\"\n [p-filter-service]=\"customFieldObject.url\"\n [p-placeholder]=\"customFieldObject.placeholder || pageLoginLiterals.customFieldPlaceholder\"\n [p-size]=\"componentsSize\"\n >\n </po-combo>\n }\n\n @if (customField && customFieldType === 'select') {\n <po-select\n [class.po-page-login-field-size-dynamic]=\"!pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\"\n class=\"po-page-login-field-size po-lg-12\"\n name=\"customFieldSelect\"\n [(ngModel)]=\"customFieldObject.value\"\n p-required\n [p-placeholder]=\"customFieldObject.placeholder || pageLoginLiterals.customFieldPlaceholder\"\n [p-options]=\"customFieldObject.options\"\n [p-size]=\"componentsSize\"\n >\n </po-select>\n }\n\n <div class=\"po-lg-12\">\n @if (!hideRememberUser) {\n <div class=\"po-page-login-hint po-page-login-info-container\">\n <po-switch\n class=\"po-page-login-info-field po-lg-7 po-offset-lg-5 po-offset-xl-5\"\n name=\"rememberUser\"\n [(ngModel)]=\"rememberUser\"\n p-label-position=\"1\"\n [p-label-off]=\"pageLoginLiterals.rememberUser\"\n [p-label-on]=\"pageLoginLiterals.rememberUser\"\n [p-size]=\"componentsSize\"\n (keyup.enter)=\"loginForm.valid && onLoginSubmit()\"\n [p-hide-label-status]=\"hideLabelStatus\"\n >\n </po-switch>\n @if (pageLoginLiterals.loginHint || pageLoginLiterals.rememberUserHint) {\n <div\n class=\"po-page-login-info-icon-container po-page-login-info-icon-remember-user\"\n [class.po-page-login-info-icon-container-dynamic]=\"!pageLoginLiterals.rememberUserHint\"\n >\n @if (pageLoginLiterals.rememberUserHint) {\n <po-icon\n p-icon=\"ICON_INFO po-field-icon\"\n p-tooltip-position=\"right\"\n [p-tooltip]=\"pageLoginLiterals.rememberUserHint\"\n >\n </po-icon>\n }\n </div>\n }\n </div>\n }\n </div>\n\n <po-button\n [class.po-page-login-button-dynamic]=\"!pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\"\n class=\"po-lg-12 po-page-login-button po-page-login-field-size\"\n p-kind=\"primary\"\n [p-disabled]=\"loginForm.invalid\"\n [p-label]=\"loading ? pageLoginLiterals.submittedLabel : pageLoginLiterals.submitLabel\"\n [p-loading]=\"loading\"\n [p-size]=\"componentsSize\"\n (p-click)=\"onLoginSubmit()\"\n >\n </po-button>\n\n @if (recovery) {\n <div class=\"po-page-login-recovery-link\">\n <a class=\"po-font-text-large-bold\" (click)=\"openUrl(recovery)\">{{ pageLoginLiterals.forgotPassword }}</a>\n </div>\n }\n\n @if (registerUrl) {\n <div class=\"po-page-login-register-link\">\n <a class=\"po-font-text-large-bold\" (click)=\"openUrl(registerUrl)\">{{ pageLoginLiterals.registerUrl }}</a>\n </div>\n }\n </div>\n </form>\n</po-page-background>\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { PoModule } from '@po-ui/ng-components';\n\nimport { PoModalPasswordRecoveryComponent } from '../po-modal-password-recovery/po-modal-password-recovery.component';\nimport { PoPageBackgroundModule } from '../po-page-background/index';\nimport { PoPageLoginComponent } from './po-page-login.component';\nimport { PoPageLoginPopoverComponent } from './po-page-login-popover/po-page-login-popover.component';\nimport { PoPageLoginService } from './po-page-login.service';\n\n/**\n * @description\n *\n * Módulo do template do po-page-login.\n */\n@NgModule({\n imports: [CommonModule, FormsModule, RouterModule, PoPageBackgroundModule, PoModule],\n declarations: [PoPageLoginComponent, PoPageLoginPopoverComponent],\n exports: [PoPageLoginComponent],\n providers: [PoPageLoginService]\n})\nexport class PoPageLoginModule {}\n","import { NgModule } from '@angular/core';\n\nimport { PoModalPasswordRecoveryModule } from './po-modal-password-recovery/po-modal-password-recovery.module';\nimport { PoPageBackgroundModule } from './po-page-background/po-page-background.module';\nimport { PoPageBlockedUserModule } from './po-page-blocked-user/po-page-blocked-user.module';\nimport { PoPageChangePasswordModule } from './po-page-change-password/po-page-change-password.module';\nimport { PoPageDynamicDetailModule } from './po-page-dynamic-detail/po-page-dynamic-detail.module';\nimport { PoPageDynamicEditModule } from './po-page-dynamic-edit/po-page-dynamic-edit.module';\nimport { PoPageDynamicSearchModule } from './po-page-dynamic-search/po-page-dynamic-search.module';\nimport { PoPageDynamicTableModule } from './po-page-dynamic-table/po-page-dynamic-table.module';\nimport { PoPageJobSchedulerModule } from './po-page-job-scheduler/po-page-job-scheduler.module';\nimport { PoPageLoginModule } from './po-page-login/po-page-login.module';\n\n@NgModule({\n imports: [\n PoModalPasswordRecoveryModule,\n PoPageBackgroundModule,\n PoPageBlockedUserModule,\n PoPageChangePasswordModule,\n PoPageDynamicDetailModule,\n PoPageDynamicEditModule,\n PoPageDynamicSearchModule,\n PoPageDynamicTableModule,\n PoPageJobSchedulerModule,\n PoPageLoginModule\n ],\n exports: [\n PoModalPasswordRecoveryModule,\n PoPageBackgroundModule,\n PoPageBlockedUserModule,\n PoPageChangePasswordModule,\n PoPageDynamicDetailModule,\n PoPageDynamicEditModule,\n PoPageDynamicSearchModule,\n PoPageDynamicTableModule,\n PoPageJobSchedulerModule,\n PoPageLoginModule\n ]\n})\nexport class PoComponentsModule {}\n","import { NgModule } from '@angular/core';\n\nimport { PoPageCustomizationModule } from './po-page-customization/po-page-customization.module';\nimport { PoPageDynamicModule } from './po-page-dynamic/po-page-dynamic.module';\n\n@NgModule({\n imports: [PoPageCustomizationModule, PoPageDynamicModule],\n exports: [PoPageCustomizationModule, PoPageDynamicModule]\n})\nexport class PoServicesModule {}\n","import { NgModule } from '@angular/core';\n\nimport { PoComponentsModule } from './components/components.module';\nimport { PoServicesModule } from './services/services.module';\n\n@NgModule({\n imports: [PoComponentsModule, PoServicesModule],\n exports: [PoComponentsModule, PoServicesModule]\n})\nexport class PoTemplatesModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i4.PoModalPasswordRecoveryErrorMessageComponent","i2","i2.PoPageBackgroundComponent","i3.PoPageBlockedUserContactsComponent","i4.PoPageBlockedUserReasonComponent","i3","i4","i5.PoPageBackgroundComponent","i2.PoAdvancedFilterComponent","util.convertToInt","util.sortArrayOfObjects","util.mapObjectByProperties","util.valuesFromObject","util.removeKeysProperties","util.mapArrayByProperties","i2.PoPageDynamicSearchComponent","i1.PoPageJobSchedulerService","i4.PoPageJobSchedulerExecutionComponent","i5.PoPageJobSchedulerParametersComponent","i6.PoPageJobSchedulerSummaryComponent","i1.PoPageLoginService","i4.PoPageLoginPopoverComponent"],"mappings":"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"}
|