@sankhyalabs/core 0.0.0-bugfix-dev-KB-6165.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/.nojekyll +1 -0
- package/.docs/README.md +63 -0
- package/.docs/classes/ApplicationContext.md +90 -0
- package/.docs/classes/ArrayUtils.md +99 -0
- package/.docs/classes/AuthorizedServiceCaller.md +76 -0
- package/.docs/classes/Change.md +190 -0
- package/.docs/classes/DataUnit.md +2453 -0
- package/.docs/classes/DataUnitAction.md +96 -0
- package/.docs/classes/DataUnitStorage.md +116 -0
- package/.docs/classes/DateUtils.md +327 -0
- package/.docs/classes/ElementIDUtils.md +308 -0
- package/.docs/classes/ErrorException.md +214 -0
- package/.docs/classes/ErrorTracking.md +62 -0
- package/.docs/classes/FloatingManager.md +530 -0
- package/.docs/classes/HTMLBuilder.md +45 -0
- package/.docs/classes/HttpProvider.md +96 -0
- package/.docs/classes/JSUtils.md +115 -0
- package/.docs/classes/MaskFormatter-1.md +347 -0
- package/.docs/classes/NumberUtils.md +335 -0
- package/.docs/classes/ObjectUtils.md +160 -0
- package/.docs/classes/OnboardingUtils.md +126 -0
- package/.docs/classes/PromiseSync.md +91 -0
- package/.docs/classes/ReadyUtil.md +115 -0
- package/.docs/classes/RequestMetadata.md +84 -0
- package/.docs/classes/SelectionInfo.md +168 -0
- package/.docs/classes/SkwHttpProvider.md +109 -0
- package/.docs/classes/StringUtils.md +562 -0
- package/.docs/classes/TimeFormatter.md +98 -0
- package/.docs/classes/UserAgentUtils.md +58 -0
- package/.docs/classes/VersionUtils.md +42 -0
- package/.docs/classes/WaitingChangeException.md +200 -0
- package/.docs/classes/WarningException.md +214 -0
- package/.docs/enums/Action.md +294 -0
- package/.docs/enums/ChangeOperation.md +52 -0
- package/.docs/enums/DataType.md +63 -0
- package/.docs/enums/DependencyType.md +41 -0
- package/.docs/enums/SelectionMode.md +30 -0
- package/.docs/enums/SortMode.md +30 -0
- package/.docs/enums/UserInterface.md +195 -0
- package/.docs/interfaces/ChildDescriptor.md +41 -0
- package/.docs/interfaces/ChildLink.md +30 -0
- package/.docs/interfaces/DUActionInterceptor.md +29 -0
- package/.docs/interfaces/ExecutionContext.md +58 -0
- package/.docs/interfaces/FieldDescriptor.md +140 -0
- package/.docs/interfaces/Filter.md +41 -0
- package/.docs/interfaces/IElementIDInfo.md +30 -0
- package/.docs/interfaces/LoadDataRequest.md +101 -0
- package/.docs/interfaces/LoadDataResponse.md +36 -0
- package/.docs/interfaces/PageRequest.md +41 -0
- package/.docs/interfaces/PaginationInfo.md +75 -0
- package/.docs/interfaces/PromiseSyncCallback.md +39 -0
- package/.docs/interfaces/QuickFilter.md +41 -0
- package/.docs/interfaces/Record.md +62 -0
- package/.docs/interfaces/SavedRecord.md +85 -0
- package/.docs/interfaces/Sort.md +41 -0
- package/.docs/interfaces/SortingProvider.md +29 -0
- package/.docs/interfaces/UnitMetadata.md +52 -0
- package/.docs/interfaces/WaitingChange.md +41 -0
- package/.docs/modules/MaskFormatter.md +37 -0
- package/.docs/modules.md +74 -0
- package/.docs/package.json +15 -0
- package/.eslintignore +2 -0
- package/.eslintrc.cjs +35 -0
- package/.husky/commit-msg +4 -0
- package/.releaserc +58 -0
- package/README.md +62 -0
- package/commitlint.config.cjs +14 -0
- package/dist/async/PromiseSync.d.ts +29 -0
- package/dist/async/PromiseSync.js +31 -0
- package/dist/async/PromiseSync.js.map +1 -0
- package/dist/dataunit/DataUnit.d.ts +924 -0
- package/dist/dataunit/DataUnit.js +1621 -0
- package/dist/dataunit/DataUnit.js.map +1 -0
- package/dist/dataunit/DataUnitStorage.d.ts +24 -0
- package/dist/dataunit/DataUnitStorage.js +39 -0
- package/dist/dataunit/DataUnitStorage.js.map +1 -0
- package/dist/dataunit/formatting/PrettyFormatter.d.ts +2 -0
- package/dist/dataunit/formatting/PrettyFormatter.js +94 -0
- package/dist/dataunit/formatting/PrettyFormatter.js.map +1 -0
- package/dist/dataunit/loading/LoadDataRequest.d.ts +19 -0
- package/dist/dataunit/loading/LoadDataRequest.js +2 -0
- package/dist/dataunit/loading/LoadDataRequest.js.map +1 -0
- package/dist/dataunit/loading/LoadDataResponse.d.ts +9 -0
- package/dist/dataunit/loading/LoadDataResponse.js +2 -0
- package/dist/dataunit/loading/LoadDataResponse.js.map +1 -0
- package/dist/dataunit/loading/PaginationInfo.d.ts +13 -0
- package/dist/dataunit/loading/PaginationInfo.js +2 -0
- package/dist/dataunit/loading/PaginationInfo.js.map +1 -0
- package/dist/dataunit/metadata/DataType.d.ts +54 -0
- package/dist/dataunit/metadata/DataType.js +124 -0
- package/dist/dataunit/metadata/DataType.js.map +1 -0
- package/dist/dataunit/metadata/UnitMetadata.d.ts +88 -0
- package/dist/dataunit/metadata/UnitMetadata.js +36 -0
- package/dist/dataunit/metadata/UnitMetadata.js.map +1 -0
- package/dist/dataunit/state/HistReducer.d.ts +10 -0
- package/dist/dataunit/state/HistReducer.js +28 -0
- package/dist/dataunit/state/HistReducer.js.map +1 -0
- package/dist/dataunit/state/StateManager.d.ts +57 -0
- package/dist/dataunit/state/StateManager.js +97 -0
- package/dist/dataunit/state/StateManager.js.map +1 -0
- package/dist/dataunit/state/action/DataUnitAction.d.ts +40 -0
- package/dist/dataunit/state/action/DataUnitAction.js +42 -0
- package/dist/dataunit/state/action/DataUnitAction.js.map +1 -0
- package/dist/dataunit/state/slice/AddedRecordsSlice.d.ts +12 -0
- package/dist/dataunit/state/slice/AddedRecordsSlice.js +30 -0
- package/dist/dataunit/state/slice/AddedRecordsSlice.js.map +1 -0
- package/dist/dataunit/state/slice/ChangesSlice.d.ts +13 -0
- package/dist/dataunit/state/slice/ChangesSlice.js +105 -0
- package/dist/dataunit/state/slice/ChangesSlice.js.map +1 -0
- package/dist/dataunit/state/slice/InvalidFieldsSlice.d.ts +10 -0
- package/dist/dataunit/state/slice/InvalidFieldsSlice.js +66 -0
- package/dist/dataunit/state/slice/InvalidFieldsSlice.js.map +1 -0
- package/dist/dataunit/state/slice/LoadingControlSlice.d.ts +19 -0
- package/dist/dataunit/state/slice/LoadingControlSlice.js +45 -0
- package/dist/dataunit/state/slice/LoadingControlSlice.js.map +1 -0
- package/dist/dataunit/state/slice/RecordsSlice.d.ts +11 -0
- package/dist/dataunit/state/slice/RecordsSlice.js +62 -0
- package/dist/dataunit/state/slice/RecordsSlice.js.map +1 -0
- package/dist/dataunit/state/slice/RemovedRecordsSlice.d.ts +9 -0
- package/dist/dataunit/state/slice/RemovedRecordsSlice.js +25 -0
- package/dist/dataunit/state/slice/RemovedRecordsSlice.js.map +1 -0
- package/dist/dataunit/state/slice/SelectionSlice.d.ts +19 -0
- package/dist/dataunit/state/slice/SelectionSlice.js +155 -0
- package/dist/dataunit/state/slice/SelectionSlice.js.map +1 -0
- package/dist/dataunit/state/slice/SnapshotSlice.d.ts +19 -0
- package/dist/dataunit/state/slice/SnapshotSlice.js +106 -0
- package/dist/dataunit/state/slice/SnapshotSlice.js.map +1 -0
- package/dist/dataunit/state/slice/UnitMetadataSlice.d.ts +11 -0
- package/dist/dataunit/state/slice/UnitMetadataSlice.js +21 -0
- package/dist/dataunit/state/slice/UnitMetadataSlice.js.map +1 -0
- package/dist/dataunit/state/slice/WaitingChangesSlice.d.ts +12 -0
- package/dist/dataunit/state/slice/WaitingChangesSlice.js +56 -0
- package/dist/dataunit/state/slice/WaitingChangesSlice.js.map +1 -0
- package/dist/exceptions/ErrorException.d.ts +14 -0
- package/dist/exceptions/ErrorException.js +13 -0
- package/dist/exceptions/ErrorException.js.map +1 -0
- package/dist/exceptions/WaitingChangeException.d.ts +12 -0
- package/dist/exceptions/WaitingChangeException.js +12 -0
- package/dist/exceptions/WaitingChangeException.js.map +1 -0
- package/dist/exceptions/WarningException.d.ts +14 -0
- package/dist/exceptions/WarningException.js +13 -0
- package/dist/exceptions/WarningException.js.map +1 -0
- package/dist/html/HTMLBuilder.d.ts +3 -0
- package/dist/html/HTMLBuilder.js +9 -0
- package/dist/html/HTMLBuilder.js.map +1 -0
- package/dist/http/AuthorizedServiceCaller.d.ts +11 -0
- package/dist/http/AuthorizedServiceCaller.js +54 -0
- package/dist/http/AuthorizedServiceCaller.js.map +1 -0
- package/dist/http/HttpProvider.d.ts +25 -0
- package/dist/http/HttpProvider.js +74 -0
- package/dist/http/HttpProvider.js.map +1 -0
- package/dist/http/RequestMetadata.d.ts +30 -0
- package/dist/http/RequestMetadata.js +25 -0
- package/dist/http/RequestMetadata.js.map +1 -0
- package/dist/http/SkwHttpProvider.d.ts +9 -0
- package/dist/http/SkwHttpProvider.js +67 -0
- package/dist/http/SkwHttpProvider.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/traking/ErrorTraking.d.ts +19 -0
- package/dist/traking/ErrorTraking.js +34 -0
- package/dist/traking/ErrorTraking.js.map +1 -0
- package/dist/ui/FloatingManager.d.ts +164 -0
- package/dist/ui/FloatingManager.js +358 -0
- package/dist/ui/FloatingManager.js.map +1 -0
- package/dist/utils/ApplicationContext.d.ts +26 -0
- package/dist/utils/ApplicationContext.js +38 -0
- package/dist/utils/ApplicationContext.js.map +1 -0
- package/dist/utils/ArrayUtils.d.ts +29 -0
- package/dist/utils/ArrayUtils.js +57 -0
- package/dist/utils/ArrayUtils.js.map +1 -0
- package/dist/utils/CriteriaModel.d.ts +107 -0
- package/dist/utils/CriteriaModel.js +172 -0
- package/dist/utils/CriteriaModel.js.map +1 -0
- package/dist/utils/CriteriaParameter.d.ts +69 -0
- package/dist/utils/CriteriaParameter.js +83 -0
- package/dist/utils/CriteriaParameter.js.map +1 -0
- package/dist/utils/DateUtils.d.ts +97 -0
- package/dist/utils/DateUtils.js +171 -0
- package/dist/utils/DateUtils.js.map +1 -0
- package/dist/utils/ElementIDUtils.d.ts +72 -0
- package/dist/utils/ElementIDUtils.js +161 -0
- package/dist/utils/ElementIDUtils.js.map +1 -0
- package/dist/utils/JSUtils.d.ts +36 -0
- package/dist/utils/JSUtils.js +66 -0
- package/dist/utils/JSUtils.js.map +1 -0
- package/dist/utils/MaskFormatter.d.ts +148 -0
- package/dist/utils/MaskFormatter.js +356 -0
- package/dist/utils/MaskFormatter.js.map +1 -0
- package/dist/utils/NumberUtils.d.ts +127 -0
- package/dist/utils/NumberUtils.js +245 -0
- package/dist/utils/NumberUtils.js.map +1 -0
- package/dist/utils/ObjectUtils.d.ts +47 -0
- package/dist/utils/ObjectUtils.js +68 -0
- package/dist/utils/ObjectUtils.js.map +1 -0
- package/dist/utils/OnboardingUtils.d.ts +17 -0
- package/dist/utils/OnboardingUtils.js +41 -0
- package/dist/utils/OnboardingUtils.js.map +1 -0
- package/dist/utils/ReadyUtil.d.ts +24 -0
- package/dist/utils/ReadyUtil.js +41 -0
- package/dist/utils/ReadyUtil.js.map +1 -0
- package/dist/utils/StringUtils.d.ts +167 -0
- package/dist/utils/StringUtils.js +328 -0
- package/dist/utils/StringUtils.js.map +1 -0
- package/dist/utils/TimeFormatter.d.ts +33 -0
- package/dist/utils/TimeFormatter.js +98 -0
- package/dist/utils/TimeFormatter.js.map +1 -0
- package/dist/utils/UserAgentUtils/index.d.ts +15 -0
- package/dist/utils/UserAgentUtils/index.js +48 -0
- package/dist/utils/UserAgentUtils/index.js.map +1 -0
- package/dist/utils/UserAgentUtils/navigatorAgentList.d.ts +17 -0
- package/dist/utils/UserAgentUtils/navigatorAgentList.js +40 -0
- package/dist/utils/UserAgentUtils/navigatorAgentList.js.map +1 -0
- package/dist/utils/VersionUtils.d.ts +7 -0
- package/dist/utils/VersionUtils.js +31 -0
- package/dist/utils/VersionUtils.js.map +1 -0
- package/jest.config.ts +17 -0
- package/mock/http/XMLHttpRequest-mock.js +26 -0
- package/package.json +52 -0
- package/scripts/runlink.bat +1 -0
- package/scripts/runlink.sh +1 -0
- package/src/async/PromiseSync.ts +49 -0
- package/src/dataunit/DataUnit.ts +1835 -0
- package/src/dataunit/DataUnitStorage.ts +43 -0
- package/src/dataunit/formatting/PrettyFormatter.ts +113 -0
- package/src/dataunit/loading/LoadDataRequest.ts +26 -0
- package/src/dataunit/loading/LoadDataResponse.ts +11 -0
- package/src/dataunit/loading/PaginationInfo.ts +18 -0
- package/src/dataunit/metadata/DataType.ts +127 -0
- package/src/dataunit/metadata/UnitMetadata.ts +102 -0
- package/src/dataunit/state/HistReducer.ts +34 -0
- package/src/dataunit/state/StateManager.ts +142 -0
- package/src/dataunit/state/action/DataUnitAction.ts +67 -0
- package/src/dataunit/state/slice/AddedRecordsSlice.ts +48 -0
- package/src/dataunit/state/slice/ChangesSlice.ts +125 -0
- package/src/dataunit/state/slice/InvalidFieldsSlice.ts +85 -0
- package/src/dataunit/state/slice/LoadingControlSlice.ts +60 -0
- package/src/dataunit/state/slice/RecordsSlice.ts +74 -0
- package/src/dataunit/state/slice/RemovedRecordsSlice.ts +30 -0
- package/src/dataunit/state/slice/SelectionSlice.ts +193 -0
- package/src/dataunit/state/slice/SnapshotSlice.ts +139 -0
- package/src/dataunit/state/slice/UnitMetadataSlice.ts +30 -0
- package/src/dataunit/state/slice/WaitingChangesSlice.ts +74 -0
- package/src/exceptions/ErrorException.ts +25 -0
- package/src/exceptions/WaitingChangeException.ts +21 -0
- package/src/exceptions/WarningException.ts +26 -0
- package/src/html/HTMLBuilder.ts +8 -0
- package/src/http/AuthorizedServiceCaller.ts +58 -0
- package/src/http/HttpProvider.ts +94 -0
- package/src/http/RequestMetadata.ts +42 -0
- package/src/http/SkwHttpProvider.ts +78 -0
- package/src/index.ts +93 -0
- package/src/traking/ErrorTraking.ts +37 -0
- package/src/ui/FloatingManager.ts +417 -0
- package/src/utils/ApplicationContext.ts +42 -0
- package/src/utils/ArrayUtils.ts +61 -0
- package/src/utils/CriteriaModel.ts +205 -0
- package/src/utils/CriteriaParameter.ts +108 -0
- package/src/utils/DateUtils.ts +195 -0
- package/src/utils/ElementIDUtils.ts +184 -0
- package/src/utils/JSUtils.ts +69 -0
- package/src/utils/MaskFormatter.ts +407 -0
- package/src/utils/NumberUtils.ts +283 -0
- package/src/utils/ObjectUtils.ts +76 -0
- package/src/utils/OnboardingUtils.ts +46 -0
- package/src/utils/ReadyUtil.ts +45 -0
- package/src/utils/StringUtils.ts +359 -0
- package/src/utils/TimeFormatter.ts +98 -0
- package/src/utils/UserAgentUtils/index.ts +62 -0
- package/src/utils/UserAgentUtils/navigatorAgentList.ts +39 -0
- package/src/utils/VersionUtils.ts +37 -0
- package/test/http/HttpProvider.spec.ts +35 -0
- package/test/http/SkwHttpProvider.ts.spec.ts +34 -0
- package/test/util/CriteriaModel.spec.ts +232 -0
- package/test/util/CriteriaParameter.spec.ts +52 -0
- package/test/util/DataUnitStorage.spec.ts +63 -0
- package/test/util/ElementIDUtils.spec.ts +272 -0
- package/test/util/MaskFormatter.spec.ts +138 -0
- package/test/util/NumberUtils.spec.ts +182 -0
- package/test/util/StringUtils.spec.ts +51 -0
- package/test/util/TimeFormatter.spec.ts +26 -0
- package/tsconfig.json +16 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `MaskFormatter` é usado para formatar strings. Seu comportamento
|
|
3
|
+
* é controlado pelo formato do atributo `mask` que especifica quais
|
|
4
|
+
* caracteres são válidos e onde devem estar posicionados, intercalando-os
|
|
5
|
+
* com eventuais caracteres literais expressados no padrão informado.
|
|
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).
|
|
7
|
+
*
|
|
8
|
+
* Para o padrão da máscara podem ser usados os seguintes caracteres especiais:
|
|
9
|
+
*
|
|
10
|
+
* | Caractere | Comportamento |
|
|
11
|
+
* |:---------:|-------------------------------------------------------------------------------------------------------------|
|
|
12
|
+
* | # | Qualquer número |
|
|
13
|
+
* | ' | "Escapa" o caractere que vem na sequência. Útil quando desejamos converter um caractere especial em literal.|
|
|
14
|
+
* | U | Qualquer letra. Transforma letras minúsculas em maiúsculas. |
|
|
15
|
+
* | L | Qualquer letra. Transforma letras maiúsculas em minúsculas. |
|
|
16
|
+
* | A | Qualquer letra ou número. |
|
|
17
|
+
* | ? | Qualquer letra. Preserva maiúsculas e minúsculas. |
|
|
18
|
+
* | * | Qualquer caractere. |
|
|
19
|
+
*
|
|
20
|
+
* Os demais caracteres presentes no padrão serão tratados como literais, isto é,
|
|
21
|
+
* serão apenas inseridos naquela posição.
|
|
22
|
+
*
|
|
23
|
+
* Quando o valor a ser formatado é menor que a máscara, um 'placeHolder'
|
|
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
|
|
26
|
+
* esse valor pode ser alterado.
|
|
27
|
+
*
|
|
28
|
+
* Por exemplo:
|
|
29
|
+
* '''
|
|
30
|
+
* const formatter: MaskFormatter = new MaskFormatter("###-####");
|
|
31
|
+
* formatter.placeholder = '_';
|
|
32
|
+
* console.log(formatter.format("123"));
|
|
33
|
+
* '''
|
|
34
|
+
* resultaria na string '123-____'.
|
|
35
|
+
*
|
|
36
|
+
* ##Veja mais alguns exemplos:
|
|
37
|
+
* |Padrão |Máscara |Entrada |Saída |
|
|
38
|
+
* |----------------|------------------|--------------|------------------|
|
|
39
|
+
* |Telefone |(##) ####-#### |3432192515 |(34) 3219-2515 |
|
|
40
|
+
* |CPF |###.###.###-## |12345678901 |123.456.789-01 |
|
|
41
|
+
* |CNPJ |##.###.###/####-##|12345678901234|12.345.678/9012-34|
|
|
42
|
+
* |CEP |##.###-### |12345678 |12.345-678 |
|
|
43
|
+
* |PLACA (veículo) |UUU-#### |abc1234 |ABC-1234 |
|
|
44
|
+
* |Cor RGB |'#AAAAAA |00000F0 |#0000F0 |
|
|
45
|
+
*
|
|
46
|
+
*/
|
|
47
|
+
export declare class MaskFormatter {
|
|
48
|
+
private static DIGIT_KEY;
|
|
49
|
+
private static LITERAL_KEY;
|
|
50
|
+
private static UPPERCASE_KEY;
|
|
51
|
+
private static LOWERCASE_KEY;
|
|
52
|
+
private static ALPHA_NUMERIC_KEY;
|
|
53
|
+
private static CHARACTER_KEY;
|
|
54
|
+
private static ANYTHING_KEY;
|
|
55
|
+
static DEFAULT_MASKS: any;
|
|
56
|
+
private _mask;
|
|
57
|
+
private _maskChars;
|
|
58
|
+
/**
|
|
59
|
+
* Determina qual caractere será usado dos caracteres não presentes no valor,
|
|
60
|
+
* ou seja, aqueles que o usuário ainda não informou. Por padrão usamos um espaço.
|
|
61
|
+
*/
|
|
62
|
+
placeholder: string;
|
|
63
|
+
/**
|
|
64
|
+
* Setter para mask. Trata-se do padrão que se espera ao formatar o texto.
|
|
65
|
+
*/
|
|
66
|
+
set mask(mask: string);
|
|
67
|
+
/**
|
|
68
|
+
* Getter para mask.
|
|
69
|
+
*
|
|
70
|
+
* @return A última máscara informada.
|
|
71
|
+
*/
|
|
72
|
+
get mask(): string;
|
|
73
|
+
constructor(mask: string);
|
|
74
|
+
/**
|
|
75
|
+
* Formata a string passada baseada na máscara definda pelo atributo mask.
|
|
76
|
+
*
|
|
77
|
+
* @param value Valor a ser formatado.
|
|
78
|
+
* @return O valor processado de acordo com o padrão.
|
|
79
|
+
*/
|
|
80
|
+
format(value: string): string;
|
|
81
|
+
/**
|
|
82
|
+
* Prepara a formatação internamente de acordo com o padrão.
|
|
83
|
+
*/
|
|
84
|
+
private updateInternalMask;
|
|
85
|
+
static MaskCharacter: {
|
|
86
|
+
new (maskFormatter: MaskFormatter, type: string): {
|
|
87
|
+
maskFormatter: MaskFormatter;
|
|
88
|
+
type: string;
|
|
89
|
+
/**
|
|
90
|
+
* Cada subclasse deve sobrescrever retornando true caso represente.
|
|
91
|
+
* um caractere literal. Por padrão o retorno é false.
|
|
92
|
+
*/
|
|
93
|
+
isLiteral(): boolean;
|
|
94
|
+
/**
|
|
95
|
+
* Retorna se é um texto válido.
|
|
96
|
+
*
|
|
97
|
+
* @param aChar - Valor a ser validado.
|
|
98
|
+
* @returns - Retorna se é um texto válido.
|
|
99
|
+
*/
|
|
100
|
+
isValidCharacter(aChar: string): boolean;
|
|
101
|
+
/**
|
|
102
|
+
* Retorna o texto informado.
|
|
103
|
+
*
|
|
104
|
+
* @param aChar - Texto a ser retornado.
|
|
105
|
+
* @returns - Texto informado.
|
|
106
|
+
*/
|
|
107
|
+
getChar(aChar: string): string;
|
|
108
|
+
/**
|
|
109
|
+
* Adiciona valor encontrado.
|
|
110
|
+
*
|
|
111
|
+
* @param result - String a ser manipulada.
|
|
112
|
+
* @param formatting - String de formatação a ser adicionada na result.
|
|
113
|
+
* @param index - Índice que será utilizado para buscar no parâmetro formatting.
|
|
114
|
+
*
|
|
115
|
+
* @returns - Valor passado na result incrementado com o valor encontrado na formatting.
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ``` const result = "";
|
|
119
|
+
* const formatting = "123456";
|
|
120
|
+
* const index = [0];
|
|
121
|
+
* const returnedResult = append(result, formatting, index);
|
|
122
|
+
* ```
|
|
123
|
+
* Retorna:
|
|
124
|
+
* ```returnedResult = "1";
|
|
125
|
+
* index = [1];
|
|
126
|
+
* ```
|
|
127
|
+
*/
|
|
128
|
+
append(result: string, formatting: string, index: Array<number>): string;
|
|
129
|
+
/**
|
|
130
|
+
* Obtém tipo por extenso.
|
|
131
|
+
*
|
|
132
|
+
* @returns O tipo por extenso.
|
|
133
|
+
* @example
|
|
134
|
+
* Se o tipo for **ALPHA_NUMERIC_KEY** recebo **uma letra ou um número**
|
|
135
|
+
*/
|
|
136
|
+
getFormatMessage(): string;
|
|
137
|
+
};
|
|
138
|
+
};
|
|
139
|
+
private static LiteralCharacter;
|
|
140
|
+
private static DigitMaskCharacter;
|
|
141
|
+
private static UpperCaseCharacter;
|
|
142
|
+
private static LowerCaseCharacter;
|
|
143
|
+
private static AlphaNumericCharacter;
|
|
144
|
+
private static CharCharacter;
|
|
145
|
+
}
|
|
146
|
+
export declare namespace MaskFormatter {
|
|
147
|
+
type MaskCharacter = InstanceType<typeof MaskFormatter.MaskCharacter>;
|
|
148
|
+
}
|
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `MaskFormatter` é usado para formatar strings. Seu comportamento
|
|
3
|
+
* é controlado pelo formato do atributo `mask` que especifica quais
|
|
4
|
+
* caracteres são válidos e onde devem estar posicionados, intercalando-os
|
|
5
|
+
* com eventuais caracteres literais expressados no padrão informado.
|
|
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).
|
|
7
|
+
*
|
|
8
|
+
* Para o padrão da máscara podem ser usados os seguintes caracteres especiais:
|
|
9
|
+
*
|
|
10
|
+
* | Caractere | Comportamento |
|
|
11
|
+
* |:---------:|-------------------------------------------------------------------------------------------------------------|
|
|
12
|
+
* | # | Qualquer número |
|
|
13
|
+
* | ' | "Escapa" o caractere que vem na sequência. Útil quando desejamos converter um caractere especial em literal.|
|
|
14
|
+
* | U | Qualquer letra. Transforma letras minúsculas em maiúsculas. |
|
|
15
|
+
* | L | Qualquer letra. Transforma letras maiúsculas em minúsculas. |
|
|
16
|
+
* | A | Qualquer letra ou número. |
|
|
17
|
+
* | ? | Qualquer letra. Preserva maiúsculas e minúsculas. |
|
|
18
|
+
* | * | Qualquer caractere. |
|
|
19
|
+
*
|
|
20
|
+
* Os demais caracteres presentes no padrão serão tratados como literais, isto é,
|
|
21
|
+
* serão apenas inseridos naquela posição.
|
|
22
|
+
*
|
|
23
|
+
* Quando o valor a ser formatado é menor que a máscara, um 'placeHolder'
|
|
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
|
|
26
|
+
* esse valor pode ser alterado.
|
|
27
|
+
*
|
|
28
|
+
* Por exemplo:
|
|
29
|
+
* '''
|
|
30
|
+
* const formatter: MaskFormatter = new MaskFormatter("###-####");
|
|
31
|
+
* formatter.placeholder = '_';
|
|
32
|
+
* console.log(formatter.format("123"));
|
|
33
|
+
* '''
|
|
34
|
+
* resultaria na string '123-____'.
|
|
35
|
+
*
|
|
36
|
+
* ##Veja mais alguns exemplos:
|
|
37
|
+
* |Padrão |Máscara |Entrada |Saída |
|
|
38
|
+
* |----------------|------------------|--------------|------------------|
|
|
39
|
+
* |Telefone |(##) ####-#### |3432192515 |(34) 3219-2515 |
|
|
40
|
+
* |CPF |###.###.###-## |12345678901 |123.456.789-01 |
|
|
41
|
+
* |CNPJ |##.###.###/####-##|12345678901234|12.345.678/9012-34|
|
|
42
|
+
* |CEP |##.###-### |12345678 |12.345-678 |
|
|
43
|
+
* |PLACA (veículo) |UUU-#### |abc1234 |ABC-1234 |
|
|
44
|
+
* |Cor RGB |'#AAAAAA |00000F0 |#0000F0 |
|
|
45
|
+
*
|
|
46
|
+
*/
|
|
47
|
+
export class MaskFormatter {
|
|
48
|
+
/**
|
|
49
|
+
* Setter para mask. Trata-se do padrão que se espera ao formatar o texto.
|
|
50
|
+
*/
|
|
51
|
+
set mask(mask) {
|
|
52
|
+
this._mask = mask;
|
|
53
|
+
this.updateInternalMask();
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Getter para mask.
|
|
57
|
+
*
|
|
58
|
+
* @return A última máscara informada.
|
|
59
|
+
*/
|
|
60
|
+
get mask() {
|
|
61
|
+
return this._mask;
|
|
62
|
+
}
|
|
63
|
+
constructor(mask) {
|
|
64
|
+
this._mask = '';
|
|
65
|
+
this._maskChars = new Array();
|
|
66
|
+
/**
|
|
67
|
+
* Determina qual caractere será usado dos caracteres não presentes no valor,
|
|
68
|
+
* ou seja, aqueles que o usuário ainda não informou. Por padrão usamos um espaço.
|
|
69
|
+
*/
|
|
70
|
+
this.placeholder = ' ';
|
|
71
|
+
this.mask = mask;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Formata a string passada baseada na máscara definda pelo atributo mask.
|
|
75
|
+
*
|
|
76
|
+
* @param value Valor a ser formatado.
|
|
77
|
+
* @return O valor processado de acordo com o padrão.
|
|
78
|
+
*/
|
|
79
|
+
format(value) {
|
|
80
|
+
let result = '';
|
|
81
|
+
const index = [0];
|
|
82
|
+
let counter = 0;
|
|
83
|
+
const maxCounter = this._maskChars.length;
|
|
84
|
+
while (counter < maxCounter) {
|
|
85
|
+
result = this._maskChars[counter].append(result, value, index);
|
|
86
|
+
counter++;
|
|
87
|
+
}
|
|
88
|
+
return result;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Prepara a formatação internamente de acordo com o padrão.
|
|
92
|
+
*/
|
|
93
|
+
updateInternalMask() {
|
|
94
|
+
this._maskChars.length = 0;
|
|
95
|
+
if (this.mask != null) {
|
|
96
|
+
let counter = 0;
|
|
97
|
+
const maxCounter = this.mask.length;
|
|
98
|
+
while (counter < maxCounter) {
|
|
99
|
+
let maskChar = this.mask.charAt(counter);
|
|
100
|
+
switch (maskChar) {
|
|
101
|
+
case MaskFormatter.DIGIT_KEY:
|
|
102
|
+
this._maskChars.push(new MaskFormatter.DigitMaskCharacter(this, maskChar));
|
|
103
|
+
break;
|
|
104
|
+
case MaskFormatter.LITERAL_KEY:
|
|
105
|
+
if (++counter < maxCounter) {
|
|
106
|
+
maskChar = this.mask.charAt(counter);
|
|
107
|
+
this._maskChars.push(new MaskFormatter.LiteralCharacter(this, maskChar));
|
|
108
|
+
}
|
|
109
|
+
break;
|
|
110
|
+
case MaskFormatter.UPPERCASE_KEY:
|
|
111
|
+
this._maskChars.push(new MaskFormatter.UpperCaseCharacter(this, maskChar));
|
|
112
|
+
break;
|
|
113
|
+
case MaskFormatter.LOWERCASE_KEY:
|
|
114
|
+
this._maskChars.push(new MaskFormatter.LowerCaseCharacter(this, maskChar));
|
|
115
|
+
break;
|
|
116
|
+
case MaskFormatter.ALPHA_NUMERIC_KEY:
|
|
117
|
+
this._maskChars.push(new MaskFormatter.AlphaNumericCharacter(this, maskChar));
|
|
118
|
+
break;
|
|
119
|
+
case MaskFormatter.CHARACTER_KEY:
|
|
120
|
+
this._maskChars.push(new MaskFormatter.CharCharacter(this, maskChar));
|
|
121
|
+
break;
|
|
122
|
+
case MaskFormatter.ANYTHING_KEY:
|
|
123
|
+
this._maskChars.push(new MaskFormatter.MaskCharacter(this, maskChar));
|
|
124
|
+
break;
|
|
125
|
+
default:
|
|
126
|
+
this._maskChars.push(new MaskFormatter.LiteralCharacter(this, maskChar));
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
counter++;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
MaskFormatter.DIGIT_KEY = "#";
|
|
135
|
+
MaskFormatter.LITERAL_KEY = "'";
|
|
136
|
+
MaskFormatter.UPPERCASE_KEY = "U";
|
|
137
|
+
MaskFormatter.LOWERCASE_KEY = "L";
|
|
138
|
+
MaskFormatter.ALPHA_NUMERIC_KEY = "A";
|
|
139
|
+
MaskFormatter.CHARACTER_KEY = "?";
|
|
140
|
+
MaskFormatter.ANYTHING_KEY = "*";
|
|
141
|
+
MaskFormatter.DEFAULT_MASKS = {
|
|
142
|
+
"cnpj": "##.###.###/####-##",
|
|
143
|
+
"cpf": "###.###.###-##",
|
|
144
|
+
"phone": "(##) ####-####",
|
|
145
|
+
"cep": "##.###-###"
|
|
146
|
+
};
|
|
147
|
+
//
|
|
148
|
+
// Classes internas usadas para representar a máscara.
|
|
149
|
+
//
|
|
150
|
+
MaskFormatter.MaskCharacter = class {
|
|
151
|
+
constructor(maskFormatter, type) {
|
|
152
|
+
this.maskFormatter = maskFormatter;
|
|
153
|
+
this.type = type;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Cada subclasse deve sobrescrever retornando true caso represente.
|
|
157
|
+
* um caractere literal. Por padrão o retorno é false.
|
|
158
|
+
*/
|
|
159
|
+
isLiteral() {
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Retorna se é um texto válido.
|
|
164
|
+
*
|
|
165
|
+
* @param aChar - Valor a ser validado.
|
|
166
|
+
* @returns - Retorna se é um texto válido.
|
|
167
|
+
*/
|
|
168
|
+
isValidCharacter(aChar) {
|
|
169
|
+
if (this.isLiteral()) {
|
|
170
|
+
return (this.getChar(aChar) == aChar);
|
|
171
|
+
}
|
|
172
|
+
aChar = this.getChar(aChar);
|
|
173
|
+
return true;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Retorna o texto informado.
|
|
177
|
+
*
|
|
178
|
+
* @param aChar - Texto a ser retornado.
|
|
179
|
+
* @returns - Texto informado.
|
|
180
|
+
*/
|
|
181
|
+
getChar(aChar) {
|
|
182
|
+
return aChar;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Adiciona valor encontrado.
|
|
186
|
+
*
|
|
187
|
+
* @param result - String a ser manipulada.
|
|
188
|
+
* @param formatting - String de formatação a ser adicionada na result.
|
|
189
|
+
* @param index - Índice que será utilizado para buscar no parâmetro formatting.
|
|
190
|
+
*
|
|
191
|
+
* @returns - Valor passado na result incrementado com o valor encontrado na formatting.
|
|
192
|
+
*
|
|
193
|
+
* @example
|
|
194
|
+
* ``` const result = "";
|
|
195
|
+
* const formatting = "123456";
|
|
196
|
+
* const index = [0];
|
|
197
|
+
* const returnedResult = append(result, formatting, index);
|
|
198
|
+
* ```
|
|
199
|
+
* Retorna:
|
|
200
|
+
* ```returnedResult = "1";
|
|
201
|
+
* index = [1];
|
|
202
|
+
* ```
|
|
203
|
+
*/
|
|
204
|
+
append(result, formatting, index) {
|
|
205
|
+
const inString = index[0] < formatting.length;
|
|
206
|
+
const aChar = inString ? formatting.charAt(index[0]) : '';
|
|
207
|
+
if (this.isLiteral()) {
|
|
208
|
+
const literal = this.getChar(aChar);
|
|
209
|
+
result += literal;
|
|
210
|
+
if (literal === aChar) {
|
|
211
|
+
index[0] = index[0] + 1;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
else if (index[0] >= formatting.length) {
|
|
215
|
+
result += this.maskFormatter.placeholder;
|
|
216
|
+
index[0] = index[0] + 1;
|
|
217
|
+
}
|
|
218
|
+
else if (this.isValidCharacter(aChar)) {
|
|
219
|
+
result += this.getChar(aChar);
|
|
220
|
+
index[0] = index[0] + 1;
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
throw new Error(`Valor inválido: "${aChar}". Na posição ${index[0] + 1} espera-se ${this.getFormatMessage()}.`);
|
|
224
|
+
}
|
|
225
|
+
return result;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Obtém tipo por extenso.
|
|
229
|
+
*
|
|
230
|
+
* @returns O tipo por extenso.
|
|
231
|
+
* @example
|
|
232
|
+
* Se o tipo for **ALPHA_NUMERIC_KEY** recebo **uma letra ou um número**
|
|
233
|
+
*/
|
|
234
|
+
getFormatMessage() {
|
|
235
|
+
let message;
|
|
236
|
+
switch (this.type) {
|
|
237
|
+
case MaskFormatter.UPPERCASE_KEY:
|
|
238
|
+
case MaskFormatter.LOWERCASE_KEY:
|
|
239
|
+
case MaskFormatter.CHARACTER_KEY:
|
|
240
|
+
message = 'uma letra';
|
|
241
|
+
break;
|
|
242
|
+
case MaskFormatter.DIGIT_KEY:
|
|
243
|
+
message = 'um número';
|
|
244
|
+
break;
|
|
245
|
+
case MaskFormatter.ALPHA_NUMERIC_KEY:
|
|
246
|
+
message = 'uma letra ou um número';
|
|
247
|
+
break;
|
|
248
|
+
default:
|
|
249
|
+
message = '';
|
|
250
|
+
}
|
|
251
|
+
return message;
|
|
252
|
+
}
|
|
253
|
+
};
|
|
254
|
+
MaskFormatter.LiteralCharacter = class extends MaskFormatter.MaskCharacter {
|
|
255
|
+
constructor(maskFormatter, fixedChar) {
|
|
256
|
+
super(maskFormatter, fixedChar);
|
|
257
|
+
this._fixedChar = fixedChar;
|
|
258
|
+
}
|
|
259
|
+
isLiteral() {
|
|
260
|
+
return true;
|
|
261
|
+
}
|
|
262
|
+
getChar(aChar) {
|
|
263
|
+
aChar;
|
|
264
|
+
return this._fixedChar;
|
|
265
|
+
}
|
|
266
|
+
};
|
|
267
|
+
MaskFormatter.DigitMaskCharacter = class extends MaskFormatter.MaskCharacter {
|
|
268
|
+
/**
|
|
269
|
+
* Valida se o caracter é válido.
|
|
270
|
+
*
|
|
271
|
+
* @param aChar - Caracter a ser validado.
|
|
272
|
+
* @returns - Se o caracter é valido ou não.
|
|
273
|
+
*/
|
|
274
|
+
isValidCharacter(aChar) {
|
|
275
|
+
return (this.isDigit(aChar) && super.isValidCharacter(aChar));
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Valida se é um numéro.
|
|
279
|
+
*
|
|
280
|
+
* @param char - String a ser verificada.
|
|
281
|
+
* @returns - Verdadeiro para caracteres numéricos.
|
|
282
|
+
*
|
|
283
|
+
* @example
|
|
284
|
+
* ```Informado: "8" | Retorno: true ```
|
|
285
|
+
* @example
|
|
286
|
+
* ```Informado: "A" | Retorno: false ```
|
|
287
|
+
*/
|
|
288
|
+
isDigit(char) {
|
|
289
|
+
return char >= '0' && char <= '9';
|
|
290
|
+
}
|
|
291
|
+
};
|
|
292
|
+
MaskFormatter.UpperCaseCharacter = class extends MaskFormatter.MaskCharacter {
|
|
293
|
+
/**
|
|
294
|
+
* Valida se a string é uma letra do alfabeto (a-z).
|
|
295
|
+
*
|
|
296
|
+
* @param aChar - String passada para validação.
|
|
297
|
+
* @returns - Verdadeiro se a string passada for uma letra do alfabeto.
|
|
298
|
+
*/
|
|
299
|
+
isValidCharacter(aChar) {
|
|
300
|
+
return (/[a-z]/i.test(aChar) && super.isValidCharacter(aChar));
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Obtém a string passada em maiúscula.
|
|
304
|
+
*
|
|
305
|
+
* @param aChar - String passada para validação.
|
|
306
|
+
* @returns - O caracter passado em letra maiúscula.
|
|
307
|
+
*/
|
|
308
|
+
getChar(aChar) {
|
|
309
|
+
return aChar.toUpperCase();
|
|
310
|
+
}
|
|
311
|
+
};
|
|
312
|
+
MaskFormatter.LowerCaseCharacter = class extends MaskFormatter.MaskCharacter {
|
|
313
|
+
/**
|
|
314
|
+
* Valida se a string é uma letra do alfabeto (a-z).
|
|
315
|
+
*
|
|
316
|
+
* @param aChar - String passada para validação.
|
|
317
|
+
* @returns - Verdadeiro se a string passada for uma letra do alfabeto.
|
|
318
|
+
*/
|
|
319
|
+
isValidCharacter(aChar) {
|
|
320
|
+
return (/[a-z]/i.test(aChar) && super.isValidCharacter(aChar));
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Obtém a string passada em minúscula.
|
|
324
|
+
*
|
|
325
|
+
* @param aChar - String passada para validação.
|
|
326
|
+
* @returns - O caracter passado em letra minúscula.
|
|
327
|
+
*/
|
|
328
|
+
getChar(aChar) {
|
|
329
|
+
return aChar.toLocaleLowerCase();
|
|
330
|
+
}
|
|
331
|
+
};
|
|
332
|
+
MaskFormatter.AlphaNumericCharacter = class extends MaskFormatter.MaskCharacter {
|
|
333
|
+
/**
|
|
334
|
+
* Valida se a string é uma letra do alfabeto (a-z) ou um numero entre zero e nove.
|
|
335
|
+
*
|
|
336
|
+
* @param aChar - String passada para validação.
|
|
337
|
+
* @returns - Verdadeiro se a string passada for uma letra do alfabeto ou um numeral (de 0 a 9).
|
|
338
|
+
*/
|
|
339
|
+
isValidCharacter(aChar) {
|
|
340
|
+
//FIXME: talvez seja problema usar regex aqui... avaliar se existe forma mais barata.
|
|
341
|
+
return (/[a-z0-9]/i.test(aChar)) && super.isValidCharacter(aChar);
|
|
342
|
+
}
|
|
343
|
+
};
|
|
344
|
+
MaskFormatter.CharCharacter = class extends MaskFormatter.MaskCharacter {
|
|
345
|
+
/**
|
|
346
|
+
* Valida se a string é uma letra do alfabeto (a-z).
|
|
347
|
+
*
|
|
348
|
+
* @param aChar - String passada para validação.
|
|
349
|
+
* @returns - Verdadeiro se a string passada for uma letra do alfabeto.
|
|
350
|
+
*/
|
|
351
|
+
isValidCharacter(aChar) {
|
|
352
|
+
//FIXME: talvez seja problema usar regex aqui... avaliar se existe forma mais barata
|
|
353
|
+
return (/[a-z]/i.test(aChar) && super.isValidCharacter(aChar));
|
|
354
|
+
}
|
|
355
|
+
};
|
|
356
|
+
//# sourceMappingURL=MaskFormatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MaskFormatter.js","sourceRoot":"","sources":["../../src/utils/MaskFormatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `NumberUtils`: Utilizado para manipulação de numerais.
|
|
3
|
+
*/
|
|
4
|
+
export declare class NumberUtils {
|
|
5
|
+
/**
|
|
6
|
+
* Converte o dado numérico de string para number.
|
|
7
|
+
*
|
|
8
|
+
* @param value Numeral em formato de string a ser convertido (Importante: formato PT-BR ou já em formato numérico: ######.##).
|
|
9
|
+
* @returns - Numeral passado.
|
|
10
|
+
* @example
|
|
11
|
+
* @"100,12" | 100.12
|
|
12
|
+
* @"100.12" | 100.12
|
|
13
|
+
* @"-100,12" | -100.12
|
|
14
|
+
* @"R$100,12" | 100.12
|
|
15
|
+
* @"-R$100,12" | -100.12
|
|
16
|
+
* @"string" | NaN
|
|
17
|
+
*/
|
|
18
|
+
static stringToNumber: (value: string) => number;
|
|
19
|
+
/**
|
|
20
|
+
* Formata o numeral com a precisão informada.
|
|
21
|
+
*
|
|
22
|
+
* @param value - Numeral em formato de string a ser convertido (Importante: formato PT-BR ou já em formato numérico - sem separador de milhares: ######.##).
|
|
23
|
+
* @param precision - Quantidade de casas decimais.
|
|
24
|
+
* @param prettyPrecision - Quantidade de zeros nos decimais.
|
|
25
|
+
* @param defaultValue - Valor padrão caso o value não seja um valor numérico válido.
|
|
26
|
+
*
|
|
27
|
+
* @returns - Numeral em formato de String formatado em PT-BR.
|
|
28
|
+
* @example
|
|
29
|
+
* Informado: ('10,9845444', 3, 3) | Retorna: '10,985'
|
|
30
|
+
* Informado: (undefined, 3, 3) | Retorna: NaN
|
|
31
|
+
* Informado: (undefined, 3, 3, '0,00') | Retorna: 0,00
|
|
32
|
+
*/
|
|
33
|
+
static format: (value: string, precision: number, prettyPrecision?: number, defaultValue?: string) => string;
|
|
34
|
+
/**
|
|
35
|
+
* Formata o numeral com a precisão informada e o valor default 0,00 caso o value não seja um numero valido.
|
|
36
|
+
*
|
|
37
|
+
* @param value - Numeral em formato de string a ser convertido (Importante: formato PT-BR ou já em formato numérico - sem separador de milhares: ######.##).
|
|
38
|
+
* @param precision - Quantidade de casas decimais.
|
|
39
|
+
* @param prettyPrecision - Quantidade de zeros nos decimais.
|
|
40
|
+
*
|
|
41
|
+
* @returns - Numeral em formato de String formatado em PT-BR.
|
|
42
|
+
* @example
|
|
43
|
+
* Informado: ('10,9845444', 3, 3) | Retorna: '10,985'
|
|
44
|
+
* Informado: (undefined, 3, 3) | Retorna: 0,00
|
|
45
|
+
*/
|
|
46
|
+
static safeFormat: (value: string, precision: number, prettyPrecision?: number) => string;
|
|
47
|
+
/**
|
|
48
|
+
* Retira os separadores de milhar de um numeral em formato de string.
|
|
49
|
+
*
|
|
50
|
+
* @param value - Numeral em formato de string a ser convertido.
|
|
51
|
+
* @param formatnumber - Formatação de ENTRADA e SAÍDA do utilitário: pt-BR="###.###,##" en-US="###,###.##"; Default: "pt-BR".
|
|
52
|
+
*
|
|
53
|
+
* @returns - Numeral em formato de string formatado apenas com separador decimal.
|
|
54
|
+
* @example
|
|
55
|
+
* Informado: '95.12' | Retorna: '9512'
|
|
56
|
+
*/
|
|
57
|
+
static keepOnlyDecimalSeparator: (value: string, formatnumber?: string) => string;
|
|
58
|
+
/**
|
|
59
|
+
* Troca o formato do numeral(string) de "PT-BR" para "EN-US" e vice-versa.
|
|
60
|
+
*
|
|
61
|
+
* @param value - Numeral em formato de string a ser convertido.
|
|
62
|
+
*
|
|
63
|
+
* @returns - Numeral em formato de string formatado de "PT-BR" para "EN-US" e vice-versa.
|
|
64
|
+
* @example
|
|
65
|
+
* Informo: "15,55" | Obtenho: "15.55"
|
|
66
|
+
* @example
|
|
67
|
+
* Informo: "27.99" | Obtenho: "27,99"
|
|
68
|
+
*/
|
|
69
|
+
static changeFormat: (value: string) => string;
|
|
70
|
+
/**
|
|
71
|
+
* Obtém o valor ou o valor padrão, caso o valor seja inválido(NaN/undefined).
|
|
72
|
+
*
|
|
73
|
+
* @param value - Valor a ser validado.
|
|
74
|
+
* @param defaultValue - Valor padrão a ser retornado caso o value seja inválido.
|
|
75
|
+
*
|
|
76
|
+
* @returns - O próprio numeral passado ou zero.
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* Informo: value: 30, defaultValue: 0 | Obtenho: 30
|
|
80
|
+
* @example
|
|
81
|
+
* Informo: value: "30", defaultValue: 0 | Obtenho: 30
|
|
82
|
+
* @example
|
|
83
|
+
* Informo: value: "30abc", defaultValue: 0 | Obtenho: 0
|
|
84
|
+
*/
|
|
85
|
+
static getValueOrDefault: (value: any, defaultValue: number) => number;
|
|
86
|
+
/**
|
|
87
|
+
* Obtém o valor ou zero, caso o valor seja inválido(NaN/undefined).
|
|
88
|
+
*
|
|
89
|
+
* @param value - Numeral a ser validado.
|
|
90
|
+
*
|
|
91
|
+
* @returns - O próprio numeral passado. Caso esse seja inválido retorna zero.
|
|
92
|
+
*/
|
|
93
|
+
static getValueOrZero: (value: any) => number;
|
|
94
|
+
/**
|
|
95
|
+
* Realiza o arredondamento de casas decimais de um numero.
|
|
96
|
+
*
|
|
97
|
+
* @param value - Numeral a ser arredondado.
|
|
98
|
+
* @param decimals - Quantidade de casas decimais ussada no arredondamento.
|
|
99
|
+
*
|
|
100
|
+
* @returns - O próprio numeral arredondado com a quantidade de casas decimais do argumento decimals.
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* Informo: (100.12) | 100.12
|
|
104
|
+
* Informo: (100,12) | NaN
|
|
105
|
+
|
|
106
|
+
* Informo: ("100.12", 1) | 100.1
|
|
107
|
+
* Informo: ("100.12", 2) | 100.12
|
|
108
|
+
* Informo: ("100.12", 3) | 100.12
|
|
109
|
+
|
|
110
|
+
* Informo: ("100.15", 1) | 100.2
|
|
111
|
+
* Informo: ("100.15", 2) | 100.15
|
|
112
|
+
* Informo: ("100.15", 3) | 100.15
|
|
113
|
+
|
|
114
|
+
* Informo: ("100.16", 1) | 100.2
|
|
115
|
+
* Informo: ("100.16", 2) | 100.16
|
|
116
|
+
* Informo: ("100.16", 3) | 100.16
|
|
117
|
+
*/
|
|
118
|
+
static round(value: number, decimals?: number): number;
|
|
119
|
+
/**
|
|
120
|
+
* Determina a ordem de umeros.
|
|
121
|
+
*
|
|
122
|
+
* @param a - Primeio número para comparação.
|
|
123
|
+
* @param b - Segundo número para comparação.
|
|
124
|
+
* @returns - Um numeral negativo se o primeiro argumento é menor que o segundo, zero se os dois são iguais e um numeral positivo quando o primeiro é maior que o segundo.
|
|
125
|
+
*/
|
|
126
|
+
static compare(a: number, b: number): number;
|
|
127
|
+
}
|