@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.
- package/.docs/classes/ApplicationContext.md +24 -10
- package/.docs/classes/ArrayUtils.md +24 -14
- package/.docs/classes/Change.md +40 -18
- package/.docs/classes/DataUnit.md +418 -225
- package/.docs/classes/DateUtils.md +95 -36
- package/.docs/classes/ElementIDUtils.md +70 -37
- package/.docs/classes/ErrorException.md +12 -4
- package/.docs/classes/ErrorTracking.md +13 -5
- package/.docs/classes/FloatingManager.md +104 -63
- package/.docs/classes/MaskFormatter-1.md +17 -17
- package/.docs/classes/NumberUtils.md +74 -35
- package/.docs/classes/ObjectUtils.md +34 -12
- package/.docs/classes/ReadyUtil.md +18 -6
- package/.docs/classes/StringUtils.md +108 -52
- package/.docs/classes/TimeFormatter.md +9 -9
- package/.docs/classes/UserAgentUtils.md +12 -2
- package/.docs/classes/WaitingChangeException.md +9 -3
- package/.docs/classes/WarningException.md +12 -4
- package/.docs/enums/ChangeOperation.md +4 -4
- package/.docs/enums/DataType.md +5 -5
- package/.docs/interfaces/DUActionInterceptor.md +1 -1
- package/.docs/interfaces/LoadDataRequest.md +17 -5
- package/.docs/interfaces/LoadDataResponse.md +8 -2
- package/.docs/interfaces/PageRequest.md +3 -3
- package/.docs/interfaces/PaginationInfo.md +17 -5
- package/.docs/interfaces/QuickFilter.md +2 -2
- package/.docs/interfaces/Record.md +2 -2
- package/.docs/interfaces/SavedRecord.md +3 -3
- package/.docs/interfaces/WaitingChange.md +3 -3
- package/.docs/modules/MaskFormatter.md +2 -2
- package/.releaserc +1 -1
- package/.reusable-default-scripts.yml +4 -2
- package/build.env +0 -2
- package/dist/dataunit/DataUnit.d.ts +516 -7
- package/dist/dataunit/DataUnit.js +511 -3
- package/dist/dataunit/DataUnit.js.map +1 -1
- package/dist/dataunit/loading/LoadDataRequest.d.ts +6 -0
- package/dist/dataunit/loading/LoadDataResponse.d.ts +3 -0
- package/dist/dataunit/loading/PaginationInfo.d.ts +6 -0
- package/dist/dataunit/metadata/DataType.d.ts +44 -0
- package/dist/dataunit/metadata/DataType.js +45 -0
- package/dist/dataunit/metadata/DataType.js.map +1 -1
- package/dist/exceptions/ErrorException.d.ts +6 -0
- package/dist/exceptions/ErrorException.js +3 -0
- package/dist/exceptions/ErrorException.js.map +1 -1
- package/dist/exceptions/WaitingChangeException.d.ts +5 -0
- package/dist/exceptions/WaitingChangeException.js +3 -0
- package/dist/exceptions/WaitingChangeException.js.map +1 -1
- package/dist/exceptions/WarningException.d.ts +6 -0
- package/dist/exceptions/WarningException.js +3 -0
- package/dist/exceptions/WarningException.js.map +1 -1
- package/dist/traking/ErrorTraking.d.ts +15 -0
- package/dist/traking/ErrorTraking.js +15 -0
- package/dist/traking/ErrorTraking.js.map +1 -1
- package/dist/ui/FloatingManager.d.ts +114 -0
- package/dist/ui/FloatingManager.js +128 -0
- package/dist/ui/FloatingManager.js.map +1 -1
- package/dist/utils/ApplicationContext.d.ts +21 -0
- package/dist/utils/ApplicationContext.js +21 -0
- package/dist/utils/ApplicationContext.js.map +1 -1
- package/dist/utils/ArrayUtils.d.ts +19 -4
- package/dist/utils/ArrayUtils.js +19 -4
- package/dist/utils/ArrayUtils.js.map +1 -1
- package/dist/utils/CriteriaModel.d.ts +2 -4
- package/dist/utils/CriteriaModel.js +3 -5
- package/dist/utils/CriteriaModel.js.map +1 -1
- package/dist/utils/DateUtils.d.ts +63 -0
- package/dist/utils/DateUtils.js +63 -1
- package/dist/utils/DateUtils.js.map +1 -1
- package/dist/utils/ElementIDUtils.d.ts +51 -0
- package/dist/utils/ElementIDUtils.js +51 -0
- package/dist/utils/ElementIDUtils.js.map +1 -1
- package/dist/utils/MaskFormatter.d.ts +45 -24
- package/dist/utils/MaskFormatter.js +99 -25
- package/dist/utils/MaskFormatter.js.map +1 -1
- package/dist/utils/NumberUtils.d.ts +39 -31
- package/dist/utils/NumberUtils.js +39 -31
- package/dist/utils/NumberUtils.js.map +1 -1
- package/dist/utils/ObjectUtils.d.ts +27 -0
- package/dist/utils/ObjectUtils.js +27 -0
- package/dist/utils/ObjectUtils.js.map +1 -1
- package/dist/utils/ReadyUtil.d.ts +16 -0
- package/dist/utils/ReadyUtil.js +16 -0
- package/dist/utils/ReadyUtil.js.map +1 -1
- package/dist/utils/StringUtils.d.ts +72 -28
- package/dist/utils/StringUtils.js +72 -28
- package/dist/utils/StringUtils.js.map +1 -1
- package/dist/utils/TimeFormatter.d.ts +9 -9
- package/dist/utils/TimeFormatter.js +10 -10
- package/dist/utils/TimeFormatter.js.map +1 -1
- package/dist/utils/UserAgentUtils/index.d.ts +11 -0
- package/dist/utils/UserAgentUtils/index.js +11 -0
- package/dist/utils/UserAgentUtils/index.js.map +1 -1
- package/package.json +1 -1
- package/publish-docs.sh +1 -2
- package/src/dataunit/DataUnit.ts +520 -10
- package/src/dataunit/loading/LoadDataRequest.ts +10 -0
- package/src/dataunit/loading/LoadDataResponse.ts +4 -0
- package/src/dataunit/loading/PaginationInfo.ts +11 -1
- package/src/dataunit/metadata/DataType.ts +47 -1
- package/src/exceptions/ErrorException.ts +8 -0
- package/src/exceptions/WaitingChangeException.ts +6 -1
- package/src/exceptions/WarningException.ts +8 -1
- package/src/traking/ErrorTraking.ts +17 -0
- package/src/ui/FloatingManager.ts +138 -7
- package/src/utils/ApplicationContext.ts +21 -0
- package/src/utils/ArrayUtils.ts +19 -5
- package/src/utils/CriteriaModel.ts +3 -5
- package/src/utils/DateUtils.ts +70 -6
- package/src/utils/ElementIDUtils.ts +52 -4
- package/src/utils/MaskFormatter.ts +103 -27
- package/src/utils/NumberUtils.ts +40 -36
- package/src/utils/ObjectUtils.ts +28 -0
- package/src/utils/ReadyUtil.ts +16 -0
- package/src/utils/StringUtils.ts +73 -29
- package/src/utils/TimeFormatter.ts +10 -10
- package/src/utils/UserAgentUtils/index.ts +12 -0
package/src/utils/DateUtils.ts
CHANGED
|
@@ -1,10 +1,32 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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
|
-
*
|
|
177
|
-
*
|
|
178
|
-
*
|
|
179
|
-
*
|
|
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
|
-
*
|
|
195
|
-
*
|
|
196
|
-
*
|
|
197
|
-
*
|
|
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
|
-
*
|
|
205
|
-
*
|
|
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
|
+
}
|
package/src/utils/NumberUtils.ts
CHANGED
|
@@ -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
|
|
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
|
-
*
|
|
10
|
+
* Converte o dado numérico de string para number.
|
|
20
11
|
*
|
|
21
|
-
* @param value
|
|
22
|
-
*
|
|
23
|
-
* @
|
|
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
|
-
*
|
|
64
|
+
* Formata o numeral com a precisão informada.
|
|
76
65
|
*
|
|
77
|
-
* @param value
|
|
78
|
-
* @param precision
|
|
79
|
-
* @param prettyPrecision
|
|
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
|
|
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
|
-
*
|
|
131
|
+
* Retira os separadores de milhar de um numeral em formato de string.
|
|
141
132
|
*
|
|
142
|
-
* @param value
|
|
143
|
-
* @param formatnumber
|
|
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
|
|
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
|
-
*
|
|
158
|
+
* Troca o formato do numeral(string) de "PT-BR" para "EN-US" e vice-versa.
|
|
166
159
|
*
|
|
167
|
-
* @param value
|
|
160
|
+
* @param value - Numeral em formato de string a ser convertido.
|
|
168
161
|
*
|
|
169
|
-
* @returns
|
|
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
|
-
*
|
|
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
|
-
* @
|
|
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
|
-
* @
|
|
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
|
-
*
|
|
203
|
+
* Obtém o valor ou zero, caso o valor seja inválido(NaN/undefined).
|
|
200
204
|
*
|
|
201
|
-
* @param value
|
|
205
|
+
* @param value - Numeral a ser validado.
|
|
202
206
|
*
|
|
203
|
-
* @returns
|
|
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
|
+
}
|
package/src/utils/ObjectUtils.ts
CHANGED
|
@@ -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
|
}
|