@sankhyalabs/core 2.3.6 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/.docs/classes/ApplicationContext.md +24 -10
  2. package/.docs/classes/ArrayUtils.md +24 -14
  3. package/.docs/classes/Change.md +40 -18
  4. package/.docs/classes/DataUnit.md +418 -225
  5. package/.docs/classes/DateUtils.md +95 -36
  6. package/.docs/classes/ElementIDUtils.md +70 -37
  7. package/.docs/classes/ErrorException.md +12 -4
  8. package/.docs/classes/ErrorTracking.md +13 -5
  9. package/.docs/classes/FloatingManager.md +104 -63
  10. package/.docs/classes/MaskFormatter-1.md +17 -17
  11. package/.docs/classes/NumberUtils.md +74 -35
  12. package/.docs/classes/ObjectUtils.md +34 -12
  13. package/.docs/classes/ReadyUtil.md +18 -6
  14. package/.docs/classes/StringUtils.md +108 -52
  15. package/.docs/classes/TimeFormatter.md +9 -9
  16. package/.docs/classes/UserAgentUtils.md +12 -2
  17. package/.docs/classes/WaitingChangeException.md +9 -3
  18. package/.docs/classes/WarningException.md +12 -4
  19. package/.docs/enums/ChangeOperation.md +4 -4
  20. package/.docs/enums/DataType.md +5 -5
  21. package/.docs/interfaces/DUActionInterceptor.md +1 -1
  22. package/.docs/interfaces/LoadDataRequest.md +17 -5
  23. package/.docs/interfaces/LoadDataResponse.md +8 -2
  24. package/.docs/interfaces/PageRequest.md +3 -3
  25. package/.docs/interfaces/PaginationInfo.md +17 -5
  26. package/.docs/interfaces/QuickFilter.md +2 -2
  27. package/.docs/interfaces/Record.md +2 -2
  28. package/.docs/interfaces/SavedRecord.md +3 -3
  29. package/.docs/interfaces/WaitingChange.md +3 -3
  30. package/.docs/modules/MaskFormatter.md +2 -2
  31. package/.releaserc +1 -1
  32. package/.reusable-default-scripts.yml +4 -2
  33. package/build.env +0 -2
  34. package/dist/dataunit/DataUnit.d.ts +516 -7
  35. package/dist/dataunit/DataUnit.js +511 -3
  36. package/dist/dataunit/DataUnit.js.map +1 -1
  37. package/dist/dataunit/loading/LoadDataRequest.d.ts +6 -0
  38. package/dist/dataunit/loading/LoadDataResponse.d.ts +3 -0
  39. package/dist/dataunit/loading/PaginationInfo.d.ts +6 -0
  40. package/dist/dataunit/metadata/DataType.d.ts +44 -0
  41. package/dist/dataunit/metadata/DataType.js +45 -0
  42. package/dist/dataunit/metadata/DataType.js.map +1 -1
  43. package/dist/exceptions/ErrorException.d.ts +6 -0
  44. package/dist/exceptions/ErrorException.js +3 -0
  45. package/dist/exceptions/ErrorException.js.map +1 -1
  46. package/dist/exceptions/WaitingChangeException.d.ts +5 -0
  47. package/dist/exceptions/WaitingChangeException.js +3 -0
  48. package/dist/exceptions/WaitingChangeException.js.map +1 -1
  49. package/dist/exceptions/WarningException.d.ts +6 -0
  50. package/dist/exceptions/WarningException.js +3 -0
  51. package/dist/exceptions/WarningException.js.map +1 -1
  52. package/dist/traking/ErrorTraking.d.ts +15 -0
  53. package/dist/traking/ErrorTraking.js +15 -0
  54. package/dist/traking/ErrorTraking.js.map +1 -1
  55. package/dist/ui/FloatingManager.d.ts +114 -0
  56. package/dist/ui/FloatingManager.js +128 -0
  57. package/dist/ui/FloatingManager.js.map +1 -1
  58. package/dist/utils/ApplicationContext.d.ts +21 -0
  59. package/dist/utils/ApplicationContext.js +21 -0
  60. package/dist/utils/ApplicationContext.js.map +1 -1
  61. package/dist/utils/ArrayUtils.d.ts +19 -4
  62. package/dist/utils/ArrayUtils.js +19 -4
  63. package/dist/utils/ArrayUtils.js.map +1 -1
  64. package/dist/utils/CriteriaModel.d.ts +2 -4
  65. package/dist/utils/CriteriaModel.js +3 -5
  66. package/dist/utils/CriteriaModel.js.map +1 -1
  67. package/dist/utils/DateUtils.d.ts +63 -0
  68. package/dist/utils/DateUtils.js +63 -1
  69. package/dist/utils/DateUtils.js.map +1 -1
  70. package/dist/utils/ElementIDUtils.d.ts +51 -0
  71. package/dist/utils/ElementIDUtils.js +51 -0
  72. package/dist/utils/ElementIDUtils.js.map +1 -1
  73. package/dist/utils/MaskFormatter.d.ts +45 -24
  74. package/dist/utils/MaskFormatter.js +99 -25
  75. package/dist/utils/MaskFormatter.js.map +1 -1
  76. package/dist/utils/NumberUtils.d.ts +39 -31
  77. package/dist/utils/NumberUtils.js +39 -31
  78. package/dist/utils/NumberUtils.js.map +1 -1
  79. package/dist/utils/ObjectUtils.d.ts +27 -0
  80. package/dist/utils/ObjectUtils.js +27 -0
  81. package/dist/utils/ObjectUtils.js.map +1 -1
  82. package/dist/utils/ReadyUtil.d.ts +16 -0
  83. package/dist/utils/ReadyUtil.js +16 -0
  84. package/dist/utils/ReadyUtil.js.map +1 -1
  85. package/dist/utils/StringUtils.d.ts +72 -28
  86. package/dist/utils/StringUtils.js +72 -28
  87. package/dist/utils/StringUtils.js.map +1 -1
  88. package/dist/utils/TimeFormatter.d.ts +9 -9
  89. package/dist/utils/TimeFormatter.js +10 -10
  90. package/dist/utils/TimeFormatter.js.map +1 -1
  91. package/dist/utils/UserAgentUtils/index.d.ts +11 -0
  92. package/dist/utils/UserAgentUtils/index.js +11 -0
  93. package/dist/utils/UserAgentUtils/index.js.map +1 -1
  94. package/package.json +1 -1
  95. package/publish-docs.sh +1 -2
  96. package/src/dataunit/DataUnit.ts +520 -10
  97. package/src/dataunit/loading/LoadDataRequest.ts +10 -0
  98. package/src/dataunit/loading/LoadDataResponse.ts +4 -0
  99. package/src/dataunit/loading/PaginationInfo.ts +11 -1
  100. package/src/dataunit/metadata/DataType.ts +47 -1
  101. package/src/exceptions/ErrorException.ts +8 -0
  102. package/src/exceptions/WaitingChangeException.ts +6 -1
  103. package/src/exceptions/WarningException.ts +8 -1
  104. package/src/traking/ErrorTraking.ts +17 -0
  105. package/src/ui/FloatingManager.ts +138 -7
  106. package/src/utils/ApplicationContext.ts +21 -0
  107. package/src/utils/ArrayUtils.ts +19 -5
  108. package/src/utils/CriteriaModel.ts +3 -5
  109. package/src/utils/DateUtils.ts +70 -6
  110. package/src/utils/ElementIDUtils.ts +52 -4
  111. package/src/utils/MaskFormatter.ts +103 -27
  112. package/src/utils/NumberUtils.ts +40 -36
  113. package/src/utils/ObjectUtils.ts +28 -0
  114. package/src/utils/ReadyUtil.ts +16 -0
  115. package/src/utils/StringUtils.ts +73 -29
  116. package/src/utils/TimeFormatter.ts +10 -10
  117. package/src/utils/UserAgentUtils/index.ts +12 -0
