{"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 =\n    document.documentElement.getAttribute('data-default-size') || 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\nexport const PoUtils = {\n  convertDateToISOExtended,\n  convertToBoolean,\n  convertToInt,\n  getShortBrowserLanguage,\n  isExternalLink,\n  mapArrayByProperties,\n  mapObjectByProperties,\n  openExternalLink,\n  removeDuplicateItemsWithArrayKey,\n  removeKeysProperties,\n  sortArrayOfObjects,\n  valuesFromObject\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, HostBinding, HostListener, 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 _initialComponentsSize?: 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  set componentsSize(value: string) {\n    this._initialComponentsSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-components-size')\n  @HostBinding('attr.p-components-size')\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  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  private applySizeBasedOnA11y(): void {\n    this._componentsSize = validateSizeFn(this._initialComponentsSize);\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 readonly 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 { PoUtils } 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      PoUtils.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, HostBinding, HostListener, 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 _initialComponentsSize?: 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  set componentsSize(value: string) {\n    this._initialComponentsSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-components-size')\n  @HostBinding('attr.p-components-size')\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  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\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  private applySizeBasedOnA11y(): void {\n    this._componentsSize = validateSizeFn(this._initialComponentsSize);\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, HostBinding, HostListener, 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 _initialComponentsSize?: 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  set componentsSize(value: string) {\n    this._initialComponentsSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-components-size')\n  @HostBinding('attr.p-components-size')\n  get componentsSize(): string {\n    return this._componentsSize ?? getDefaultSizeFn();\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\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  private applySizeBasedOnA11y(): void {\n    this._componentsSize = validateSizeFn(this._initialComponentsSize);\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 readonly 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 readonly 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 readonly 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 { PoUtils } 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 readonly activatedRoute = inject(ActivatedRoute);\n  private readonly 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    PoUtils.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, HostBinding, HostListener, 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 _initialComponentsSize?: 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  set componentsSize(value: string) {\n    this._initialComponentsSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-components-size')\n  @HostBinding('attr.p-components-size')\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  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  private applySizeBasedOnA11y(): void {\n    this._componentsSize = validateSizeFn(this._initialComponentsSize);\n  }\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 readonly 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 { isTypeof, PoUtils } 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 readonly activatedRoute = inject(ActivatedRoute);\n  private readonly route = inject(ActivatedRoute);\n  private readonly router = inject(Router);\n  private readonly service = inject(PoPageChangePasswordService);\n  private readonly 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 readonly 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    PoUtils.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-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 readonly http = inject(HttpClient);\n  private readonly notification = inject(PoNotificationService);\n\n  readonly headers: HttpHeaders = new HttpHeaders({\n    'X-PO-SCREEN-LOCK': 'true'\n  });\n\n  private endpoint = '/';\n  private readonly 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 readonly 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 readonly 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, HostBinding, HostListener, 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 { convertToBoolean, getDefaultSizeFn, validateSizeFn, valuesFromObject, PoUtils } 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 readonly router = inject(Router);\n  private readonly activatedRoute = inject(ActivatedRoute);\n  private readonly poNotification = inject(PoNotificationService);\n  private readonly poDialogService = inject(PoDialogService);\n  private readonly poPageDynamicService = inject(PoPageDynamicService);\n  private readonly poPageDynamicDetailActionsService = inject(PoPageDynamicDetailActionsService);\n  private readonly 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 readonly subscriptions: Array<Subscription> = [];\n\n  private _actions: PoPageDynamicDetailActions = {};\n  private _autoRouter: boolean = false;\n  private _componentsSize?: string = undefined;\n  private _initialComponentsSize?: 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  set componentsSize(value: string) {\n    this._initialComponentsSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-components-size')\n  @HostBinding('attr.p-components-size')\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  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  private applySizeBasedOnA11y(): void {\n    this._componentsSize = validateSizeFn(this._initialComponentsSize);\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 = PoUtils.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      // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\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 readonly 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, HostBinding, HostListener, 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  removeKeysProperties,\n  validateSizeFn,\n  valuesFromObject,\n  PoUtils\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 readonly router = inject(Router);\n  private readonly activatedRoute = inject(ActivatedRoute);\n  private readonly poNotification = inject(PoNotificationService);\n  private readonly poDialogService = inject(PoDialogService);\n  private readonly poPageDynamicService = inject(PoPageDynamicService);\n  private readonly poPageCustomizationService = inject(PoPageCustomizationService);\n  private readonly 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 readonly language: string;\n  private readonly subscriptions: Array<Subscription> = [];\n  private _actions: PoPageDynamicEditActions = {};\n  private _componentsSize?: string = undefined;\n  private _initialComponentsSize?: 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  set componentsSize(value: string) {\n    this._initialComponentsSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-components-size')\n  @HostBinding('attr.p-components-size')\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  private applySizeBasedOnA11y(): void {\n    this._componentsSize = validateSizeFn(this._initialComponentsSize);\n  }\n\n  get controlFields() {\n    return this._controlFields;\n  }\n\n  get detailFields() {\n    return this._detailFields;\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\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 = PoUtils.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, HostBinding, HostListener, 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 _initialComponentsSize?: 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  set componentsSize(value: string) {\n    this._initialComponentsSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-components-size')\n  @HostBinding('attr.p-components-size')\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  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\n  }\n\n  private applySizeBasedOnA11y(): void {\n    this._componentsSize = validateSizeFn(this._initialComponentsSize);\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 readonly 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, HostBinding, HostListener, 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    disclaimerBooleanFalse: 'No',\n    disclaimerBooleanTrue: 'Yes',\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    disclaimerBooleanFalse: 'No',\n    disclaimerBooleanTrue: 'Sí',\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    disclaimerBooleanFalse: 'Não',\n    disclaimerBooleanTrue: 'Sim',\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    disclaimerBooleanFalse: 'Нет',\n    disclaimerBooleanTrue: 'Да',\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 _initialComponentsSize?: string = undefined;\n  private _filters: Array<PoDynamicFormField> = [];\n  private _hideCloseDisclaimers: Array<string> = [];\n  private _literals: PoPageDynamicSearchLiterals;\n  private _quickSearchWidth: number;\n  private readonly 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  set componentsSize(value: string) {\n    this._initialComponentsSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-components-size')\n  @HostBinding('attr.p-components-size')\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   *    disclaimerBooleanFalse: 'Inativo',\n   *    disclaimerBooleanTrue: 'Ativo',\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  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\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  private applySizeBasedOnA11y(): void {\n    this._componentsSize = validateSizeFn(this._initialComponentsSize);\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  poLocaleDefault\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 {\n  PoPageDynamicSearchBaseComponent,\n  poPageDynamicSearchLiteralsDefault\n} 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 readonly languageService: PoLanguageService;\n  private readonly poPageCustomizationService = inject(PoPageCustomizationService);\n  private readonly 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.type === PoDynamicFieldType.Boolean && typeof value === 'boolean') {\n      return this.formatValueToBoolean(field, value);\n    }\n\n    if (field.options && value) {\n      return this.applyDisclaimerLabelValue(field, value);\n    }\n\n    return value;\n  }\n\n  private formatValueToBoolean(field: PoDynamicFormField, value: boolean): string {\n    if (value && field.booleanTrue) {\n      return field.booleanTrue;\n    }\n\n    if (!value && field.booleanFalse) {\n      return field.booleanFalse;\n    }\n\n    const language = this.languageService.getShortLanguage();\n    const fallbackLiterals =\n      poPageDynamicSearchLiteralsDefault[language] ?? poPageDynamicSearchLiteralsDefault[poLocaleDefault];\n\n    const customLiterals = this['_literals'];\n    const trueLabel = customLiterals?.disclaimerBooleanTrue ?? fallbackLiterals.disclaimerBooleanTrue;\n    const falseLabel = customLiterals?.disclaimerBooleanFalse ?? fallbackLiterals.disclaimerBooleanFalse;\n\n    return value ? trueLabel : falseLabel;\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, output } 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 alterar o estado de fixação de uma coluna no gerenciador de colunas.\n   *\n   * O componente envia como parâmetro um array de string com as propriedades das colunas fixas.\n   * Por exemplo: [\"name\", \"age\"].\n   *\n   * > Incompatível com `p-hide-action-fixed-columns`. Quando esta propriedade estiver ativa, o evento não será disparado.\n   */\n  changeFixedColumns = output<Array<string>>({ alias: 'p-change-fixed-columns' });\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 readonly 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, HostBinding, HostListener, 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 { convertToBoolean, getDefaultSizeFn, validateSizeFn, PoUtils as util } 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, removeDuplicateItemsWithArrayKey, PoUtils } 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 readonly router = inject(Router);\n  private readonly activatedRoute = inject(ActivatedRoute);\n  private readonly poDialogService = inject(PoDialogService);\n  private readonly poNotification = inject(PoNotificationService);\n  private readonly poPageDynamicService = inject(PoPageDynamicService);\n  private readonly poPageCustomizationService = inject(PoPageCustomizationService);\n  private readonly 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 readonly subscriptions = new Subscription();\n  private hasCustomActionWithSelectable = false;\n\n  private _componentsSize?: string = undefined;\n  private _initialComponentsSize?: 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  set componentsSize(value: string) {\n    this._initialComponentsSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-components-size')\n  @HostBinding('attr.p-components-size')\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   *    disclaimerBooleanFalse: 'Inativo',\n   *    disclaimerBooleanTrue: 'Ativo',\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  onChangeFixedColumns(value: Array<string>) {\n    this.changeFixedColumns.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  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\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 PoUtils.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      // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\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        PoUtils.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  private applySizeBasedOnA11y(): void {\n    this._componentsSize = validateSizeFn(this._initialComponentsSize);\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-change-fixed-columns)=\"onChangeFixedColumns($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, PoUtils } 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 readonly 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 PoUtils.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, HostBinding, HostListener, 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  private _initialComponentsSize?: 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  set componentsSize(value: string) {\n    this._initialComponentsSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-components-size')\n  @HostBinding('attr.p-components-size')\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   * Permite a navegação direta ao clicar em um step (passo) previamente preenchido e validado,\n   * sem a necessidade de retornar passo a passo utilizando o botão \"Voltar\".\n   *\n   * Quando habilitado (`true`), o usuário pode clicar diretamente em qualquer step anterior\n   * que já tenha sido concluído para retornar a ele imediatamente.\n   *\n   * > Steps futuros (ainda não preenchidos) permanecerão bloqueados para clique,\n   * independentemente do valor desta propriedade.\n   *\n   * @default `false`\n   */\n  @Input('p-allow-direct-navigation') allowDirectNavigation: boolean = false;\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 readonly _subscription = new Subscription();\n  private _orientation;\n\n  constructor(protected poPageJobSchedulerService: PoPageJobSchedulerService) {}\n\n  ngOnDestroy() {\n    this._subscription.unsubscribe();\n  }\n\n  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\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  private applySizeBasedOnA11y(): void {\n    this._componentsSize = validateSizeFn(this._initialComponentsSize);\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 readonly 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 readonly 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 readonly 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 * <example name=\"po-page-job-scheduler-flexible-navigation\" title=\"PO Page Job Scheduler - Navegação Flexível\">\n *  <file name=\"sample-po-page-job-scheduler-flexible-navigation/sample-po-page-job-scheduler-flexible-navigation.component.html\"> </file>\n *  <file name=\"sample-po-page-job-scheduler-flexible-navigation/sample-po-page-job-scheduler-flexible-navigation.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  standalone: false\n})\nexport class PoPageJobSchedulerComponent extends PoPageJobSchedulerBaseComponent implements OnInit, AfterContentInit {\n  poPageDynamicLookupService = inject(PoPageJobSchedulerLookupService);\n  private readonly activatedRoute = inject(ActivatedRoute);\n  private readonly poDialogService = inject(PoDialogService);\n  private readonly 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 readonly backPageAction: PoPageAction = {\n    label: this.literals.back,\n    action: this.nextStepOperation.bind(this, 'back'),\n    disabled: this.isDisabledBack.bind(this)\n  };\n\n  private readonly concludePageAction: PoPageAction = {\n    label: this.literals.conclude,\n    action: this.confirmJobScheduler.bind(this)\n  };\n\n  private readonly nextPageAction: PoPageAction = {\n    label: this.literals.next,\n    action: this.nextStepOperation.bind(this, 'next'),\n    disabled: this.isDisabledAdvance.bind(this)\n  };\n\n  private readonly concludePageActions: Array<PoPageAction> = [this.concludePageAction, this.backPageAction];\n\n  private readonly 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    if (!this.canNavigate(stepNumber, operation)) return;\n\n    this.prepareNavigation(operation, stepNumber);\n    this.applyStep(stepNumber, operation);\n  }\n\n  private canNavigate(stepNumber: number, operation: 'back' | 'next'): boolean {\n    const jumpStep = Math.abs(stepNumber - this.step);\n\n    if (operation === 'next' && jumpStep > 1) return false;\n\n    if (operation === 'back' && jumpStep > 1 && !this.allowDirectNavigation) {\n      return false;\n    }\n\n    return (\n      this.validateStepExecution() && this.validateStepSchedulerParameters() && this.validateStepTemplateParameters()\n    );\n  }\n\n  private prepareNavigation(operation: 'back' | 'next', stepNumber: number): void {\n    if (operation === 'back') {\n      this.resetStepsStatus(stepNumber);\n    }\n\n    if (this.step === this.stepExecution) {\n      this.setModelRecurrent();\n    }\n\n    this.setPropertiesFromTemplate();\n  }\n\n  private applyStep(stepNumber: number, operation: 'back' | 'next'): void {\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    this.stepParametersInitialized = this.stepParametersInitialized || stepNumber === this.stepParameters;\n  }\n\n  private resetStepsStatus(fromStep: number): void {\n    for (let i = fromStep; i < this.step; i++) {\n      this.steps[i].status = PoStepperStatus.Default;\n    }\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    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 readonly 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, HostListener, Input, OnDestroy, Output } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\n\nimport { convertToBoolean, getDefaultSizeFn, isTypeof, validateSizeFn, PoUtils } 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 _initialComponentsSize?: 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  set componentsSize(value: string) {\n    this._initialComponentsSize = value;\n    this.applySizeBasedOnA11y();\n  }\n\n  @Input('p-components-size')\n  @HostBinding('attr.p-components-size')\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 = PoUtils.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 || PoUtils.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 readonly 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  @HostListener('window:PoUiThemeChange')\n  protected onThemeChange(): void {\n    this.applySizeBasedOnA11y();\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      PoUtils.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  private applySizeBasedOnA11y(): void {\n    this._componentsSize = validateSizeFn(this._initialComponentsSize);\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 readonly activatedRoute = inject(ActivatedRoute);\n  private readonly 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 readonly 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","i2.PoPageDynamicSearchComponent","i1.PoPageJobSchedulerService","i4.PoPageJobSchedulerExecutionComponent","i5.PoPageJobSchedulerParametersComponent","i6.PoPageJobSchedulerSummaryComponent","i1.PoPageLoginService","i4.PoPageLoginPopoverComponent"],"mappings":"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"}