@sankhyalabs/ezui 6.2.0-dev.3 → 6.2.0-dev.5
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/dist/cjs/{app-globals-cdb08d04.js → app-globals-0a67e214.js} +3 -1
- package/dist/cjs/ez-classic-input.cjs.entry.js +318 -0
- package/dist/cjs/ez-classic-text-area.cjs.entry.js +86 -0
- package/dist/cjs/ez-icon.cjs.entry.js +1 -1
- package/dist/cjs/ez-list-item.cjs.entry.js +22 -0
- package/dist/cjs/ezui.cjs.js +2 -2
- package/dist/cjs/index-a7b0c73d.js +12 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/collection/collection-manifest.json +3 -0
- package/dist/collection/components/ez-classic-input/ez-classic-input.css +140 -0
- package/dist/collection/components/ez-classic-input/ez-classic-input.js +547 -0
- package/dist/collection/components/ez-classic-input/interfaces/optionsSetFocus.js +1 -0
- package/dist/collection/components/ez-classic-input/utils/maskFormatter.js +194 -0
- package/dist/collection/components/ez-classic-text-area/ez-classic-text-area.css +179 -0
- package/dist/collection/components/ez-classic-text-area/ez-classic-text-area.js +479 -0
- package/dist/collection/components/ez-classic-text-area/interfaces/optionsSetFocus.js +1 -0
- package/dist/collection/components/ez-icon/ez-icon.css +23 -18
- package/dist/collection/components/ez-list-item/ez-list-item.css +61 -0
- package/dist/collection/components/ez-list-item/ez-list-item.js +78 -0
- package/dist/collection/global/app-init.js +3 -1
- package/dist/custom-elements/index.d.ts +18 -0
- package/dist/custom-elements/index.js +423 -7
- package/dist/esm/{app-globals-8c57b015.js → app-globals-8a94d86c.js} +3 -1
- package/dist/esm/ez-classic-input.entry.js +314 -0
- package/dist/esm/ez-classic-text-area.entry.js +82 -0
- package/dist/esm/ez-icon.entry.js +1 -1
- package/dist/esm/ez-list-item.entry.js +18 -0
- package/dist/esm/ezui.js +2 -2
- package/dist/esm/index-baa5e267.js +12 -0
- package/dist/esm/loader.js +2 -2
- package/dist/ezui/ezui.esm.js +1 -1
- package/dist/ezui/p-48effc69.entry.js +1 -0
- package/dist/ezui/p-b2b1a1a7.entry.js +1 -0
- package/dist/ezui/p-d6742c1e.entry.js +1 -0
- package/dist/ezui/p-e78e87f5.entry.js +1 -0
- package/dist/types/components/ez-classic-input/ez-classic-input.d.ts +78 -0
- package/dist/types/components/ez-classic-input/interfaces/optionsSetFocus.d.ts +4 -0
- package/dist/types/components/ez-classic-input/utils/maskFormatter.d.ts +30 -0
- package/dist/types/components/ez-classic-text-area/ez-classic-text-area.d.ts +61 -0
- package/dist/types/components/ez-classic-text-area/interfaces/optionsSetFocus.d.ts +4 -0
- package/dist/types/components/ez-list-item/ez-list-item.d.ts +9 -0
- package/dist/types/components.d.ts +401 -0
- package/package.json +1 -1
- package/react/components.d.ts +3 -0
- package/react/components.js +3 -0
- package/react/components.js.map +1 -1
- package/dist/ezui/p-7eb6115c.entry.js +0 -1
- /package/dist/ezui/{p-76ad2e26.js → p-07819d50.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as i,c as t,h as s,H as e,g as o}from"./p-23a36bb6.js";import{ElementIDUtils as r}from"@sankhyalabs/core";class a{constructor(i){this.mask=i,this.maskChars={"#":i=>/\d/.test(i),U:i=>/[a-zA-Z]/.test(i),L:i=>/[a-zA-Z]/.test(i),A:i=>/[a-zA-Z0-9]/.test(i),"?":i=>/[a-zA-Z]/.test(i),"*":()=>!0}}format(i){if(!i||!this.mask)return i;const t=this.removeIncompatibleChars(i);let s="",e=0,o=0;for(;o<this.mask.length&&e<t.length;){const i=this.mask[o],r=t[e];if("'"!==i){if(this.maskChars[i]){if(!this.maskChars[i](r)){e++;continue}s+="U"===i?r.toUpperCase():"L"===i?r.toLowerCase():r,e++}else s+=i,r===i&&e++;o++}else o++,o<this.mask.length&&(s+=this.mask[o],o++)}return s}removeIncompatibleChars(i){let t="";for(let s=0;s<i.length;s++){const e=i[s];let o=!1;for(const i in this.maskChars)if(this.maskChars[i](e)){o=!0;break}if(!o)for(let i=0;i<this.mask.length;i++)if(this.mask[i]===e&&!this.maskChars[this.mask[i]]){o=!0;break}o&&(t+=e)}return t}removeMask(i){if(!i||!this.mask)return i;let t="",s=0,e=0;for(;s<i.length&&e<this.mask.length;){const o=this.mask[e],r=i[s];"'"!==o?(this.maskChars[o]?(this.maskChars[o](r)&&(t+=r),s++):r===o&&s++,e++):(e++,e<this.mask.length&&(r===this.mask[e]&&s++,e++))}for(;s<i.length;){const e=i[s];/[a-zA-Z0-9]/.test(e)&&(t+=e),s++}return t}getMask(){return this.mask}generatePlaceholder(){if(!this.mask)return"";let i="",t=0;for(;t<this.mask.length;){const s=this.mask[t];if("'"!==s){if(this.maskChars[s])switch(s){case"#":case"~":i+="0";break;case"U":case"L":case"?":case"A":i+="A";break;default:i+="_"}else i+=s;t++}else t++,t<this.mask.length&&(i+=this.mask[t],t++)}return i}}const c=class{constructor(s){i(this,s),this.ezChange=t(this,"ezChange",7),this.ezBlur=t(this,"ezBlur",7),this.iconClick=t(this,"iconClick",7),this.type="text",this.value=void 0,this.label=void 0,this.helpText=void 0,this.placeholder=void 0,this.enabled=!0,this.readonly=!1,this.name=void 0,this.minlength=void 0,this.maxlength=void 0,this.leftIconName=void 0,this.rightIconName=void 0,this.rightIconTooltip=void 0,this.leftIconTooltip=void 0,this.state="default",this.leftIconClickable=!1,this.rightIconClickable=!1,this.mask=void 0,this.emitMaskedValue=!1}async setFocus(i){(null==i?void 0:i.selectText)&&this._inputElem.select(),(null==i?void 0:i.preventScroll)||this._inputElem.scrollIntoView({behavior:"smooth",block:"center"}),this._inputElem.focus({preventScroll:!0})}async setBlur(){this._inputElem.blur()}onInput(i){try{const t=i.target;let s=t.value;if(this._maskFormatter){const i=this._maskFormatter.format(s),e=this._maskFormatter.removeMask(i);t.value=i,this.value=e,this.ezChange.emit(this.emitMaskedValue?i:e)}else this.value=s,this.ezChange.emit(s)}catch(i){console.error("Error processing input event:",i)}}onBlur(){this.ezBlur.emit(this.value)}handleIconClick(i,t){this.enabled&&("left"===t&&!this.leftIconClickable||"right"===t&&!this.rightIconClickable?this.setFocus({preventScroll:!0}):(i.stopPropagation(),this.iconClick.emit({icon:t})))}addInfoId(){this._element&&r.addIDInfo(this._element),this._inputElem&&r.addIDInfo(this._inputElem,"classic-input",{id:"embedded"})}componentWillLoad(){this.mask&&!this._maskFormatter&&(this._maskFormatter=new a(this.mask)),!this.placeholder&&this._maskFormatter&&(this.placeholder=this._maskFormatter.generatePlaceholder())}componentDidLoad(){if(this.value&&this._maskFormatter&&this._inputElem){const i=this._maskFormatter.format(this.value);this._inputElem.value=i}else this._inputElem.value=this.value||"";this.addInfoId()}render(){return s(e,null,s("label",{title:this.label,htmlFor:this.name},this.label),s("div",{class:"input-container","data-state":this.state,"data-disabled":(!this.enabled).toString(),onClick:()=>this.setFocus({preventScroll:!0})},this.leftIconName&&s("ez-icon",{iconName:this.leftIconName,title:this.leftIconTooltip,onClick:i=>this.handleIconClick(i,"left"),class:{"icon-clickable":this.leftIconClickable}}),s("input",{ref:i=>this._inputElem=i,id:this.name,type:this.type,title:this.value,placeholder:this.placeholder,disabled:!this.enabled,readonly:this.readonly,name:this.name,minlength:this.minlength,maxlength:this.maxlength,onInput:this.onInput.bind(this),onBlur:this.onBlur.bind(this)}),this.rightIconName&&s("ez-icon",{iconName:this.rightIconName,title:this.rightIconTooltip,onClick:i=>this.handleIconClick(i,"right"),class:{"icon-clickable":this.rightIconClickable}})),this.helpText&&s("span",{title:this.helpText},this.helpText))}get _element(){return o(this)}};c.style=':host{display:flex;flex-direction:column;align-items:flex-start;box-sizing:border-box;font-family:var(--font--pattern, Arial, sans-serif);font-size:var(--font-size--default, 14px);color:var(--color--ocean-green-1000, #00281D);border:none;padding:0;--ez-classic-input--label-color:var(--color--ocean-green-1000, #00281D);--ez-classic-input--border-color-default:var(--color--gray-200, #D2D2D3);--ez-classic-input--border-color-focus:var(--color--gray-300, #A4A5A7);--ez-classic-input--border-color-success:var(--color--green-600, #157A00);--ez-classic-input--border-color-error:var(--color--red-600, #BD0025);--ez-classic-input--border-color-warning:var(--color--yellow-600, #EFB103);--ez-classic-input--background-color:var(--color--gray-70, #FFFFFF);--ez-classic-input--background-color-disabled:var(--color--gray-90, #EAEAEA);--ez-classic-input--text-color:var(--color--ocean-green-1000, #00281D);--ez-classic-input--placeholder-color:#bdbdbd;--ez-classic-input--icon-color:var(--color--gray-400, #77777A);--ez-classic-input--helptext-color:var(--color--ocean-green-1000, #00281D);--ez-classic-input--height:56px}.input-container{display:flex;flex-direction:row;align-items:center;width:100%;border:none;border-radius:var(--border--radius-8, 8px);padding:var(--space--16, 16px);box-sizing:border-box;gap:var(--space--10, 10px);margin:var(--space--4, 4px) var(--space--2, 2px);transition:box-shadow 0.2s cubic-bezier(0.4, 0, 0.2, 1);height:var(--ez-classic-input--height);background-color:var(--ez-classic-input--background-color)}.input-container,.input-container[data-state="default"]{box-shadow:0 0 0 1px var(--ez-classic-input--border-color-default)}.input-container[data-state="success"]{box-shadow:0 0 0 var(--space--2, 2px) var(--ez-classic-input--border-color-success)}.input-container[data-state="error"]{box-shadow:0 0 0 var(--space--2, 2px) var(--ez-classic-input--border-color-error)}.input-container[data-state="warning"]{box-shadow:0 0 0 var(--space--2, 2px) var(--ez-classic-input--border-color-warning)}.input-container:focus-within{box-shadow:0 0 0 var(--space--2, 2px) var(--ez-classic-input--border-color-focus)}ez-icon{min-width:var(--space--24, 24px);color:var(--ez-classic-input--icon-color)}input{flex:1;border:none;outline:none;background:transparent;height:100%;width:100%;padding:0;font-family:var(--font--pattern, Arial, sans-serif);font-size:var(--font-size--default, 14px);color:var(--color--ocean-green-1000, #00281D);text-overflow:ellipsis;color:var(--ez-classic-input--text-color)}input::placeholder{color:var(--ez-classic-input--placeholder-color)}.input-container[data-disabled="true"]{cursor:not-allowed;background:var(--ez-classic-input--background-color-disabled);border-color:var(--ez-classic-input--border-color-default)}.input-container[data-disabled="true"]>*{cursor:not-allowed}@keyframes ez-helptext-fadein{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}span{font-size:var(--font-size--xsmall, 10px);line-height:var(--line-height--16, 16px);overflow:hidden;text-overflow:ellipsis;animation:ez-helptext-fadein 0.3s ease;color:var(--ez-classic-input--helptext-color)}label{display:block;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:var(--line-height--20, 20px);color:var(--ez-classic-input--label-color)}.icon-clickable{cursor:pointer}';export{c as ez_classic_input}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { EventEmitter } from '../../stencil-public-runtime';
|
|
2
|
+
import { OptionsSetFocus } from './interfaces/optionsSetFocus';
|
|
3
|
+
export declare class EzClassicInput {
|
|
4
|
+
_element: HTMLElement;
|
|
5
|
+
private _inputElem?;
|
|
6
|
+
private _maskFormatter?;
|
|
7
|
+
/** Tipo do input (ex: text, password, email, etc) */
|
|
8
|
+
type: string;
|
|
9
|
+
/** Valor do input */
|
|
10
|
+
value?: string;
|
|
11
|
+
/** Texto do label exibido acima do input */
|
|
12
|
+
label?: string;
|
|
13
|
+
/** Texto de ajuda exibido abaixo do input */
|
|
14
|
+
helpText?: string;
|
|
15
|
+
/** Placeholder do input */
|
|
16
|
+
placeholder?: string;
|
|
17
|
+
/** Define se o input está habilitado */
|
|
18
|
+
enabled?: boolean;
|
|
19
|
+
/** Define se o input é somente leitura */
|
|
20
|
+
readonly?: boolean;
|
|
21
|
+
/** Nome do input */
|
|
22
|
+
name?: string;
|
|
23
|
+
/** Tamanho mínimo do valor */
|
|
24
|
+
minlength?: number;
|
|
25
|
+
/** Tamanho máximo do valor */
|
|
26
|
+
maxlength?: number;
|
|
27
|
+
/** Nome do ícone à esquerda */
|
|
28
|
+
leftIconName?: string;
|
|
29
|
+
/** Nome do ícone à direita */
|
|
30
|
+
rightIconName?: string;
|
|
31
|
+
/** Título do ícone à direita (tooltip) */
|
|
32
|
+
rightIconTooltip?: string;
|
|
33
|
+
/** Título do ícone à esquerda (tooltip) */
|
|
34
|
+
leftIconTooltip?: string;
|
|
35
|
+
/** Estado visual do input: default, error, success ou warning */
|
|
36
|
+
state?: "default" | "error" | "success" | "warning";
|
|
37
|
+
/** Define se o ícone da esquerda é clicável */
|
|
38
|
+
leftIconClickable?: boolean;
|
|
39
|
+
/** Define se o ícone da direita é clicável */
|
|
40
|
+
rightIconClickable?: boolean;
|
|
41
|
+
/** Aplica uma máscara no conteúdo conforme o padrão estabelecido.
|
|
42
|
+
* Para mais informações acesse:
|
|
43
|
+
* https://gilded-nasturtium-6b64dd.netlify.app/docs/utilities/api/classes/maskformatter/
|
|
44
|
+
*/
|
|
45
|
+
mask?: string;
|
|
46
|
+
/** Define se o valor emitido pelo evento ezChange deve conter a máscara aplicada (padrão: false) */
|
|
47
|
+
emitMaskedValue?: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Evento disparado quando o valor do input muda.
|
|
50
|
+
*/
|
|
51
|
+
ezChange: EventEmitter<string>;
|
|
52
|
+
/**
|
|
53
|
+
* Evento disparado quando o input perde o foco.
|
|
54
|
+
*/
|
|
55
|
+
ezBlur: EventEmitter<string>;
|
|
56
|
+
/**
|
|
57
|
+
* Evento disparado quando um ícone é clicado.
|
|
58
|
+
* Payload: { icon: "left" | "right" }
|
|
59
|
+
*/
|
|
60
|
+
iconClick: EventEmitter<{
|
|
61
|
+
icon: "left" | "right";
|
|
62
|
+
}>;
|
|
63
|
+
/**
|
|
64
|
+
* Aplica o foco no campo.
|
|
65
|
+
*/
|
|
66
|
+
setFocus(option?: OptionsSetFocus): Promise<void>;
|
|
67
|
+
/**
|
|
68
|
+
* Remove o foco do campo.
|
|
69
|
+
*/
|
|
70
|
+
setBlur(): Promise<void>;
|
|
71
|
+
private onInput;
|
|
72
|
+
private onBlur;
|
|
73
|
+
private handleIconClick;
|
|
74
|
+
private addInfoId;
|
|
75
|
+
componentWillLoad(): void;
|
|
76
|
+
componentDidLoad(): void;
|
|
77
|
+
render(): any;
|
|
78
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export declare class MaskFormatter {
|
|
2
|
+
private mask;
|
|
3
|
+
private maskChars;
|
|
4
|
+
constructor(mask: string);
|
|
5
|
+
/**
|
|
6
|
+
* Formata a string de acordo com a máscara
|
|
7
|
+
* @param value String a ser formatada
|
|
8
|
+
* @returns String formatada
|
|
9
|
+
*/
|
|
10
|
+
format(value: string): string;
|
|
11
|
+
/**
|
|
12
|
+
* Remove caracteres que não são compatíveis com nenhuma posição da máscara
|
|
13
|
+
*/
|
|
14
|
+
private removeIncompatibleChars;
|
|
15
|
+
/**
|
|
16
|
+
* Remove a máscara de uma string formatada
|
|
17
|
+
* @param formattedValue String formatada
|
|
18
|
+
* @returns String sem máscara
|
|
19
|
+
*/
|
|
20
|
+
removeMask(formattedValue: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* Retorna a máscara configurada
|
|
23
|
+
*/
|
|
24
|
+
getMask(): string;
|
|
25
|
+
/**
|
|
26
|
+
* Gera um placeholder baseado na máscara
|
|
27
|
+
* @returns String com placeholder gerado
|
|
28
|
+
*/
|
|
29
|
+
generatePlaceholder(): string;
|
|
30
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { EventEmitter } from '../../stencil-public-runtime';
|
|
2
|
+
import { OptionsSetFocus } from './interfaces/optionsSetFocus';
|
|
3
|
+
export declare class EzClassicTextArea {
|
|
4
|
+
_element: HTMLElement;
|
|
5
|
+
private _textAreaElem?;
|
|
6
|
+
/** Nome da textarea */
|
|
7
|
+
name?: string;
|
|
8
|
+
/** Texto do rótulo exibido acima da área de texto */
|
|
9
|
+
label?: string;
|
|
10
|
+
/** Texto de placeholder exibido quando a área de texto está vazia */
|
|
11
|
+
placeholder?: string;
|
|
12
|
+
/** Valor atual da área de texto */
|
|
13
|
+
value?: string;
|
|
14
|
+
/** Texto de ajuda exibido abaixo da textarea */
|
|
15
|
+
helpText?: string;
|
|
16
|
+
/** Estado visual da textarea: default, error, success ou warning */
|
|
17
|
+
state?: "default" | "error" | "success" | "warning";
|
|
18
|
+
/** Define se a textarea está habilitada */
|
|
19
|
+
enabled?: boolean;
|
|
20
|
+
/** Se a área de texto é somente leitura */
|
|
21
|
+
readonly?: boolean;
|
|
22
|
+
/** Número máximo de caracteres permitidos */
|
|
23
|
+
maxlength?: number;
|
|
24
|
+
/** Comportamento de redimensionamento da área de texto */
|
|
25
|
+
resize?: 'none' | 'both' | 'horizontal' | 'vertical';
|
|
26
|
+
/** Nome do ícone à esquerda */
|
|
27
|
+
leftIconName?: string;
|
|
28
|
+
/** Nome do ícone à direita */
|
|
29
|
+
rightIconName?: string;
|
|
30
|
+
/** Título do ícone à direita (tooltip) */
|
|
31
|
+
rightIconTooltip?: string;
|
|
32
|
+
/** Título do ícone à esquerda (tooltip) */
|
|
33
|
+
leftIconTooltip?: string;
|
|
34
|
+
/** Define se o ícone da esquerda é clicável */
|
|
35
|
+
leftIconClickable?: boolean;
|
|
36
|
+
/** Define se o ícone da direita é clicável */
|
|
37
|
+
rightIconClickable?: boolean;
|
|
38
|
+
/** Define o número de linhas da área de texto */
|
|
39
|
+
rows?: number;
|
|
40
|
+
/** Evento emitido quando o valor da área de texto muda */
|
|
41
|
+
ezChange: EventEmitter<string>;
|
|
42
|
+
/** Evento emitido quando a área de texto perde foco */
|
|
43
|
+
ezBlur: EventEmitter<string>;
|
|
44
|
+
/**
|
|
45
|
+
* Evento disparado quando um ícone é clicado.
|
|
46
|
+
* Payload: { icon: "left" | "right" }
|
|
47
|
+
*/
|
|
48
|
+
iconClick: EventEmitter<{
|
|
49
|
+
icon: "left" | "right";
|
|
50
|
+
}>;
|
|
51
|
+
/** Aplica o foco no campo. */
|
|
52
|
+
setFocus(option?: OptionsSetFocus): Promise<void>;
|
|
53
|
+
/** Remove o foco do campo. */
|
|
54
|
+
setBlur(): Promise<void>;
|
|
55
|
+
private onBlur;
|
|
56
|
+
private handleInput;
|
|
57
|
+
private handleIconClick;
|
|
58
|
+
private addInfoId;
|
|
59
|
+
componentDidLoad(): void;
|
|
60
|
+
render(): any;
|
|
61
|
+
}
|