@@ -1,10 +1,32 @@
1
- export default class DateUtils{
1
+ import { number } from "yargs";
2
2
 
3
+ /**
4
+ * `DateUtils`: Utilizado para formatação, padronização e cálculos de datas.
5
+ */
6
+ export default class DateUtils{
7
+
8
+ /**
9
+ * Zerar o horário de uma data.
10
+ *
11
+ * @param date - Data a ser manipulada.
12
+ * @param adjustDayLightSavingTime - Ajusta horário de verão na data recebida.
13
+ * @returns - Data sem as informações de horário.
14
+ * @example
15
+ * Informo: 2023-03-09 12:42:40 | Obtenho: 2023-03-09 00:00:00
16
+ */
3
17
  public static clearTime(date:Date, adjustDayLightSavingTime:boolean = true): Date {
4
18
  const newDate: Date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0, 0);
5
19
  return adjustDayLightSavingTime ? DateUtils.adjustDLST(newDate) : newDate;
6
20
  }
7
21
 
22
+ /**
23
+ * Converte String para Date.
24
+ *
25
+ * @param strValue - Texto a ser convertido para data.
26
+ * @param adjustDayLightSavingTime - Se verdadeiro, ativa regra de horário de verão.
27
+ * @param monthYearMode - Quando ativado, retorna o primeiro dia do mês apenas para construir a data.
28
+ * @returns - Data sem as informações de horário.
29
+ */
8
30
  public static strToDate(strValue:string, adjustDayLightSavingTime:boolean = true, monthYearMode:boolean = false): Date | undefined {
9
31
  /** monthYearMode é um booleano para usar o formato MM/YYYY.
10
32
  * Quando ativado, é retornado o primeiro dia do mês apenas para construir a data.
@@ -41,7 +63,13 @@ export default class DateUtils{
41
63
  return date;
42
64
  }
43
65
 
44
- public static getToday(withTime: boolean = false) {
66
+ /**
67
+ * Obtém a data atual.
68
+ *
69
+ * @param withTime - Caso true retorna a data com informações de horário.
70
+ * @returns - Data atual sem informação de horário.
71
+ */
72
+ public static getToday(withTime: boolean = false): Date {
45
73
  const today = new Date();
46
74
 
47
75
  if (withTime) {
@@ -51,15 +79,27 @@ export default class DateUtils{
51
79
  }
52
80
  }
53
81
 
82
+ /**
83
+ * Retorna se a data é válida.
84
+ *
85
+ * @param value - Data a ser validada.
86
+ * @param hasTime - Determina se a data retornada deve conter informação de horário ou não. Por padrão não retorna a hora.
87
+ * @returns - Caso válida, retorna a própria data.
88
+ */
54
89
  public static validateDate(value: Date, hasTime: boolean = false): Date | undefined {
55
90
  return value instanceof Date && !isNaN(value.valueOf())
56
91
  ? hasTime ? value : DateUtils.clearTime(value)
57
92
  : undefined;
58
93
  }
59
94
 
95
+ /**
96
+ * Realiza correção do horário de verão.
97
+ *
98
+ * @param date - Data a ser ajustada.
99
+ * @returns - Data informada ajustada para horário de verão.
100
+ */
60
101
  private static adjustDLST(date:Date): Date {
61
102
 
62
- //Work around para corrigir o Bug do horário de verão.
63
103
  if(date.getHours() == 23){
64
104
  return new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1, 1, 0, 0, 0);
65
105
  }
@@ -67,11 +107,27 @@ export default class DateUtils{
67
107
  return date;
68
108
  }
69
109
 
70
- private static pad(n: Number) {
110
+ /**
111
+ * Adiciona uma casa decimal a esquerda de uma unidade.
112
+ *
113
+ * @param n - Número a ser ajustado
114
+ * @returns - O número informado, com uma casa decimal a esquerda.
115
+ * @example
116
+ * Informo: 15 | Obtenho: 15
117
+ * @example
118
+ * Informo: 2 | Obtenho: "02"
119
+ */
120
+ private static pad(n: Number): string | Number {
71
121
  return n < 10 ? "0" + n : n;
72
122
  }
73
123
 
74
- private static timezoneOffset(offset: number) {
124
+ /**
125
+ * Retorna timezone da data.
126
+ *
127
+ * @param offset - Valor do timezone desejado.
128
+ * @returns Timezone da data.
129
+ */
130
+ private static timezoneOffset(offset: number): string {
75
131
  let sign;
76
132
 
77
133
  if (offset === 0) {
@@ -84,7 +140,15 @@ export default class DateUtils{
84
140
  return sign + this.pad(Math.floor(offset / 60)) + ":" + this.pad(offset % 60);
85
141
  }
86
142
 
87
- public static formatRfc3339(date: Date) {
143
+ /**
144
+ * Converte a data para o formato RFC3339.
145
+ *
146
+ * @param date - Data a ser convertida
147
+ * @returns - Data informada no formato RFC3339.
148
+ * * @example
149
+ * Informo: 2023-03-09 12:42:40 | Obtenho: 2023-03-09T12:42:47-03:00
150
+ */
151
+ public static formatRfc3339(date: Date): string {
88
152
 
89
153
  return date.getFullYear() + "-" +
90
154
  this.pad(date.getMonth() + 1) + "-" +
@@ -6,12 +6,21 @@ export interface IElementIDInfo {
6
6
  id?: string,
7
7
  dataUnit?: DataUnit
8
8
  }
9
-
9
+ /**
10
+ * `ElementIDUtils`: O ElementIDUtils é um utilitário responsável por criar e adicionar identificadores únicos aos componentes através do atributo data-element-id. A finalidade dele é otimizar a automação dos testes e melhorar a eficiência na manipulação dos componentes do Design System, garantindo seleções precisas e seguras.
11
+ */
10
12
  export class ElementIDUtils {
11
-
12
13
  public static DATA_ELEMENT_ID_ATTRIBUTE_NAME: string = "data-element-id";
13
14
  public static INTERNAL_INPUT_NAME: string = "internal";
14
15
 
16
+ /**
17
+ * Cria e adiciona a propriedade `data-element-id` em um elemento.
18
+ *
19
+ * @param element - Elemento HTML a ser modificado (HTMLElement).
20
+ * @param suffix - Sufixo/Texto para ser adicionado.
21
+ * @param iDInfo - ID para ser adicionado.
22
+ * @returns - O data-element-id gerado.
23
+ */
15
24
  public static addIDInfo(element: HTMLElement, suffix?: string, iDInfo?: IElementIDInfo): string {
16
25
  let dataElementID = this.getDataElementID(element, suffix, iDInfo);
17
26
  dataElementID = StringUtils.replaceAccentuatedChars(dataElementID, false);
@@ -22,7 +31,6 @@ export class ElementIDUtils {
22
31
  }
23
32
 
24
33
  public static addIDInfoIfNotExists(element: HTMLElement, suffix?: string, iDInfo?: IElementIDInfo): string {
25
-
26
34
  let dataElementID = element.getAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME);
27
35
 
28
36
  if(dataElementID == undefined){
@@ -36,6 +44,14 @@ export class ElementIDUtils {
36
44
  return `${originalID}_${ElementIDUtils.INTERNAL_INPUT_NAME}_${sufix}`;
37
45
  }
38
46
 
47
+ /**
48
+ * Obtém o `data-element-id` do elemento com adição do sufixo e ID.
49
+ *
50
+ * @param element - Elemento HTML a ser modificado (HTMLElement).
51
+ * @param suffix - Sufixo/Texto para ser adicionado.
52
+ * @param iDInfo - ID para ser adicionado.
53
+ * @returns - Atributo `data-element-id` do elemento modificado com sufixo e/ou ID.
54
+ */
39
55
  private static getDataElementID(element: HTMLElement, suffix?: string, iDInfo?: IElementIDInfo) {
40
56
  let dataElementID = ElementIDUtils.getDataElementIDAttribute(element);
41
57
  if(dataElementID != null){
@@ -53,6 +69,13 @@ export class ElementIDUtils {
53
69
  return tagName;
54
70
  }
55
71
 
72
+ /**
73
+ * Obtém ID válido para o elemento.
74
+ *
75
+ * @param element - Elemento HTML a ser modificado (HTMLElement).
76
+ * @param iDInfo - ID para ser adicionado.
77
+ * @returns - ID para ser adicionado ao elemento conforme ordem de prioridade.
78
+ */
56
79
  private static getAttributeValid(element: HTMLElement, iDInfo?: IElementIDInfo): string | null{
57
80
  if(iDInfo?.id){
58
81
  return StringUtils.toCamelCase(iDInfo?.id);
@@ -81,6 +104,18 @@ export class ElementIDUtils {
81
104
  return null;
82
105
  }
83
106
 
107
+ /**
108
+ * Adiciona sufixo ao atributo `data-element-id` de um elemento, utilizado para montar a hierarquia dos ids dos componentes em tela.
109
+ *
110
+ * @param dataElementID - ID para ser adicionado ao `data-element-id`.
111
+ * @param suffix - Sufixo/Texto para ser adicionado ao `data-element-id`.
112
+ * @param element - Elemento HTML a ser modificado (HTMLElement).
113
+ * @returns - `data-element-id` com sufixo.
114
+ *
115
+ * @example
116
+ * Um ez-combo-box tem data-element-id = codparc_input_internal_combo.
117
+ * Dentro desse ez-combo-box existe um ez-text-input. O data-element-id teria como sufixo o id 'codparc_input_internal_combo' referente ao seu pai.
118
+ */
84
119
  private static addSuffix(dataElementID: string | null, suffix: string | undefined, element: HTMLElement): string{
85
120
  if(suffix){
86
121
  return `${dataElementID}_${StringUtils.toCamelCase(suffix)}`;
@@ -91,6 +126,13 @@ export class ElementIDUtils {
91
126
  return `${dataElementID}_${StringUtils.toCamelCase(element.tagName)}`;
92
127
  }
93
128
 
129
+ /**
130
+ * Adiciona a propriedade name do DataUnit como prefixo do data-element-id do elemento.
131
+ *
132
+ * @param iDInfo - ID para ser adicionado ao `data-element-id`.
133
+ * @param dataElementID - Sufixo/Texto para ser adicionado ao `data-element-id`.
134
+ * @returns - String contendo informação para ser usada no `data-element-id` do elemento.
135
+ */
94
136
  private static addPrefix(iDInfo: IElementIDInfo | undefined, dataElementID: string): string {
95
137
  const dataUnitName: string = iDInfo?.dataUnit?.name || "";
96
138
  if (iDInfo?.dataUnit && !dataElementID?.startsWith(dataUnitName)) {
@@ -98,7 +140,13 @@ export class ElementIDUtils {
98
140
  }
99
141
  return dataElementID;
100
142
  }
101
-
143
+
144
+ /**
145
+ * Remove caracteres especiais.
146
+ *
147
+ * @param value - Texto que terá os caracteres especiais removidos.
148
+ * @returns - Retorna a string sem caracteres especiais e em camelCase.
149
+ */
102
150
  private static formatDescription(value: string | null): string{
103
151
  if(!value) return "";
104
152
  return StringUtils.toCamelCase((value.replace(/[^\w\sÀ-ÖØ-öø-ÿ]/gi, " ")).replace(/\s+/g, ' ').trim());
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * `MaskFormatter` é usado para formatar strings. Seu comportamento
3
- * é controlado pela formato do atributo `mask` que especifica quais
3
+ * é controlado pelo formato do atributo `mask` que especifica quais
4
4
  * caracteres são válidos e onde devem estar posicionados, intercalando-os
5
5
  * com eventuais caracteres literais expressados no padrão informado.
6
6
  * Sua implementação é inspirada pela implementação em Java do [MaskFormatter](https://docs.oracle.com/javase/7/docs/api/javax/swing/text/MaskFormatter.html).
@@ -11,7 +11,7 @@
11
11
  * |:---------:|-------------------------------------------------------------------------------------------------------------|
12
12
  * | # | Qualquer número |
13
13
  * | ' | "Escapa" o caractere que vem na sequência. Útil quando desejamos converter um caractere especial em literal.|
14
- * | U | Qualquer letra. Transforma letras maiúsculas em maiúsculas. |
14
+ * | U | Qualquer letra. Transforma letras minúsculas em maiúsculas. |
15
15
  * | L | Qualquer letra. Transforma letras maiúsculas em minúsculas. |
16
16
  * | A | Qualquer letra ou número. |
17
17
  * | ? | Qualquer letra. Preserva maiúsculas e minúsculas. |
@@ -20,12 +20,12 @@
20
20
  * Os demais caracteres presentes no padrão serão tratados como literais, isto é,
21
21
  * serão apenas inseridos naquela posição.
22
22
  *
23
- * Quando o o valor a ser formatado é menor que a máscara um 'placeHolder'
23
+ * Quando o valor a ser formatado é menor que a máscara, um 'placeHolder'
24
24
  * será inserido em cada posição ausente, completando a formatação.
25
- * Por padrão será usado um espaço em branco como 'placeHolder' mas
25
+ * Por padrão será usado um espaço em branco como 'placeHolder', mas
26
26
  * esse valor pode ser alterado.
27
27
  *
28
- * For por exemplo:
28
+ * Por exemplo:
29
29
  * '''
30
30
  * const formatter: MaskFormatter = new MaskFormatter("###-####");
31
31
  * formatter.placeholder = '_';
@@ -58,8 +58,8 @@ export class MaskFormatter {
58
58
  private _maskChars: Array<MaskFormatter.MaskCharacter> = new Array<MaskFormatter.MaskCharacter>();
59
59
 
60
60
  /**
61
- * Determina qual caractere será usado dos caracteres não presentes no valor
62
- * ou seja, aqueles que o usuário ainda não informou. Por padrão usamos um espaço
61
+ * Determina qual caractere será usado dos caracteres não presentes no valor,
62
+ * ou seja, aqueles que o usuário ainda não informou. Por padrão usamos um espaço.
63
63
  */
64
64
  public placeholder: string = ' ';
65
65
 
@@ -72,7 +72,7 @@ export class MaskFormatter {
72
72
  }
73
73
 
74
74
  /**
75
- * Getter para mask
75
+ * Getter para mask.
76
76
  *
77
77
  * @return A última máscara informada.
78
78
  */
@@ -87,8 +87,8 @@ export class MaskFormatter {
87
87
  /**
88
88
  * Formata a string passada baseada na máscara definda pelo atributo mask.
89
89
  *
90
- * @param value Valor a ser formatado
91
- * @return O valor processado de acordo com o padrão
90
+ * @param value Valor a ser formatado.
91
+ * @return O valor processado de acordo com o padrão.
92
92
  */
93
93
  public format(value: string): string {
94
94
  let result: string = '';
@@ -105,7 +105,7 @@ export class MaskFormatter {
105
105
  }
106
106
 
107
107
  /**
108
- * Preparamos a formatação internamente de acordo com o padrão.
108
+ * Prepara a formatação internamente de acordo com o padrão.
109
109
  */
110
110
  private updateInternalMask(): void {
111
111
 
@@ -165,7 +165,7 @@ export class MaskFormatter {
165
165
  this.type = type;
166
166
  }
167
167
  /**
168
- * Cada subclasse deve sobrescrever o retornando true, caso represente
168
+ * Cada subclasse deve sobrescrever retornando true caso represente.
169
169
  * um caractere literal. Por padrão o retorno é false.
170
170
  */
171
171
  public isLiteral(): boolean {
@@ -173,12 +173,10 @@ export class MaskFormatter {
173
173
  }
174
174
 
175
175
  /**
176
- * Returns true if <code>aChar</code> is a valid reprensentation of
177
- * the receiver. The default implementation returns true if the
178
- * receiver represents a literal character and <code>getChar</code>
179
- * == aChar. Otherwise, this will return true is <code>aChar</code>
180
- * is contained in the valid characters and not contained
181
- * in the invalid characters.
176
+ * Retorna se é um texto válido.
177
+ *
178
+ * @param aChar - Valor a ser validado.
179
+ * @returns - Retorna se é um texto válido.
182
180
  */
183
181
  public isValidCharacter(aChar: string): boolean {
184
182
  if (this.isLiteral()) {
@@ -191,18 +189,34 @@ export class MaskFormatter {
191
189
  }
192
190
 
193
191
  /**
194
- * Returns the character to insert for <code>aChar</code>. The
195
- * default implementation returns <code>aChar</code>. Subclasses
196
- * that wish to do some sort of mapping, perhaps lower case to upper
197
- * case should override this and do the necessary mapping.
192
+ * Retorna o texto informado.
193
+ *
194
+ * @param aChar - Texto a ser retornado.
195
+ * @returns - Texto informado.
198
196
  */
199
197
  public getChar(aChar: string): string {
200
198
  return aChar;
201
199
  }
202
200
 
203
201
  /**
204
- * Appends the necessary character in <code>formatting</code> at
205
- * <code>index</code> to <code>buff</code>.
202
+ * Adiciona valor encontrado.
203
+ *
204
+ * @param result - String a ser manipulada.
205
+ * @param formatting - String de formatação a ser adicionada na result.
206
+ * @param index - Índice que será utilizado para buscar no parâmetro formatting.
207
+ *
208
+ * @returns - Valor passado na result incrementado com o valor encontrado na formatting.
209
+ *
210
+ * @example
211
+ * ``` const result = "";
212
+ * const formatting = "123456";
213
+ * const index = [0];
214
+ * const returnedResult = append(result, formatting, index);
215
+ * ```
216
+ * Retorna:
217
+ * ```returnedResult = "1";
218
+ * index = [1];
219
+ * ```
206
220
  */
207
221
  public append(result: string, formatting: string, index: Array<number>): string {
208
222
 
@@ -227,7 +241,14 @@ export class MaskFormatter {
227
241
 
228
242
  return result;
229
243
  }
230
-
244
+
245
+ /**
246
+ * Obtém tipo por extenso.
247
+ *
248
+ * @returns O tipo por extenso.
249
+ * @example
250
+ * Se o tipo for **ALPHA_NUMERIC_KEY** recebo **uma letra ou um número**
251
+ */
231
252
  public getFormatMessage(): string{
232
253
  let message: string;
233
254
  switch(this.type){
@@ -270,20 +291,51 @@ export class MaskFormatter {
270
291
 
271
292
  private static DigitMaskCharacter = class extends MaskFormatter.MaskCharacter {
272
293
 
294
+ /**
295
+ * Valida se o caracter é válido.
296
+ *
297
+ * @param aChar - Caracter a ser validado.
298
+ * @returns - Se o caracter é valido ou não.
299
+ */
273
300
  public isValidCharacter(aChar: string): boolean {
274
301
  return (this.isDigit(aChar) && super.isValidCharacter(aChar));
275
302
  }
276
303
 
304
+ /**
305
+ * Valida se é um numéro.
306
+ *
307
+ * @param char - String a ser verificada.
308
+ * @returns - Verdadeiro para caracteres numéricos.
309
+ *
310
+ * @example
311
+ * ```Informado: "8" | Retorno: true ```
312
+ * @example
313
+ * ```Informado: "A" | Retorno: false ```
314
+ */
277
315
  private isDigit(char: string): boolean {
278
316
  return char >= '0' && char <= '9'
279
317
  }
280
318
  }
281
319
 
320
+
282
321
  private static UpperCaseCharacter = class extends MaskFormatter.MaskCharacter {
322
+
323
+ /**
324
+ * Valida se a string é uma letra do alfabeto (a-z).
325
+ *
326
+ * @param aChar - String passada para validação.
327
+ * @returns - Verdadeiro se a string passada for uma letra do alfabeto.
328
+ */
283
329
  public isValidCharacter(aChar: string): boolean {
284
330
  return (/[a-z]/i.test(aChar) && super.isValidCharacter(aChar));
285
331
  }
286
332
 
333
+ /**
334
+ * Obtém a string passada em maiúscula.
335
+ *
336
+ * @param aChar - String passada para validação.
337
+ * @returns - O caracter passado em letra maiúscula.
338
+ */
287
339
  public getChar(aChar: string): string {
288
340
  return aChar.toUpperCase();
289
341
  }
@@ -291,10 +343,22 @@ export class MaskFormatter {
291
343
 
292
344
  private static LowerCaseCharacter = class extends MaskFormatter.MaskCharacter {
293
345
 
346
+ /**
347
+ * Valida se a string é uma letra do alfabeto (a-z).
348
+ *
349
+ * @param aChar - String passada para validação.
350
+ * @returns - Verdadeiro se a string passada for uma letra do alfabeto.
351
+ */
294
352
  public isValidCharacter(aChar: string): boolean {
295
353
  return (/[a-z]/i.test(aChar) && super.isValidCharacter(aChar));
296
354
  }
297
355
 
356
+ /**
357
+ * Obtém a string passada em minúscula.
358
+ *
359
+ * @param aChar - String passada para validação.
360
+ * @returns - O caracter passado em letra minúscula.
361
+ */
298
362
  public getChar(aChar: string): string {
299
363
  return aChar.toLocaleLowerCase();
300
364
  }
@@ -302,13 +366,25 @@ export class MaskFormatter {
302
366
 
303
367
  private static AlphaNumericCharacter = class extends MaskFormatter.MaskCharacter {
304
368
 
369
+ /**
370
+ * Valida se a string é uma letra do alfabeto (a-z) ou um numero entre zero e nove.
371
+ *
372
+ * @param aChar - String passada para validação.
373
+ * @returns - Verdadeiro se a string passada for uma letra do alfabeto ou um numeral (de 0 a 9).
374
+ */
305
375
  public isValidCharacter(aChar: string): boolean {
306
- //FIXME: talvez seja problema usar regex aqui... avaliar se existe forma mais barata
376
+ //FIXME: talvez seja problema usar regex aqui... avaliar se existe forma mais barata.
307
377
  return (/[a-z0-9]/i.test(aChar)) && super.isValidCharacter(aChar);
308
378
  }
309
379
  }
310
380
 
311
381
  private static CharCharacter = class extends MaskFormatter.MaskCharacter {
382
+ /**
383
+ * Valida se a string é uma letra do alfabeto (a-z).
384
+ *
385
+ * @param aChar - String passada para validação.
386
+ * @returns - Verdadeiro se a string passada for uma letra do alfabeto.
387
+ */
312
388
  public isValidCharacter(aChar: string): boolean {
313
389
  //FIXME: talvez seja problema usar regex aqui... avaliar se existe forma mais barata
314
390
  return (/[a-z]/i.test(aChar) && super.isValidCharacter(aChar));
@@ -320,4 +396,4 @@ export class MaskFormatter {
320
396
 
321
397
  export namespace MaskFormatter {
322
398
  export type MaskCharacter = InstanceType<typeof MaskFormatter.MaskCharacter>;
323
- }
399
+ }
@@ -3,26 +3,15 @@ import { StringUtils } from "./StringUtils.js";
3
3
  const NUMBERINPUTS_REGEX_SCIENTIFIC_PARTS: RegExp = /^([+-])?(\d+).?(\d*)[eE]([-+]?\d+)$/;
4
4
 
5
5
  /**
6
- * `NumberUtils` é uma biblioteca para manipulação de números
7
- *
8
- * `Métodos`:
9
- *
10
- * @stringToNumber: converte um número em formato de string em um valor numérico nativo do javascript
11
- * @format: arredonda um número em formato de string baseado nos parâmetros "presision" e "prettyPrecision";
6
+ * `NumberUtils`: Utilizado para manipulação de numerais.
12
7
  */
13
8
  export class NumberUtils {
14
-
15
-
16
-
17
-
18
9
  /**
19
- * @stringToNumber: converte um numero em formato de string em numero
10
+ * Converte o dado numérico de string para number.
20
11
  *
21
- * @param value numero em formato de string a ser convertido (Importante: formato PT-BR ou já em formato numérico: ######.##)
22
- *
23
- * @returns string based number
24
- *
25
- * @Exemples
12
+ * @param value Numeral em formato de string a ser convertido (Importante: formato PT-BR ou já em formato numérico: ######.##).
13
+ * @returns - Numeral passado.
14
+ * @example
26
15
  * @"100,12" | 100.12
27
16
  * @"100.12" | 100.12
28
17
  * @"-100,12" | -100.12
@@ -72,13 +61,15 @@ export class NumberUtils {
72
61
 
73
62
 
74
63
  /**
75
- * @format: converte um numero em formato de string em um numero em formato de string formatado de acordo com os parametros de "precision" e "prettyPrecision"
64
+ * Formata o numeral com a precisão informada.
76
65
  *
77
- * @param value numero em formato de string a ser convertido (Importante: formato PT-BR ou já em formato numérico - sem separador de milhares: ######.##)
78
- * @param precision (numero de decimais)
79
- * @param prettyPrecision (numero de zeros nos decimais)
66
+ * @param value - Numeral em formato de string a ser convertido (Importante: formato PT-BR ou já em formato numérico - sem separador de milhares: ######.##).
67
+ * @param precision - Quantidade de casas decimais.
68
+ * @param prettyPrecision - Quantidade de zeros nos decimais.
80
69
  *
81
- * @returns numero em formato de string formatado em PT-BR
70
+ * @returns - Numeral em formato de String formatado em PT-BR.
71
+ * @example
72
+ * Informado: ('10,9845444', 3, 3) | Retorna: '10,985'
82
73
  */
83
74
  static format = (value: string, precision: number, prettyPrecision: number = NaN): string => {
84
75
 
@@ -137,12 +128,14 @@ export class NumberUtils {
137
128
 
138
129
 
139
130
  /**
140
- * @keepOnlyDecimalSeparator: retira os separadores de milhar de um número em formato de string
131
+ * Retira os separadores de milhar de um numeral em formato de string.
141
132
  *
142
- * @param value numero em formato de string a ser convertido
143
- * @param formatnumber (formatação de ENTRADA e SAÍDA do utilitário: pt-BR="###.###,##" en-US="###,###.##"; Default: "pt-BR")
133
+ * @param value - Numeral em formato de string a ser convertido.
134
+ * @param formatnumber - Formatação de ENTRADA e SAÍDA do utilitário: pt-BR="###.###,##" en-US="###,###.##"; Default: "pt-BR".
144
135
  *
145
- * @returns numero em formato de string formatado apenas com separador decimal
136
+ * @returns - Numeral em formato de string formatado apenas com separador decimal.
137
+ * @example
138
+ * Informado: '95.12' | Retorna: '9512'
146
139
  */
147
140
  static keepOnlyDecimalSeparator = (value: string, formatnumber: string = 'pt-BR'): string => {
148
141
 
@@ -162,11 +155,15 @@ export class NumberUtils {
162
155
  }
163
156
 
164
157
  /**
165
- * @changeFormat: troca o formato do numero string de "PT-BR" para "EN-US" e vice-versa
158
+ * Troca o formato do numeral(string) de "PT-BR" para "EN-US" e vice-versa.
166
159
  *
167
- * @param value numero em formato de string a ser convertido
160
+ * @param value - Numeral em formato de string a ser convertido.
168
161
  *
169
- * @returns numero em formato de string formatado de "PT-BR" para "EN-US" e vice-versa
162
+ * @returns - Numeral em formato de string formatado de "PT-BR" para "EN-US" e vice-versa.
163
+ * @example
164
+ * Informo: "15,55" | Obtenho: "15.55"
165
+ * @example
166
+ * Informo: "27.99" | Obtenho: "27,99"
170
167
  */
171
168
  static changeFormat = (value: string): string => {
172
169
  //Formatting output following formatnumber
@@ -176,12 +173,19 @@ export class NumberUtils {
176
173
 
177
174
 
178
175
  /**
179
- * @getValueOrDefault: retorna o valor passado como number, caso NaN retorna o defaultValue
176
+ * Obtém o valor ou o valor padrão, caso o valor seja inválido(NaN/undefined).
177
+ *
178
+ * @param value - Valor a ser validado.
179
+ * @param defaultValue - Valor padrão a ser retornado caso o value seja inválido.
180
180
  *
181
- * @param value numero a ser validado
182
- * @param defaultValue numero a ser retornado caso o value seja inválido
181
+ * @returns - O próprio numeral passado ou zero.
183
182
  *
184
- * @returns o proprio numero passado ou zero
183
+ * @example
184
+ * Informo: value: 30, defaultValue: 0 | Obtenho: 30
185
+ * @example
186
+ * Informo: value: "30", defaultValue: 0 | Obtenho: 30
187
+ * @example
188
+ * Informo: value: "30abc", defaultValue: 0 | Obtenho: 0
185
189
  */
186
190
  static getValueOrDefault = (value: any, defaultValue: number): number => {
187
191
  value = StringUtils.isEmpty(value) ? undefined : value;
@@ -196,13 +200,13 @@ export class NumberUtils {
196
200
  }
197
201
 
198
202
  /**
199
- * @getValueOrZero: valida se o parametro é undefined caso seja retorna zero.
203
+ * Obtém o valor ou zero, caso o valor seja inválido(NaN/undefined).
200
204
  *
201
- * @param value numero a ser validado
205
+ * @param value - Numeral a ser validado.
202
206
  *
203
- * @returns o proprio numero passado ou zero
207
+ * @returns - O próprio numeral passado. Caso esse seja inválido retorna zero.
204
208
  */
205
209
  static getValueOrZero = (value: any): number => {
206
210
  return NumberUtils.getValueOrDefault(value, 0);
207
211
  }
208
- }
212
+ }
@@ -1,13 +1,41 @@
1
+ /**
2
+ * `ObjectUtils`: Utilizado para manipulação de objetos.
3
+ */
1
4
  export default class ObjectUtils{
2
5
 
6
+
7
+ /**
8
+ * Faz a cópia do objeto.
9
+ *
10
+ * @param data - Objeto a ser copiado.
11
+ * @returns - A cópia do objeto válido.
12
+ */
3
13
  public static copy(data:Object | Array<Object>):Object | Array<Object> | null{
4
14
  return this.stringToObject(this.objectToString(data));
5
15
  }
6
16
 
17
+ /**
18
+ * Converte um objeto em string/JSON.
19
+ *
20
+ * @param data - Objeto a ser convertido.
21
+ * @returns - Uma string JSON.
22
+ *
23
+ * @example
24
+ * @Informado: ```{nome : "Sankhya", cidade: "Uberlandia"}``` | Obtenho: ```"{"nome" : "Sankhya", "cidade":"Uberlandia"}"```
25
+ */
7
26
  public static objectToString(data:Object | Array<Object>):string{
8
27
  return JSON.stringify(data);
9
28
  }
10
29
 
30
+ /**
31
+ * Converte uma string/JSON em objeto.
32
+ *
33
+ * @param data - String a ser convertida.
34
+ * @returns - Um objeto válido.
35
+ *
36
+ * @example
37
+ * Informado: ```"{"nome" : "Sankhya", "cidade":"Uberlandia"}"``` | Obtenho: ```{nome : "Sankhya", cidade: "Uberlandia"}```
38
+ */
11
39
  public static stringToObject(data:string):Object | Array<Object>{
12
40
  return JSON.parse(data)
13
41
  }