@wrrdev/fenix-ui 1.0.13 → 1.0.15
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 +332 -332
- package/dist/components/accordion/accordion.d.ts +1 -0
- package/dist/components/accordion/accordion.d.ts.map +1 -1
- package/dist/components/accordion/accordion.js +18 -13
- package/dist/components/accordion/accordion.js.map +1 -1
- package/dist/components/accordion/index.js.map +1 -1
- package/dist/components/alert/alert.d.ts.map +1 -1
- package/dist/components/alert/alert.js +2 -1
- package/dist/components/alert/alert.js.map +1 -1
- package/dist/components/alert/index.js.map +1 -1
- package/dist/components/autocomplete/autocomplete.d.ts +3 -0
- package/dist/components/autocomplete/autocomplete.d.ts.map +1 -1
- package/dist/components/autocomplete/autocomplete.js +28 -4
- package/dist/components/autocomplete/autocomplete.js.map +1 -1
- package/dist/components/autocomplete/index.js.map +1 -1
- package/dist/components/datepicker/datepicker.d.ts.map +1 -1
- package/dist/components/datepicker/datepicker.js +7 -6
- package/dist/components/datepicker/datepicker.js.map +1 -1
- package/dist/components/dialog/dialog.d.ts +4 -0
- package/dist/components/dialog/dialog.d.ts.map +1 -1
- package/dist/components/dialog/dialog.js +42 -4
- package/dist/components/dialog/dialog.js.map +1 -1
- package/dist/components/dialog/index.js.map +1 -1
- package/dist/components/drawer/drawer.d.ts +5 -0
- package/dist/components/drawer/drawer.d.ts.map +1 -1
- package/dist/components/drawer/drawer.js +49 -15
- package/dist/components/drawer/drawer.js.map +1 -1
- package/dist/components/dropdown/dropdown.d.ts +5 -0
- package/dist/components/dropdown/dropdown.d.ts.map +1 -1
- package/dist/components/dropdown/dropdown.js +34 -10
- package/dist/components/dropdown/dropdown.js.map +1 -1
- package/dist/components/input/input.d.ts.map +1 -1
- package/dist/components/input/input.js +4 -3
- package/dist/components/input/input.js.map +1 -1
- package/dist/components/knob/index.js.map +1 -1
- package/dist/components/knob/knob.d.ts +2 -0
- package/dist/components/knob/knob.d.ts.map +1 -1
- package/dist/components/knob/knob.js +15 -3
- package/dist/components/knob/knob.js.map +1 -1
- package/dist/components/multiselect/multiselect.d.ts +2 -0
- package/dist/components/multiselect/multiselect.d.ts.map +1 -1
- package/dist/components/multiselect/multiselect.js +38 -8
- package/dist/components/multiselect/multiselect.js.map +1 -1
- package/dist/components/orderlist/orderlist.d.ts.map +1 -1
- package/dist/components/orderlist/orderlist.js +1 -3
- package/dist/components/orderlist/orderlist.js.map +1 -1
- package/dist/components/pagination/index.js.map +1 -1
- package/dist/components/pagination/pagination.d.ts +1 -0
- package/dist/components/pagination/pagination.d.ts.map +1 -1
- package/dist/components/pagination/pagination.js +19 -8
- package/dist/components/pagination/pagination.js.map +1 -1
- package/dist/components/picklist/picklist.d.ts.map +1 -1
- package/dist/components/picklist/picklist.js +1 -3
- package/dist/components/picklist/picklist.js.map +1 -1
- package/dist/components/progress/index.js.map +1 -1
- package/dist/components/progress/progress.d.ts.map +1 -1
- package/dist/components/progress/progress.js +2 -1
- package/dist/components/progress/progress.js.map +1 -1
- package/dist/components/radio/radio.js +1 -1
- package/dist/components/radio/radio.js.map +1 -1
- package/dist/components/select/select.d.ts +2 -0
- package/dist/components/select/select.d.ts.map +1 -1
- package/dist/components/select/select.js +36 -5
- package/dist/components/select/select.js.map +1 -1
- package/dist/components/skeleton/index.js.map +1 -1
- package/dist/components/skeleton/skeleton.d.ts +2 -0
- package/dist/components/skeleton/skeleton.d.ts.map +1 -1
- package/dist/components/skeleton/skeleton.js +7 -2
- package/dist/components/skeleton/skeleton.js.map +1 -1
- package/dist/components/table/expr.d.ts +38 -0
- package/dist/components/table/expr.d.ts.map +1 -0
- package/dist/components/table/expr.js +429 -0
- package/dist/components/table/expr.js.map +1 -0
- package/dist/components/table/table.d.ts +26 -8
- package/dist/components/table/table.d.ts.map +1 -1
- package/dist/components/table/table.js +402 -140
- package/dist/components/table/table.js.map +1 -1
- package/dist/components/tabs/tabs.d.ts.map +1 -1
- package/dist/components/tabs/tabs.js +3 -2
- package/dist/components/tabs/tabs.js.map +1 -1
- package/dist/components/textarea/index.js.map +1 -1
- package/dist/components/textarea/textarea.d.ts.map +1 -1
- package/dist/components/textarea/textarea.js +4 -3
- package/dist/components/textarea/textarea.js.map +1 -1
- package/dist/components/toast/index.js.map +1 -1
- package/dist/components/tooltip/directive.js.map +1 -1
- package/dist/components/tooltip/index.js.map +1 -1
- package/dist/components/tooltip/tooltip.d.ts.map +1 -1
- package/dist/components/tooltip/tooltip.js +2 -1
- package/dist/components/tooltip/tooltip.js.map +1 -1
- package/dist/core/jsx.js.map +1 -1
- package/dist/core/presets.js.map +1 -1
- package/dist/core/sanitize.d.ts +36 -0
- package/dist/core/sanitize.d.ts.map +1 -0
- package/dist/core/sanitize.js +37 -0
- package/dist/core/sanitize.js.map +1 -0
- package/dist/core/tokens.js.map +1 -1
- package/dist/core/vue.js.map +1 -1
- package/dist/docs/app.d.ts.map +1 -1
- package/dist/docs/componentes/table.doc.d.ts.map +1 -1
- package/dist/fenix-ui.esm.js.map +1 -1
- package/dist/fenix-ui.umd.min.js +339 -208
- package/dist/fenix-ui2.esm.js +1156 -243
- package/dist/fenix-ui2.esm.js.map +1 -1
- package/dist/fenix-ui3.esm.js +7 -1
- package/dist/fenix-ui3.esm.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/plugins/auto-import.d.ts.map +1 -1
- package/dist/plugins/auto-import.js +7 -1
- package/dist/plugins/auto-import.js.map +1 -1
- package/package.json +212 -212
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expr.js","sources":["../../../src/components/table/expr.ts"],"sourcesContent":["/**\n * Avaliador de expressões **seguro** (sem `eval`/`Function`) usado pelos\n * templates de célula do `<fx-table>`.\n *\n * Permite personalizar o conteúdo de uma coluna:\n *\n * ```html\n * <fx-column field=\"preco\" header=\"Preço\">\n * <template>R$ {{ value | currency }}</template>\n * </fx-column>\n *\n * <fx-column field=\"status\" header=\"Situação\">\n * <template>\n * <i class=\"pi pi-{{ row.status === 'ativo' ? 'check' : 'times' }}\"></i>\n * </template>\n * </fx-column>\n * ```\n *\n * Contexto de variáveis dentro de `{{ }}`:\n * - `value` — valor do campo da coluna (row[field])\n * - `row` — objeto completo da linha\n * - `row.campo` — acesso a qualquer campo da linha\n *\n * Pipes: `value | currency`, `value | date`, `value | date: 'short'`,\n * `value | dateTime`, `value | number`, `value | number: 2`\n */\n\ntype Row = Record<string, unknown>;\nexport type EvalCtx = { value: unknown; row: Row };\n\nimport { esc } from '../../core/sanitize';\n\n/* ------------------------------------------------------------------ *\n * Pipes built-in\n * ------------------------------------------------------------------ */\nconst LOCALE = 'pt-BR';\n\nexport const PIPES: Record<string, (v: unknown, arg?: string) => string> = {\n /** Formata como moeda brasileira (R$). */\n currency: (v) => {\n if (v == null || v === '') return '';\n try {\n return new Intl.NumberFormat(LOCALE, {\n style: 'currency',\n currency: 'BRL',\n }).format(Number(v));\n } catch {\n return String(v);\n }\n },\n\n /** Formata como data. Estilos: short | medium | long | full (default medium). */\n date: (v, arg) => {\n const d = toDate(v);\n if (!d) return String(v ?? '');\n const styles: Record<string, Intl.DateTimeFormatOptions> = {\n short: { dateStyle: 'short' },\n medium: { dateStyle: 'medium' },\n long: { dateStyle: 'long' },\n full: { dateStyle: 'full' },\n };\n const opts = arg && styles[arg] ? styles[arg] : styles.medium;\n try {\n return new Intl.DateTimeFormat(LOCALE, opts).format(d);\n } catch {\n return d.toLocaleDateString(LOCALE);\n }\n },\n\n /** Formata como data + hora (medium/short). */\n dateTime: (v) => {\n const d = toDate(v);\n if (!d) return String(v ?? '');\n try {\n return new Intl.DateTimeFormat(LOCALE, {\n dateStyle: 'medium',\n timeStyle: 'short',\n }).format(d);\n } catch {\n return d.toLocaleString(LOCALE);\n }\n },\n\n /** Formata como número (pt-BR). Opcional: `number: 2` (casas decimais). */\n number: (v, arg) => {\n if (v == null || v === '') return '';\n try {\n const opt: Intl.NumberFormatOptions = {};\n if (arg !== undefined) {\n const dec = Number(arg);\n opt.minimumFractionDigits = dec;\n opt.maximumFractionDigits = dec;\n }\n return new Intl.NumberFormat(LOCALE, opt).format(Number(v));\n } catch {\n return String(v);\n }\n },\n};\n\nfunction toDate(v: unknown): Date | null {\n if (v == null || v === '') return null;\n if (v instanceof Date) return isNaN(v.getTime()) ? null : v;\n if (typeof v === 'number') {\n const d = new Date(v);\n return isNaN(d.getTime()) ? null : d;\n }\n if (typeof v === 'string') {\n const d = new Date(v);\n return isNaN(d.getTime()) ? null : d;\n }\n return null;\n}\n\n/* ------------------------------------------------------------------ *\n * Tokenizer\n * ------------------------------------------------------------------ */\ntype TType =\n | 'str' // 'texto' ou \"texto\"\n | 'num' // 42, 3.14\n | 'id' // value, row, nome, status\n | 'kw' // true, false, null\n | 'op' // + - * /\n | 'cmp' // == != > < >= <=\n | 'pipe' // |\n | 'qm' // ?\n | 'colon' // :\n | 'lparen' // (\n | 'rparen' // )\n | 'dot'; // .\n\ninterface Token {\n type: TType;\n value: string;\n}\n\nconst IDENT_START = (ch: string) => /[a-z_$]/i.test(ch);\nconst IDENT_PART = (ch: string) => /[a-z0-9_$]/i.test(ch);\n\nfunction tokenize(expr: string): Token[] {\n const tokens: Token[] = [];\n let i = 0;\n\n while (i < expr.length) {\n const ch = expr[i];\n\n // Whitespace\n if (/\\s/.test(ch)) { i++; continue; }\n\n // String literals: '...' ou \"...\"\n if (ch === \"'\" || ch === '\"') {\n const quote = ch;\n let str = '';\n i++;\n while (i < expr.length && expr[i] !== quote) {\n if (expr[i] === '\\\\' && i + 1 < expr.length) {\n str += expr[i + 1];\n i += 2;\n } else {\n str += expr[i];\n i++;\n }\n }\n i++; // skip closing quote\n tokens.push({ type: 'str', value: str });\n continue;\n }\n\n // Numbers (apenas se começar com dígito — evita ambiguidade com .)\n if (ch >= '0' && ch <= '9') {\n let numStr = '';\n while (i < expr.length && (expr[i] >= '0' && expr[i] <= '9' || expr[i] === '.')) {\n numStr += expr[i];\n i++;\n }\n tokens.push({ type: 'num', value: numStr });\n continue;\n }\n\n // Identifiers / keywords\n if (IDENT_START(ch)) {\n let ident = '';\n while (i < expr.length && IDENT_PART(expr[i])) {\n ident += expr[i];\n i++;\n }\n if (ident === 'true' || ident === 'false' || ident === 'null') {\n tokens.push({ type: 'kw', value: ident });\n } else {\n tokens.push({ type: 'id', value: ident });\n }\n continue;\n }\n\n // Two-char comparison operators\n const two = expr.slice(i, i + 2);\n if (two === '==' || two === '!=' || two === '>=' || two === '<=') {\n tokens.push({ type: 'cmp', value: two });\n i += 2;\n continue;\n }\n\n // Single-char arithmetic / comparison\n if (ch === '+') { tokens.push({ type: 'op', value: '+' }); i++; continue; }\n if (ch === '-') { tokens.push({ type: 'op', value: '-' }); i++; continue; }\n if (ch === '*') { tokens.push({ type: 'op', value: '*' }); i++; continue; }\n if (ch === '/') { tokens.push({ type: 'op', value: '/' }); i++; continue; }\n if (ch === '>') { tokens.push({ type: 'cmp', value: '>' }); i++; continue; }\n if (ch === '<') { tokens.push({ type: 'cmp', value: '<' }); i++; continue; }\n if (ch === '!') { tokens.push({ type: 'op', value: '!' }); i++; continue; }\n if (ch === '?') { tokens.push({ type: 'qm', value: '?' }); i++; continue; }\n if (ch === ':') { tokens.push({ type: 'colon', value: ':' }); i++; continue; }\n if (ch === '|') { tokens.push({ type: 'pipe', value: '|' }); i++; continue; }\n if (ch === '(') { tokens.push({ type: 'lparen', value: '(' }); i++; continue; }\n if (ch === ')') { tokens.push({ type: 'rparen', value: ')' }); i++; continue; }\n if (ch === '.') { tokens.push({ type: 'dot', value: '.' }); i++; continue; }\n\n // Unknown — skip silently\n i++;\n }\n\n return tokens;\n}\n\n/* ------------------------------------------------------------------ *\n * Parser — recursive descent, avalia durante o parsing\n * ------------------------------------------------------------------ */\n\nclass Parser {\n private pos = 0;\n\n constructor(\n private tokens: Token[],\n private ctx: EvalCtx,\n ) {}\n\n private peek(): Token | null {\n return this.pos < this.tokens.length ? this.tokens[this.pos] : null;\n }\n\n private next(): Token | null {\n return this.pos < this.tokens.length ? this.tokens[this.pos++] : null;\n }\n\n private matchType(type: TType): Token | null {\n if (this.peek()?.type === type) return this.next();\n return null;\n }\n\n parse(): unknown {\n return this.parsePipe();\n }\n\n /* pipeExpr := ternary ('|' IDENT (':' pipeArg)? )* */\n private parsePipe(): unknown {\n let val = this.parseTernary();\n\n while (this.peek()?.type === 'pipe') {\n this.next(); // consume |\n const nameTok = this.matchType('id');\n if (!nameTok) break;\n\n let arg: string | undefined;\n if (this.peek()?.type === 'colon') {\n this.next(); // consume :\n const argTok = this.peek();\n if (argTok && (argTok.type === 'str' || argTok.type === 'num' || argTok.type === 'id')) {\n arg = argTok.type === 'str' ? argTok.value : String(argTok.value);\n this.next();\n }\n }\n\n val = this.applyPipe(nameTok.value, arg, val);\n }\n return val;\n }\n\n /* ternary := comparison ('?' pipeExpr ':' pipeExpr)? */\n private parseTernary(): unknown {\n const cond = this.parseComparison();\n if (this.peek()?.type === 'qm') {\n this.next(); // consume ?\n const trueVal = this.parsePipe();\n if (this.peek()?.type === 'colon') {\n this.next(); // consume :\n const falseVal = this.parsePipe();\n return cond ? trueVal : falseVal;\n }\n return trueVal;\n }\n return cond;\n }\n\n /* comparison := additive (COMP_OP additive)? */\n private parseComparison(): unknown {\n const left = this.parseAdditive();\n const tok = this.peek();\n if (tok?.type === 'cmp') {\n this.next();\n const right = this.parseAdditive();\n return this.compare(left, tok.value, right);\n }\n return left;\n }\n\n private compare(left: unknown, op: string, right: unknown): boolean {\n const l = toComparable(left);\n const r = toComparable(right);\n switch (op) {\n case '==': return l == r;\n case '!=': return l != r;\n case '>': return l > r;\n case '<': return l < r;\n case '>=': return l >= r;\n case '<=': return l <= r;\n }\n return false;\n }\n\n /* additive := multiplicative (('+' | '-') multiplicative)* */\n private parseAdditive(): unknown {\n let left = this.parseMultiplicative();\n for (;;) {\n const tok = this.peek();\n if (tok?.type === 'op' && (tok.value === '+' || tok.value === '-')) {\n this.next();\n const right = this.parseMultiplicative();\n left = tok.value === '+' ? this.add(left, right) : this.subtract(left, right);\n } else break;\n }\n return left;\n }\n\n private add(l: unknown, r: unknown): unknown {\n if (typeof l === 'string' || typeof r === 'string') {\n return String(l ?? '') + String(r ?? '');\n }\n return Number(l) + Number(r);\n }\n\n private subtract(l: unknown, r: unknown): unknown {\n return Number(l) - Number(r);\n }\n\n /* multiplicative := unary (('*' | '/') unary)* */\n private parseMultiplicative(): unknown {\n let left = this.parseUnary();\n for (;;) {\n const tok = this.peek();\n if (tok?.type === 'op' && (tok.value === '*' || tok.value === '/')) {\n this.next();\n const right = this.parseUnary();\n left = tok.value === '*' ? Number(left) * Number(right) : Number(left) / Number(right);\n } else break;\n }\n return left;\n }\n\n /* unary := ('+' | '-' | '!') unary | primary */\n private parseUnary(): unknown {\n const tok = this.peek();\n if (tok?.type === 'op' && (tok.value === '+' || tok.value === '-')) {\n this.next();\n const val = Number(this.parseUnary());\n return tok.value === '-' ? -val : val;\n }\n if (tok?.type === 'op' && tok.value === '!') {\n this.next();\n return !this.parseUnary();\n }\n return this.parsePrimary();\n }\n\n /* primary := STRING | NUMBER | kw | id ( '.' id )* | '(' pipeExpr ')' */\n private parsePrimary(): unknown {\n const tok = this.peek();\n if (!tok) return undefined;\n\n if (tok.type === 'lparen') {\n this.next();\n const val = this.parsePipe();\n this.matchType('rparen');\n return val;\n }\n\n if (tok.type === 'str') { this.next(); return tok.value; }\n if (tok.type === 'num') { this.next(); return Number(tok.value); }\n\n if (tok.type === 'kw') {\n this.next();\n return tok.value === 'true' ? true\n : tok.value === 'false' ? false\n : null;\n }\n\n if (tok.type === 'id') {\n this.next();\n let result: unknown = this.resolveId(tok.value);\n\n while (this.peek()?.type === 'dot') {\n this.next(); // consume .\n const propTok = this.peek();\n if (propTok?.type === 'id') {\n this.next();\n result = result == null\n ? undefined\n : (result as Record<string, unknown>)[propTok.value];\n } else break;\n }\n return result;\n }\n\n this.next(); // skip token inesperado\n return undefined;\n }\n\n private resolveId(name: string): unknown {\n switch (name) {\n case 'value': return this.ctx.value;\n case 'row': return this.ctx.row;\n case 'true': return true;\n case 'false': return false;\n case 'null': return null;\n default: return this.ctx.row[name];\n }\n }\n\n private applyPipe(name: string, arg: string | undefined, input: unknown): string {\n const pipe = PIPES[name];\n if (!pipe) return formatDefault(input);\n try {\n return pipe(input, arg);\n } catch {\n return formatDefault(input);\n }\n }\n}\n\nfunction toComparable(v: unknown): number | string {\n if (typeof v === 'number') return v;\n if (typeof v === 'boolean') return v ? 1 : 0;\n return String(v ?? '');\n}\n\nfunction formatDefault(v: unknown): string {\n if (v == null) return '';\n if (typeof v === 'object') return '[object Object]';\n return String(v);\n}\n\n/* ------------------------------------------------------------------ *\n * API pública\n * ------------------------------------------------------------------ */\n\n/** Avalia uma única expressão `{{ }}` retornando uma string. */\nexport function evaluate(expr: string, ctx: EvalCtx): string {\n try {\n const tokens = tokenize(expr);\n const parser = new Parser(tokens, ctx);\n const result = parser.parse();\n return formatDefault(result);\n } catch {\n return '';\n }\n}\n\n/** Processa um template HTML substituindo todas as ocorrências `{{ expr }}`. */\nexport function renderCell(template: string, row: Row, field: string): string {\n const ctx: EvalCtx = { value: row[field], row };\n return template.replace(/\\{\\{([^}]+)\\}\\}/g, (_, expr: string) =>\n esc(evaluate(decodeEntities(expr.trim()), ctx)));\n}\n\n/** Decodifica entidades HTML que o serializador do innerHTML pode inserir (ex: > < &). */\nfunction decodeEntities(str: string): string {\n return str\n .replace(/&/g, '&')\n .replace(/>/g, '>')\n .replace(/</g, '<')\n .replace(/"/g, '\"')\n .replace(/'/g, \"'\");\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,38 +1,56 @@
|
|
|
1
1
|
import { FxElement } from '../../core/base';
|
|
2
|
+
import "../select";
|
|
2
3
|
/**
|
|
3
4
|
* <fx-table> — Tabela de dados estilo DataTable (dados + colunas configuráveis,
|
|
4
|
-
* ordenação, filtros por coluna, paginação personalizável
|
|
5
|
+
* ordenação, filtros por coluna, paginação personalizável, busca global na toolbar
|
|
6
|
+
* e modo lazy para busca no servidor).
|
|
5
7
|
*
|
|
6
8
|
* Colunas (light DOM):
|
|
7
9
|
* <fx-column field="nome" header="Nome" sortable filterable align="left">
|
|
8
10
|
* opcional: <template>R$ {{value}}</template> para render customizado
|
|
11
|
+
* ou conteúdo direto (HTML + {{ }}) como template alternativo
|
|
9
12
|
* </fx-column>
|
|
10
13
|
*
|
|
14
|
+
* Toolbar (opcional):
|
|
15
|
+
* <template slot="toolbar">
|
|
16
|
+
* <input data-search-fields="nome,cargo" placeholder="Buscar…">
|
|
17
|
+
* <button>Nova ação</button>
|
|
18
|
+
* </template>
|
|
19
|
+
*
|
|
11
20
|
* Dados: propriedade `data` (array de objetos) ou atributo `data` (JSON).
|
|
12
21
|
*
|
|
13
22
|
* Atributos: pagination, rows, rows-options, pagination-position (left|center|right),
|
|
14
|
-
* striped, empty-message.
|
|
15
|
-
* Eventos: page-change, sort-change, row-click (todos composed).
|
|
23
|
+
* striped, empty-message, lazy, total, loading, loading-message.
|
|
24
|
+
* Eventos: page-change, sort-change, row-click, filter-change (todos composed).
|
|
16
25
|
*/
|
|
17
26
|
export declare class FxTable extends FxElement {
|
|
18
27
|
static styles: string;
|
|
19
28
|
static get observedAttributes(): string[];
|
|
20
|
-
|
|
21
|
-
|
|
29
|
+
private _data;
|
|
30
|
+
private _total?;
|
|
22
31
|
private page;
|
|
23
32
|
private sortField;
|
|
24
33
|
private sortDir;
|
|
25
34
|
private filters;
|
|
35
|
+
private globalSearch;
|
|
36
|
+
private _columnObserver?;
|
|
37
|
+
get data(): Record<string, unknown>[];
|
|
38
|
+
set data(value: Record<string, unknown>[]);
|
|
39
|
+
get total(): number;
|
|
40
|
+
set total(value: number);
|
|
26
41
|
get rowsPerPage(): number;
|
|
27
42
|
set rowsPerPage(value: number);
|
|
28
|
-
|
|
43
|
+
get lazy(): boolean;
|
|
29
44
|
private get columns();
|
|
45
|
+
private get toolbarTemplate();
|
|
30
46
|
protected connectedCallback(): void;
|
|
31
|
-
|
|
47
|
+
protected disconnectedCallback(): void;
|
|
48
|
+
private _parseDataAttribute;
|
|
32
49
|
private computeRows;
|
|
33
|
-
|
|
50
|
+
private _getSearchFields;
|
|
34
51
|
private cellHtml;
|
|
35
52
|
protected render(): void;
|
|
53
|
+
private _restoreToolbarSearch;
|
|
36
54
|
}
|
|
37
55
|
export declare function defineFxTable(): typeof FxTable;
|
|
38
56
|
//# sourceMappingURL=table.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/components/table/table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/components/table/table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAK5C,OAAO,WAAW,CAAC;AAEnB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,OAAQ,SAAQ,SAAS;IACrC,OAAgB,MAAM,SA0MpB;IAEF,WAAoB,kBAAkB,IAAI,MAAM,EAAE,CAajD;IAED,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,eAAe,CAAC,CAAmB;IAE3C,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAEpC;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAGxC;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAGtB;IAED,IAAI,WAAW,IAAI,MAAM,CAGxB;IACD,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,EAE5B;IAED,IAAI,IAAI,IAAI,OAAO,CAElB;IAED,OAAO,KAAK,OAAO,GAuBlB;IAED,OAAO,KAAK,eAAe,GAI1B;cAEkB,iBAAiB,IAAI,IAAI;cAOzB,oBAAoB,IAAI,IAAI;IAK/C,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,WAAW;IAiDnB,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,QAAQ;cAaG,MAAM,IAAI,IAAI;IAyNjC,OAAO,CAAC,qBAAqB;CAM7B;AAED,wBAAgB,aAAa,IAAI,OAAO,OAAO,CAE9C"}
|