@masterkeymaterial/ui 0.0.2 → 0.0.3

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 (140) hide show
  1. package/fesm2022/masterkeymaterial-ui.mjs +6457 -0
  2. package/fesm2022/masterkeymaterial-ui.mjs.map +1 -0
  3. package/package.json +14 -5
  4. package/types/masterkeymaterial-ui.d.ts +928 -0
  5. package/ng-package.json +0 -10
  6. package/src/elements/ui-button/ui-button.css +0 -229
  7. package/src/elements/ui-button/ui-button.html +0 -12
  8. package/src/elements/ui-button/ui-button.ts +0 -133
  9. package/src/elements/ui-check-box/ui-check-box.css +0 -66
  10. package/src/elements/ui-check-box/ui-check-box.html +0 -5
  11. package/src/elements/ui-check-box/ui-check-box.ts +0 -65
  12. package/src/elements/ui-chip/ui-chip.css +0 -24
  13. package/src/elements/ui-chip/ui-chip.html +0 -3
  14. package/src/elements/ui-chip/ui-chip.ts +0 -25
  15. package/src/elements/ui-drop-zone/ui-drop-zone.css +0 -91
  16. package/src/elements/ui-drop-zone/ui-drop-zone.html +0 -8
  17. package/src/elements/ui-drop-zone/ui-drop-zone.ts +0 -153
  18. package/src/elements/ui-file-list/ui-file-list.css +0 -43
  19. package/src/elements/ui-file-list/ui-file-list.html +0 -17
  20. package/src/elements/ui-file-list/ui-file-list.ts +0 -22
  21. package/src/elements/ui-list-errors/ui-list-errors.css +0 -30
  22. package/src/elements/ui-list-errors/ui-list-errors.html +0 -10
  23. package/src/elements/ui-list-errors/ui-list-errors.ts +0 -14
  24. package/src/elements/ui-loading/ui-loading.css +0 -13
  25. package/src/elements/ui-loading/ui-loading.html +0 -1
  26. package/src/elements/ui-loading/ui-loading.ts +0 -10
  27. package/src/elements/ui-menu/ui-menu.css +0 -69
  28. package/src/elements/ui-menu/ui-menu.html +0 -20
  29. package/src/elements/ui-menu/ui-menu.ts +0 -267
  30. package/src/elements/ui-procurar/ui-procurar.css +0 -48
  31. package/src/elements/ui-procurar/ui-procurar.html +0 -14
  32. package/src/elements/ui-procurar/ui-procurar.ts +0 -82
  33. package/src/elements/ui-progress/ui-progress.css +0 -0
  34. package/src/elements/ui-progress/ui-progress.html +0 -1
  35. package/src/elements/ui-progress/ui-progress.ts +0 -15
  36. package/src/elements/ui-select/ui-select.css +0 -211
  37. package/src/elements/ui-select/ui-select.html +0 -46
  38. package/src/elements/ui-select/ui-select.ts +0 -482
  39. package/src/elements/ui-slide/ui-slide.css +0 -75
  40. package/src/elements/ui-slide/ui-slide.html +0 -7
  41. package/src/elements/ui-slide/ui-slide.ts +0 -61
  42. package/src/fields/Base/BaseFieldsForm/BaseFieldsForm.component.ts +0 -113
  43. package/src/fields/Base/BaseFieldsValues/BaseFieldsValues.ts +0 -112
  44. package/src/fields/Formulario/Formulario.ts +0 -1056
  45. package/src/fields/Formulario/form-action/form-action.css +0 -98
  46. package/src/fields/Formulario/form-action/form-action.html +0 -75
  47. package/src/fields/Formulario/form-action/form-action.ts +0 -187
  48. package/src/fields/Formulario/form-controls/form-controls.css +0 -108
  49. package/src/fields/Formulario/form-controls/form-controls.html +0 -105
  50. package/src/fields/Formulario/form-controls/form-controls.ts +0 -122
  51. package/src/fields/Formulario/form-fase/form-fase.css +0 -84
  52. package/src/fields/Formulario/form-fase/form-fase.html +0 -24
  53. package/src/fields/Formulario/form-fase/form-fase.ts +0 -157
  54. package/src/fields/Formulario/form-filter/form-filter.css +0 -50
  55. package/src/fields/Formulario/form-filter/form-filter.html +0 -25
  56. package/src/fields/Formulario/form-filter/form-filter.ts +0 -53
  57. package/src/fields/Formulario/form-no-action/form-no-action.css +0 -32
  58. package/src/fields/Formulario/form-no-action/form-no-action.html +0 -12
  59. package/src/fields/Formulario/form-no-action/form-no-action.ts +0 -21
  60. package/src/fields/Formulario/formated-values/formated-values.css +0 -104
  61. package/src/fields/Formulario/formated-values/formated-values.html +0 -15
  62. package/src/fields/Formulario/formated-values/formated-values.ts +0 -186
  63. package/src/fields/Formulario/single-values/single-values.css +0 -88
  64. package/src/fields/Formulario/single-values/single-values.html +0 -11
  65. package/src/fields/Formulario/single-values/single-values.ts +0 -65
  66. package/src/fields/autocomplete/autocomplete.css +0 -94
  67. package/src/fields/autocomplete/autocomplete.html +0 -38
  68. package/src/fields/autocomplete/autocomplete.ts +0 -294
  69. package/src/fields/button/button.css +0 -7
  70. package/src/fields/button/button.html +0 -19
  71. package/src/fields/button/button.ts +0 -38
  72. package/src/fields/checkbox/checkbox.css +0 -27
  73. package/src/fields/checkbox/checkbox.html +0 -20
  74. package/src/fields/checkbox/checkbox.ts +0 -44
  75. package/src/fields/color/CirculoColorido/circulocolorido.css +0 -50
  76. package/src/fields/color/CirculoColorido/circulocolorido.html +0 -8
  77. package/src/fields/color/CirculoColorido/circulocolorido.ts +0 -24
  78. package/src/fields/color/color.css +0 -15
  79. package/src/fields/color/color.html +0 -24
  80. package/src/fields/color/color.ts +0 -47
  81. package/src/fields/date/date.html +0 -19
  82. package/src/fields/date/date.ts +0 -29
  83. package/src/fields/datetime/datetime.html +0 -19
  84. package/src/fields/datetime/datetime.ts +0 -29
  85. package/src/fields/display/display.css +0 -7
  86. package/src/fields/display/display.html +0 -20
  87. package/src/fields/display/display.ts +0 -43
  88. package/src/fields/editor/editor.css +0 -51
  89. package/src/fields/editor/editor.html +0 -37
  90. package/src/fields/editor/editor.ts +0 -218
  91. package/src/fields/email/email.html +0 -19
  92. package/src/fields/email/email.ts +0 -29
  93. package/src/fields/fields.css +0 -180
  94. package/src/fields/generic/generic.html +0 -3
  95. package/src/fields/generic/generic.ts +0 -91
  96. package/src/fields/hidden/hidden.html +0 -3
  97. package/src/fields/hidden/hidden.ts +0 -20
  98. package/src/fields/icon/icon.css +0 -19
  99. package/src/fields/icon/icon.html +0 -27
  100. package/src/fields/icon/icon.ts +0 -31
  101. package/src/fields/multifactor/multifactor.css +0 -21
  102. package/src/fields/multifactor/multifactor.html +0 -39
  103. package/src/fields/multifactor/multifactor.ts +0 -106
  104. package/src/fields/multikv/multikv.css +0 -43
  105. package/src/fields/multikv/multikv.html +0 -47
  106. package/src/fields/multikv/multikv.ts +0 -88
  107. package/src/fields/multitext/multitext.css +0 -36
  108. package/src/fields/multitext/multitext.html +0 -38
  109. package/src/fields/multitext/multitext.ts +0 -75
  110. package/src/fields/number/number.html +0 -20
  111. package/src/fields/number/number.ts +0 -35
  112. package/src/fields/password/password.html +0 -23
  113. package/src/fields/password/password.ts +0 -37
  114. package/src/fields/search/search.css +0 -0
  115. package/src/fields/search/search.html +0 -19
  116. package/src/fields/search/search.ts +0 -54
  117. package/src/fields/select/select.css +0 -15
  118. package/src/fields/select/select.html +0 -18
  119. package/src/fields/select/select.ts +0 -52
  120. package/src/fields/slide/slide.css +0 -27
  121. package/src/fields/slide/slide.html +0 -20
  122. package/src/fields/slide/slide.ts +0 -45
  123. package/src/fields/text/text.html +0 -19
  124. package/src/fields/text/text.ts +0 -30
  125. package/src/fields/textarea/textarea.css +0 -4
  126. package/src/fields/textarea/textarea.html +0 -20
  127. package/src/fields/textarea/textarea.ts +0 -31
  128. package/src/fields/time/time.html +0 -19
  129. package/src/fields/time/time.ts +0 -29
  130. package/src/fields/upload/upload.css +0 -24
  131. package/src/fields/upload/upload.html +0 -41
  132. package/src/fields/upload/upload.ts +0 -137
  133. package/src/interfaces/interfaces.ts +0 -61
  134. package/src/public-api.ts +0 -38
  135. package/src/util/ClassOf.pipe.ts +0 -11
  136. package/src/util/JsonColorido.pipe.ts +0 -11
  137. package/src/util/util.ts +0 -2151
  138. package/tsconfig.lib.json +0 -16
  139. package/tsconfig.lib.prod.json +0 -9
  140. package/tsconfig.spec.json +0 -13
