@wrrdev/fenix-ui 1.2.0 → 1.3.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/README.md +33 -3
- package/dist/components/datepicker/datepicker.js +4 -4
- package/dist/components/datepicker/datepicker.js.map +1 -1
- package/dist/components/editor/editor.js +3 -3
- package/dist/components/editor/editor.js.map +1 -1
- package/dist/components/input/input.d.ts +11 -0
- package/dist/components/input/input.d.ts.map +1 -1
- package/dist/components/input/input.js +11 -0
- package/dist/components/input/input.js.map +1 -1
- package/dist/components/multiselect/multiselect.js +1 -1
- package/dist/components/multiselect/multiselect.js.map +1 -1
- package/dist/components/orderlist/orderlist.js +1 -1
- package/dist/components/orderlist/orderlist.js.map +1 -1
- package/dist/components/picklist/picklist.js +1 -1
- package/dist/components/picklist/picklist.js.map +1 -1
- package/dist/components/select/select.js +1 -1
- package/dist/components/select/select.js.map +1 -1
- package/dist/components/table/table.js +1 -1
- package/dist/components/table/table.js.map +1 -1
- package/dist/components/textarea/textarea.d.ts +7 -0
- package/dist/components/textarea/textarea.d.ts.map +1 -1
- package/dist/components/textarea/textarea.js +22 -1
- package/dist/components/textarea/textarea.js.map +1 -1
- package/dist/core/jsx.d.ts +10 -0
- package/dist/core/jsx.d.ts.map +1 -1
- package/dist/core/jsx.js.map +1 -1
- package/dist/docs/componentes/autocomplete.doc.d.ts.map +1 -1
- package/dist/docs/componentes/datepicker.doc.d.ts.map +1 -1
- package/dist/docs/componentes/editor.doc.d.ts.map +1 -1
- package/dist/docs/componentes/floatlabel.doc.d.ts.map +1 -1
- package/dist/docs/componentes/input.doc.d.ts.map +1 -1
- package/dist/docs/componentes/multiselect.doc.d.ts.map +1 -1
- package/dist/docs/componentes/orderlist.doc.d.ts.map +1 -1
- package/dist/docs/componentes/picklist.doc.d.ts.map +1 -1
- package/dist/docs/componentes/select.doc.d.ts.map +1 -1
- package/dist/docs/componentes/table.doc.d.ts.map +1 -1
- package/dist/docs/componentes/textarea.doc.d.ts.map +1 -1
- package/dist/docs/shared.d.ts +15 -0
- package/dist/docs/shared.d.ts.map +1 -1
- package/dist/fenix-ui.umd.min.js +162 -158
- package/dist/fenix-ui4.esm.js +45 -13
- package/dist/fenix-ui4.esm.js.map +1 -1
- package/package.json +1 -1
package/dist/fenix-ui4.esm.js
CHANGED
|
@@ -1048,7 +1048,7 @@ const _FxSelect = class _FxSelect extends FxFormElement {
|
|
|
1048
1048
|
</span>
|
|
1049
1049
|
</span>
|
|
1050
1050
|
<div class="panel" part="panel" role="listbox">
|
|
1051
|
-
${this.hasAttr("searchable") ? `<input class="search" part="search" type="text" placeholder="${esc(this.getAttr("search-placeholder", "Pesquisar…"))}">` : ""}
|
|
1051
|
+
${this.hasAttr("searchable") ? `<input class="search" part="search" type="text" autocomplete="off" placeholder="${esc(this.getAttr("search-placeholder", "Pesquisar…"))}">` : ""}
|
|
1052
1052
|
${filtered.map((o) => `
|
|
1053
1053
|
<button type="button" class="opt" role="option" data-value="${esc(o.value)}"
|
|
1054
1054
|
aria-selected="${o.value === current}">${esc(o.label)}</button>`).join("")}
|
|
@@ -1356,6 +1356,12 @@ const _FxInput = class _FxInput extends FxFormElement {
|
|
|
1356
1356
|
"step",
|
|
1357
1357
|
"clearable",
|
|
1358
1358
|
"full",
|
|
1359
|
+
// `autocomplete` é observado porque ele vive no campo INTERNO (autofill
|
|
1360
|
+
// do navegador): mudar o atributo no host precisa refletir no <input>.
|
|
1361
|
+
// `name`/`id` idem — os dois descem para o campo interno.
|
|
1362
|
+
"autocomplete",
|
|
1363
|
+
"name",
|
|
1364
|
+
"id",
|
|
1359
1365
|
"icon",
|
|
1360
1366
|
"icon-pos",
|
|
1361
1367
|
"error",
|
|
@@ -1419,6 +1425,9 @@ const _FxInput = class _FxInput extends FxFormElement {
|
|
|
1419
1425
|
const min = this.getAttr("min");
|
|
1420
1426
|
const max = this.getAttr("max");
|
|
1421
1427
|
const step = this.getAttr("step");
|
|
1428
|
+
const autocomplete = this.getAttr("autocomplete", "off");
|
|
1429
|
+
const name = this.getAttr("name");
|
|
1430
|
+
const id = this.getAttr("id");
|
|
1422
1431
|
const icon = this.getAttr("icon");
|
|
1423
1432
|
const iconPos = this.getAttr("icon-pos", "left") === "right" ? "right" : "left";
|
|
1424
1433
|
const slottedIcon = this.querySelector('[slot="icon"]');
|
|
@@ -1429,6 +1438,8 @@ const _FxInput = class _FxInput extends FxFormElement {
|
|
|
1429
1438
|
${useIconBox ? `<div class="field-icon icon-${iconPos}">` : ""}
|
|
1430
1439
|
${useIconBox && iconPos === "left" ? iconContent : ""}
|
|
1431
1440
|
<input class="field" part="input" type="${esc(type)}"
|
|
1441
|
+
${name ? `name="${esc(name)}"` : ""} ${id ? `id="${esc(id)}"` : ""}
|
|
1442
|
+
autocomplete="${esc(autocomplete)}"
|
|
1432
1443
|
${placeholder ? `placeholder="${esc(placeholder)}"` : ""}
|
|
1433
1444
|
${min ? `min="${esc(min)}"` : ""} ${max ? `max="${esc(max)}"` : ""} ${step ? `step="${esc(step)}"` : ""}
|
|
1434
1445
|
/>
|
|
@@ -1974,7 +1985,7 @@ const _FxMultiselect = class _FxMultiselect extends FxFormElement {
|
|
|
1974
1985
|
<span class="count">${chips.length} selecionado${chips.length === 1 ? "" : "s"}</span>
|
|
1975
1986
|
${this.hasAttr("clearable") && chips.length ? '<button type="button" class="clear-all">Limpar tudo</button>' : ""}
|
|
1976
1987
|
</div>
|
|
1977
|
-
${this.hasAttr("searchable") ? `<input class="search" part="search" type="text" placeholder="${esc(this.getAttr("search-placeholder", "Pesquisar…"))}">` : ""}
|
|
1988
|
+
${this.hasAttr("searchable") ? `<input class="search" part="search" type="text" autocomplete="off" placeholder="${esc(this.getAttr("search-placeholder", "Pesquisar…"))}">` : ""}
|
|
1978
1989
|
<ul class="list">
|
|
1979
1990
|
${filtered.map((o) => `
|
|
1980
1991
|
<li><button type="button" class="opt" role="option" data-value="${esc(o.value)}"
|
|
@@ -2931,7 +2942,7 @@ const _FxDatepicker = class _FxDatepicker extends FxFormElement {
|
|
|
2931
2942
|
}
|
|
2932
2943
|
this.setTemplate(`
|
|
2933
2944
|
<div class="field" part="field">
|
|
2934
|
-
<input class="display" part="display" type="text" ${this.hasAttr("free-text") && !disabled ? "" : "readonly"}
|
|
2945
|
+
<input class="display" part="display" type="text" autocomplete="off" ${this.hasAttr("free-text") && !disabled ? "" : "readonly"}
|
|
2935
2946
|
placeholder="${esc(this.getAttr("placeholder", "dd/mm/aaaa"))}"
|
|
2936
2947
|
value="${esc(text)}" ${disabled ? "disabled" : ""}>
|
|
2937
2948
|
<button type="button" class="clear" part="clear" aria-label="Limpar"
|
|
@@ -2949,9 +2960,9 @@ const _FxDatepicker = class _FxDatepicker extends FxFormElement {
|
|
|
2949
2960
|
<div class="pop" part="popover">
|
|
2950
2961
|
<fx-calendar ${calAttrs}></fx-calendar>
|
|
2951
2962
|
${showTime ? `<div class="time-row" part="time">
|
|
2952
|
-
<input class="t-h" type="number" min="0" max="23" value="${this.time.h}" aria-label="Hora"><span class="sep">:</span>
|
|
2953
|
-
<input class="t-m" type="number" min="0" max="59" value="${this.time.m}" aria-label="Minuto"><span class="sep">:</span>
|
|
2954
|
-
<input class="t-s" type="number" min="0" max="59" value="${this.time.s}" aria-label="Segundo">
|
|
2963
|
+
<input class="t-h" type="number" autocomplete="off" min="0" max="23" value="${this.time.h}" aria-label="Hora"><span class="sep">:</span>
|
|
2964
|
+
<input class="t-m" type="number" autocomplete="off" min="0" max="59" value="${this.time.m}" aria-label="Minuto"><span class="sep">:</span>
|
|
2965
|
+
<input class="t-s" type="number" autocomplete="off" min="0" max="59" value="${this.time.s}" aria-label="Segundo">
|
|
2955
2966
|
</div>` : ""}
|
|
2956
2967
|
</div>
|
|
2957
2968
|
`);
|
|
@@ -4387,7 +4398,7 @@ const _FxTable = class _FxTable extends FxElement {
|
|
|
4387
4398
|
const activeClass = isSorted ? "active" : "";
|
|
4388
4399
|
return `<th part="header" class="${c.sortable ? "sortable" : ""}" style="text-align:${c.align}" data-field="${esc(c.field)}">${esc(c.header)}${ind ? `<span class="sort-ind ${activeClass}">${ind}</span>` : ""}</th>`;
|
|
4389
4400
|
}).join("");
|
|
4390
|
-
const filterRow = cols.some((c) => c.filterable) ? `<tr class="filter-row">${cols.map((c) => `<th style="text-align:${c.align}">${c.filterable ? `<input class="filter" data-field="${esc(c.field)}" placeholder="${esc("Filtrar…")}" value="${esc(this.filters[c.field] ?? "")}">` : ""}</th>`).join("")}</tr>` : "";
|
|
4401
|
+
const filterRow = cols.some((c) => c.filterable) ? `<tr class="filter-row">${cols.map((c) => `<th style="text-align:${c.align}">${c.filterable ? `<input class="filter" autocomplete="off" data-field="${esc(c.field)}" placeholder="${esc("Filtrar…")}" value="${esc(this.filters[c.field] ?? "")}">` : ""}</th>`).join("")}</tr>` : "";
|
|
4391
4402
|
const bodyHtml = rows.length ? rows.map(
|
|
4392
4403
|
(row, i) => `<tr part="row" data-index="${i}">${cols.map((c) => `<td part="cell" style="text-align:${c.align}">${this.cellHtml(c, row)}</td>`).join("")}</tr>`
|
|
4393
4404
|
).join("") : `<tr><td class="empty" colspan="${cols.length || 1}">${esc(this.getAttr("empty-message", "Nenhum registro encontrado"))}</td></tr>`;
|
|
@@ -5319,7 +5330,23 @@ function defineFxFloatlabel() {
|
|
|
5319
5330
|
defineFxFloatlabel();
|
|
5320
5331
|
const _FxTextarea = class _FxTextarea extends FxFormElement {
|
|
5321
5332
|
static get observedAttributes() {
|
|
5322
|
-
return [
|
|
5333
|
+
return [
|
|
5334
|
+
"size",
|
|
5335
|
+
"placeholder",
|
|
5336
|
+
"disabled",
|
|
5337
|
+
"readonly",
|
|
5338
|
+
"full",
|
|
5339
|
+
"rows",
|
|
5340
|
+
"maxlength",
|
|
5341
|
+
"error",
|
|
5342
|
+
"invalid",
|
|
5343
|
+
"success",
|
|
5344
|
+
"valid",
|
|
5345
|
+
// Autofill: vivem no campo interno (ver o JSDoc da classe).
|
|
5346
|
+
"autocomplete",
|
|
5347
|
+
"name",
|
|
5348
|
+
"id"
|
|
5349
|
+
];
|
|
5323
5350
|
}
|
|
5324
5351
|
get size() {
|
|
5325
5352
|
const s = this.getAttr("size", "md");
|
|
@@ -5354,7 +5381,12 @@ const _FxTextarea = class _FxTextarea extends FxFormElement {
|
|
|
5354
5381
|
const disabled = this.hasAttr("disabled");
|
|
5355
5382
|
const rows = this.getAttr("rows");
|
|
5356
5383
|
const maxlength = this.getAttr("maxlength");
|
|
5384
|
+
const autocomplete = this.getAttr("autocomplete", "off");
|
|
5385
|
+
const name = this.getAttr("name");
|
|
5386
|
+
const id = this.getAttr("id");
|
|
5357
5387
|
this.setTemplate(`<textarea class="field" part="textarea"
|
|
5388
|
+
${name ? `name="${esc(name)}"` : ""} ${id ? `id="${esc(id)}"` : ""}
|
|
5389
|
+
autocomplete="${esc(autocomplete)}"
|
|
5358
5390
|
${placeholder ? `placeholder="${esc(placeholder)}"` : ""}
|
|
5359
5391
|
${rows ? `rows="${esc(rows)}"` : ""}
|
|
5360
5392
|
${maxlength ? `maxlength="${esc(maxlength)}"` : ""}
|
|
@@ -7875,8 +7907,8 @@ renderToolbar_fn = function() {
|
|
|
7875
7907
|
button("removeFormat", "format_clear", "Limpar formatação")
|
|
7876
7908
|
].join("");
|
|
7877
7909
|
const color = [
|
|
7878
|
-
`<label class="tb-color" title="Cor do texto"><input type="color" data-color="foreColor" value="#111827" aria-label="Cor do texto"></label>`,
|
|
7879
|
-
`<label class="tb-color" title="Realçar texto"><input type="color" data-color="hiliteColor" value="#fef08a" aria-label="Realçar texto"></label>`
|
|
7910
|
+
`<label class="tb-color" title="Cor do texto"><input type="color" autocomplete="off" data-color="foreColor" value="#111827" aria-label="Cor do texto"></label>`,
|
|
7911
|
+
`<label class="tb-color" title="Realçar texto"><input type="color" autocomplete="off" data-color="hiliteColor" value="#fef08a" aria-label="Realçar texto"></label>`
|
|
7880
7912
|
].join("");
|
|
7881
7913
|
const alignGroup = [
|
|
7882
7914
|
button("justifyLeft", "format_align_left", "Alinhar à esquerda"),
|
|
@@ -8344,7 +8376,7 @@ fieldHtml_fn = function(field) {
|
|
|
8344
8376
|
return `<label class="field"><span>${label}</span><select data-field="${esc(field.name)}">${options}</select></label>`;
|
|
8345
8377
|
}
|
|
8346
8378
|
const type = field.type === "url" ? "url" : field.type === "number" ? "number" : "text";
|
|
8347
|
-
return `<label class="field"><span>${label}</span><input data-field="${esc(field.name)}" type="${type}" value="${esc(field.value ?? "")}" placeholder="${esc(field.placeholder ?? "")}"></label>`;
|
|
8379
|
+
return `<label class="field"><span>${label}</span><input data-field="${esc(field.name)}" type="${type}" autocomplete="off" value="${esc(field.value ?? "")}" placeholder="${esc(field.placeholder ?? "")}"></label>`;
|
|
8348
8380
|
};
|
|
8349
8381
|
submitDialog_fn = function() {
|
|
8350
8382
|
const body = this.root.querySelector(".dialog-body");
|
|
@@ -14761,7 +14793,7 @@ const _FxOrderList = class _FxOrderList extends FxElement {
|
|
|
14761
14793
|
<div class="container" part="container">
|
|
14762
14794
|
${this.filter ? `
|
|
14763
14795
|
<div class="filter-wrapper" part="filter-wrapper">
|
|
14764
|
-
<input type="text" class="filter-input" part="filter-input"
|
|
14796
|
+
<input type="text" class="filter-input" part="filter-input" autocomplete="off"
|
|
14765
14797
|
placeholder="${this.filterPlaceholder}"
|
|
14766
14798
|
value="${esc(this._filterValue)}"
|
|
14767
14799
|
aria-label="Filtrar lista" />
|
|
@@ -15453,7 +15485,7 @@ const _FxPickList = class _FxPickList extends FxElement {
|
|
|
15453
15485
|
const tgtItems = dTgt.length === 0 ? `<li class="empty-message">${this.filter ? "Nenhum resultado" : "Nenhum selecionado"}</li>` : dTgt.map((item, i) => `<li class="list-item${this._isTargetSelected(item, i) ? " selected" : ""}" data-index="${i}" data-list="target" tabindex="0">${hasSel ? '<input type="checkbox" class="checkbox"' + (this._isTargetSelected(item, i) ? " checked" : "") + " />" : ""}<span class="item-content">${this._optionTemplate ? this._optionTemplate(item) : esc(this._getItemLabel(item))}</span></li>`).join("");
|
|
15454
15486
|
const srcAllBar = showAll ? `<div class="select-all-bar" part="select-all-bar"><label><input type="checkbox" class="select-all-checkbox" data-list="source" ${this._sourceSelection.length > 0 && this._sourceSelection.length === this._source.length ? "checked" : ""} aria-label="Selecionar todos da origem" /> Selecionar Todos</label><span class="selection-count">${this._sourceSelection.length} selecionado(s)</span></div>` : "";
|
|
15455
15487
|
const tgtAllBar = showAll ? `<div class="select-all-bar" part="select-all-bar"><label><input type="checkbox" class="select-all-checkbox" data-list="target" ${this._targetSelection.length > 0 && this._targetSelection.length === this._target.length ? "checked" : ""} aria-label="Selecionar todos do destino" /> Selecionar Todos</label><span class="selection-count">${this._targetSelection.length} selecionado(s)</span></div>` : "";
|
|
15456
|
-
this.setTemplate(`<div class="container"><div class="list-container"><div class="list-label">${esc(this.sourceLabel)} (${this._source.length})</div>${this.filter ? '<div class="filter-wrapper"><input type="text" class="filter-input source-filter" placeholder="' + this.filterPlaceholder + '" value="' + esc(this._sourceFilterValue) + '" /></div>' : ""}${srcAllBar}<div class="list-wrapper"><ul class="list source-list" role="listbox" tabindex="0">${srcItems}</ul></div></div><div class="controls"><div class="control-group"><button class="control-btn" data-action="move-all-target" part="control-btn" aria-label="Mover todos para destino"><span class="control-btn-icon">»</span></button><button class="control-btn" data-action="move-target" part="control-btn" aria-label="Mover para destino"><span class="control-btn-icon">→</span></button></div><div class="control-group"><button class="control-btn" data-action="move-source" part="control-btn" aria-label="Mover para origem"><span class="control-btn-icon">←</span></button><button class="control-btn" data-action="move-all-source" part="control-btn" aria-label="Mover todos para origem"><span class="control-btn-icon">«</span></button></div></div><div class="list-container"><div class="list-label">${esc(this.targetLabel)} (${this._target.length})</div>${this.filter ? '<div class="filter-wrapper"><input type="text" class="filter-input target-filter" placeholder="' + this.filterPlaceholder + '" value="' + esc(this._targetFilterValue) + '" /></div>' : ""}${tgtAllBar}<div class="list-wrapper"><ul class="list target-list" role="listbox" tabindex="0">${tgtItems}</ul></div></div></div>`);
|
|
15488
|
+
this.setTemplate(`<div class="container"><div class="list-container"><div class="list-label">${esc(this.sourceLabel)} (${this._source.length})</div>${this.filter ? '<div class="filter-wrapper"><input type="text" autocomplete="off" class="filter-input source-filter" placeholder="' + this.filterPlaceholder + '" value="' + esc(this._sourceFilterValue) + '" /></div>' : ""}${srcAllBar}<div class="list-wrapper"><ul class="list source-list" role="listbox" tabindex="0">${srcItems}</ul></div></div><div class="controls"><div class="control-group"><button class="control-btn" data-action="move-all-target" part="control-btn" aria-label="Mover todos para destino"><span class="control-btn-icon">»</span></button><button class="control-btn" data-action="move-target" part="control-btn" aria-label="Mover para destino"><span class="control-btn-icon">→</span></button></div><div class="control-group"><button class="control-btn" data-action="move-source" part="control-btn" aria-label="Mover para origem"><span class="control-btn-icon">←</span></button><button class="control-btn" data-action="move-all-source" part="control-btn" aria-label="Mover todos para origem"><span class="control-btn-icon">«</span></button></div></div><div class="list-container"><div class="list-label">${esc(this.targetLabel)} (${this._target.length})</div>${this.filter ? '<div class="filter-wrapper"><input type="text" autocomplete="off" class="filter-input target-filter" placeholder="' + this.filterPlaceholder + '" value="' + esc(this._targetFilterValue) + '" /></div>' : ""}${tgtAllBar}<div class="list-wrapper"><ul class="list target-list" role="listbox" tabindex="0">${tgtItems}</ul></div></div></div>`);
|
|
15457
15489
|
this._attachListeners();
|
|
15458
15490
|
}
|
|
15459
15491
|
_attachListeners() {
|