@@ -1,41 +0,0 @@
1
- <div class="fieldContainer" [class.isTouched]="campo()?.touched" [class.showTouched]="form().showTouched()"
2
- [class.isInvalid]="campo()?.invalid" [class.isDisabled]="campo()?.disabled" [class.isReadonly]="campo()?.readonly"
3
- [class.isNeed]="campo()?.need" [class.isPending]="campo()?.pending" [class.isEmpty]="campo()?.empty">
4
- <div class="fieldLabel" (click)="onClickLabel()" [class.hideLabel]="campo()?.hideLabel">
5
- @if(campo()?.icone){ <div class="fieldIcon"><i [class]="campo()?.icone"></i></div> }
6
- {{ campo()?.titulo }}
7
- </div>
8
- <div class="fieldControl doCampo">
9
- <div class="fieldEffect">
10
- <div class="fieldField FieldUpload">
11
-
12
- <ui-drop-zone (changed)="onDropped($event)" [disabled]="campo()?.disabled" (clicked)="onClickUpload()"
13
- [sobrepor]="sobrepondo()">
14
- @if(filesList().length > 0) {
15
-
16
- <ui-file-list [filesList]="filesList()" (remove)="onRemove($event)"
17
- [disabled]="campo()?.disabled"></ui-file-list>
18
-
19
- } @else {
20
-
21
- <div class="fieldDidplayUpload">
22
- <i class="bi bi-cloud-upload-fill"></i>
23
- <div class="f-s-16"><span class="text-primary">Solte</span> seu arquivo aqui</div>
24
- <div class="f-s-14"><span class="text-primary">ou clique</span> para procurar</div>
25
- </div>
26
-
27
- }
28
- </ui-drop-zone>
29
-
30
- <div [style.display]="'none'">
31
- <input #inputFile type="file" [accept]="acceptFormats" [multiple]="campo()?.multiple"
32
- (change)="onChangedInputFile($event)" [disabled]="campo()?.disabled" />
33
- </div>
34
- </div>
35
- </div>
36
- </div>
37
- @if(acceptFormats){
38
- <div class="dica">Formatos: {{ acceptFormatsShow() }}</div>
39
- }
40
- <ui-list-errors [errors]="campo()?.errors" [dica]="campo()?.dica" [show]="campo()?.touched"></ui-list-errors>
41
- </div>
@@ -1,137 +0,0 @@
1
- import { Component, computed, effect, ElementRef, OnInit, signal, viewChild } from '@angular/core';
2
- import { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';
3
- import { LibUtil, LOG } from '../../util/util';
4
- import { UiDropZone } from '../../elements/ui-drop-zone/ui-drop-zone';
5
- import { IDropOutput, IFileMetadata } from '../../interfaces/interfaces';
6
- import { UiFileList } from '../../elements/ui-file-list/ui-file-list';
7
- import { UiListErrors } from "../../elements/ui-list-errors/ui-list-errors";
8
-
9
- @Component({
10
- selector: 'fields-upload',
11
- templateUrl: './upload.html',
12
- styleUrls: ['../fields.css', './upload.css'],
13
- imports: [UiDropZone, UiFileList, UiListErrors],
14
- })
15
- export class FieldsUpload extends BaseFieldsForm implements OnInit {
16
-
17
- multiple: boolean = false;
18
- inputFile = viewChild('inputFile', { read: ElementRef })
19
- acceptFormats: string = "";
20
- sobrepondo = signal<boolean>(true);
21
-
22
- acceptFormatsShow = computed<string>(() => {
23
- return this.acceptFormats.split(',').map(ext => ext.trim().toUpperCase().slice(1)).join(', ');
24
- });
25
-
26
- constructor() {
27
- super();
28
- effect(() => {
29
- const val = this.value();
30
- let empty = val === null || val === undefined || val === '';
31
- this.updateCampo({ empty });
32
- this.sobrepondo.set(empty);
33
- });
34
- }
35
- override ngOnInit() {
36
- super.ngOnInit();
37
- this.multiple = this.campo()?.multiple ?? false;
38
- this.acceptFormats = this.campo()?.accept ?? "";
39
- }
40
-
41
- onChange(newValue: IFileMetadata[]) {
42
- let campo = this.campo();
43
- if (!campo) return;
44
- if (campo.disabled) return;
45
- // Filtra apenas os arquivos válidos
46
- newValue = newValue.filter(file => this.validarImagem(file));
47
- // Atualiza o valor do campo
48
- let valueToUpdate: any = this.multiple ? newValue : newValue[newValue.length - 1];
49
- this.updateValue(valueToUpdate);
50
-
51
- this.campo()?.onInput?.(this.form());
52
- this.onChangeEmit();
53
- }
54
-
55
- filesList = computed<IFileMetadata[]>(() => {
56
- let val = (this.value() as IFileMetadata[] | IFileMetadata | string | undefined);
57
- if (this.multiple) {
58
- // Quando é multiplo, ja vem um array.
59
- return val as IFileMetadata[];
60
- } else {
61
- // Quando não é multiplo, vem um objeto, mas precisa ser tratado como array.
62
- if (val && val !== '') {
63
- return [val as IFileMetadata];
64
- } else {
65
- return [];
66
- }
67
- }
68
- });
69
-
70
- // Adiciona arquivos recebidos do DropZone
71
- onDropped(content: IDropOutput) {
72
- if (this.campo()?.disabled) return;
73
- if (content.tipo !== "file" || !content.data || !(content.data instanceof Array)) return;
74
- let dataFiles: IFileMetadata[] = content.data;
75
- this.onAddFile(dataFiles);
76
- }
77
-
78
- // Remove arquivo da lista
79
- onRemove(file: IFileMetadata) {
80
- if (this.campo()?.disabled) return;
81
- let currentFiles = this.filesList();
82
- const index = currentFiles.findIndex(f => f.size === file.size);
83
- if (index > -1) {
84
- currentFiles.splice(index, 1);
85
- this.onChange(currentFiles);
86
- }
87
- }
88
-
89
- onAddFile(newFiles: IFileMetadata[]) {
90
- if (this.campo()?.disabled) return;
91
- let newValues: IFileMetadata[] = [];
92
- if (this.multiple) {
93
- newValues = [
94
- ...this.filesList() ?? [],
95
- ...newFiles,
96
- ];
97
- } else {
98
- newValues = newFiles.slice(-1);
99
- }
100
- this.onChange(newValues);
101
- }
102
-
103
- async onChangedInputFile(ev: Event) {
104
- if (this.campo()?.disabled) return;
105
- const inputElement = ev.target as HTMLInputElement;
106
- if (inputElement.files && inputElement.files.length > 0) {
107
- for await (let newFile of inputElement.files) {
108
- let lastIndexOf = newFile.name.lastIndexOf(".");
109
- let extension = newFile.name.slice(lastIndexOf);
110
- let base64: string | null = await LibUtil.fileReader(newFile);
111
- if (!base64) { LOG(1, `❌ Ocorreu um erro com o arquivo ${newFile.name}.`); continue; }
112
- this.onAddFile([{
113
- base64,
114
- name: newFile.name,
115
- size: newFile.size,
116
- extension, // inclui o "."
117
- type: newFile.type,
118
- lastModifiedIso: new Date(newFile.lastModified).toISOString(),
119
- }]);
120
- }
121
- inputElement.value = '';
122
- }
123
- }
124
-
125
- validarImagem(file: IFileMetadata): boolean {
126
- if (!file.extension) return false;
127
- const validExtensions = this.acceptFormats.split(',').map(ext => ext.trim().toLowerCase());
128
- return validExtensions.includes(file.extension.toLowerCase());
129
- }
130
-
131
- onClickUpload() {
132
- // Se o alvo do click for mesmo o elemento dropzone (CSS ignora alguns elementos)
133
- if (this.inputFile() && this.inputFile()?.nativeElement) {
134
- this.inputFile()?.nativeElement.click();
135
- }
136
- }
137
- }
@@ -1,61 +0,0 @@
1
-
2
- // Uma interface simples e genérica: Chave/Valor
3
- export interface IKV {
4
- k: string | number | null | undefined, // Chave
5
- v?: string | undefined, // Valor
6
- html?: string, // Valor formatado em HTML
7
- }
8
-
9
- export interface IKV_ext extends IKV {
10
- [key: string]: any; // Permite campos adicionais
11
- }
12
-
13
- export type ITipoBotao =
14
- | "nofill"
15
- | "fill"
16
- | "outlined"
17
- | "icon"
18
- | "big"
19
- | "raised"
20
- | "menu-item" // Botão dentro de um overlay de menu (ver: ui-menu)
21
- | "menu-item-category"
22
- | "sidebar-item" // Botão utilizado em áreas grandes como Sidebar
23
- | "sidebar-item-category";
24
-
25
- export type ITiposTema =
26
- | "" // Sem Tema
27
- | "primary"
28
- | "secondary"
29
- | "high"
30
- | "success"
31
- | "warning"
32
- | "error"
33
- | "info"
34
- | "white"
35
- | "black"
36
- | "card";
37
-
38
- export type IDropZoneEvent = "dragover" | "drop" | "dragenter" | "dragleave" | "click";
39
-
40
- export type IDropType = "file" | "json" | "text" | "html" | "url" | "unknown";
41
-
42
- export interface IDropOutput {
43
- tipo: IDropType;
44
- timestamp: string;
45
- types: string[];
46
- data?: any;
47
- }
48
-
49
- export interface IFileMetadata {
50
- url?: string,
51
- base64?: string, // 'data:...'
52
- name?: string, // 'name.jpg'
53
- size?: number, // 1083874 (bytes)
54
- extension?: string, // '.jpg'
55
- type?: string, // 'image/jpg'
56
- lastModifiedIso?: string, // '2025-07-09T15:57:00.130Z' => 'yyyy-mm-ddThh:mm:ss.mmmZ'
57
- }
58
-
59
- export type IPosicoesFloating = "top" | "right" | "bottom" | "left" | "top-start" | "top-end" | "right-start" | "right-end" | "bottom-start" | "bottom-end" | "left-start" | "left-end";
60
-
61
- export type UiProgressMode = 'determinate' | 'indeterminate' | 'buffer' | 'query';
package/src/public-api.ts DELETED
@@ -1,38 +0,0 @@
1
- // Exportar primeiro os tipos
2
- export type { IKV, IKV_ext, IFileMetadata, ITipoBotao, ITiposTema, IDropZoneEvent, IDropType, IDropOutput, UiProgressMode } from './interfaces/interfaces';
3
-
4
- // Tipos mais específicos, enuns, interfaces e funções uteis.
5
- export * from './util/util';
6
- export * from './fields/Formulario/Formulario';
7
-
8
- // Exportar as base
9
- export * from './fields/Base/BaseFieldsValues/BaseFieldsValues';
10
- export * from './fields/Base/BaseFieldsForm/BaseFieldsForm.component';
11
-
12
- // Exportar componentes individuais (elementos)
13
- export * from './elements/ui-button/ui-button';
14
- export * from './elements/ui-chip/ui-chip';
15
- export * from './elements/ui-drop-zone/ui-drop-zone';
16
- export * from './elements/ui-file-list/ui-file-list';
17
- export * from './elements/ui-select/ui-select';
18
- export * from './elements/ui-procurar/ui-procurar';
19
- export * from './elements/ui-progress/ui-progress';
20
- export * from './elements/ui-slide/ui-slide';
21
- export * from './elements/ui-check-box/ui-check-box';
22
- export * from './elements/ui-list-errors/ui-list-errors';
23
- export * from './elements/ui-loading/ui-loading';
24
- export * from './elements/ui-menu/ui-menu';
25
-
26
-
27
-
28
- // Os componente de campo não são exportados. Utilize FormAction, ou similar, com os campos pré configurados.
29
-
30
- // Exportar componentes de formulário
31
- export * from './fields/Formulario/form-filter/form-filter';
32
- export * from './fields/Formulario/form-action/form-action';
33
- export * from './fields/Formulario/form-no-action/form-no-action';
34
- export * from './fields/Formulario/formated-values/formated-values';
35
- export * from './fields/Formulario/single-values/single-values';
36
-
37
- // Exportar generic por último (depende de todos os outros)
38
- export * from './fields/generic/generic';
@@ -1,11 +0,0 @@
1
- import { Pipe, PipeTransform } from '@angular/core';
2
- import { LibUtil } from './util';
3
-
4
- @Pipe({ name: 'classOf' })
5
- export class ClassOfPipe implements PipeTransform {
6
-
7
- transform(value: any, args?: any): any {
8
- return LibUtil.classof(value);
9
- }
10
-
11
- }
@@ -1,11 +0,0 @@
1
- import { Pipe, PipeTransform } from '@angular/core';
2
- import { LibUtil } from './util';
3
-
4
- @Pipe({ name: 'jsonColorido' })
5
- export class JsonColoridoPipe implements PipeTransform {
6
-
7
- transform(value: any, args?: any): string {
8
- return LibUtil.formatJson(value, true);
9
- }
10
-
11
- }