@wrrdev/fenix-ui 1.0.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 +117 -0
- package/dist/cdn.d.ts +6 -0
- package/dist/cdn.d.ts.map +1 -0
- package/dist/components/alert/alert.d.ts +14 -0
- package/dist/components/alert/alert.d.ts.map +1 -0
- package/dist/components/alert/alert.js +74 -0
- package/dist/components/alert/alert.js.map +1 -0
- package/dist/components/alert/index.d.ts +8 -0
- package/dist/components/alert/index.d.ts.map +1 -0
- package/dist/components/alert/index.js +7 -0
- package/dist/components/alert/index.js.map +1 -0
- package/dist/components/autocomplete/autocomplete.d.ts +20 -0
- package/dist/components/autocomplete/autocomplete.d.ts.map +1 -0
- package/dist/components/autocomplete/autocomplete.js +144 -0
- package/dist/components/autocomplete/autocomplete.js.map +1 -0
- package/dist/components/autocomplete/index.d.ts +8 -0
- package/dist/components/autocomplete/index.d.ts.map +1 -0
- package/dist/components/autocomplete/index.js +7 -0
- package/dist/components/autocomplete/index.js.map +1 -0
- package/dist/components/badge/badge.d.ts +14 -0
- package/dist/components/badge/badge.d.ts.map +1 -0
- package/dist/components/badge/badge.js +46 -0
- package/dist/components/badge/badge.js.map +1 -0
- package/dist/components/badge/index.d.ts +2 -0
- package/dist/components/badge/index.d.ts.map +1 -0
- package/dist/components/badge/index.js +7 -0
- package/dist/components/badge/index.js.map +1 -0
- package/dist/components/button/button.d.ts +30 -0
- package/dist/components/button/button.d.ts.map +1 -0
- package/dist/components/button/button.js +194 -0
- package/dist/components/button/button.js.map +1 -0
- package/dist/components/button/index.d.ts +2 -0
- package/dist/components/button/index.d.ts.map +1 -0
- package/dist/components/button/index.js +7 -0
- package/dist/components/button/index.js.map +1 -0
- package/dist/components/calendar/calendar.d.ts +39 -0
- package/dist/components/calendar/calendar.d.ts.map +1 -0
- package/dist/components/calendar/calendar.js +346 -0
- package/dist/components/calendar/calendar.js.map +1 -0
- package/dist/components/calendar/index.d.ts +2 -0
- package/dist/components/calendar/index.d.ts.map +1 -0
- package/dist/components/calendar/index.js +7 -0
- package/dist/components/calendar/index.js.map +1 -0
- package/dist/components/checkbox/checkbox.d.ts +24 -0
- package/dist/components/checkbox/checkbox.d.ts.map +1 -0
- package/dist/components/checkbox/checkbox.js +142 -0
- package/dist/components/checkbox/checkbox.js.map +1 -0
- package/dist/components/checkbox/index.d.ts +2 -0
- package/dist/components/checkbox/index.d.ts.map +1 -0
- package/dist/components/checkbox/index.js +7 -0
- package/dist/components/checkbox/index.js.map +1 -0
- package/dist/components/datepicker/datepicker.d.ts +62 -0
- package/dist/components/datepicker/datepicker.d.ts.map +1 -0
- package/dist/components/datepicker/datepicker.js +441 -0
- package/dist/components/datepicker/datepicker.js.map +1 -0
- package/dist/components/datepicker/index.d.ts +3 -0
- package/dist/components/datepicker/index.d.ts.map +1 -0
- package/dist/components/datepicker/index.js +8 -0
- package/dist/components/datepicker/index.js.map +1 -0
- package/dist/components/dialog/dialog.d.ts +19 -0
- package/dist/components/dialog/dialog.d.ts.map +1 -0
- package/dist/components/dialog/dialog.js +134 -0
- package/dist/components/dialog/dialog.js.map +1 -0
- package/dist/components/dialog/index.d.ts +8 -0
- package/dist/components/dialog/index.d.ts.map +1 -0
- package/dist/components/dialog/index.js +7 -0
- package/dist/components/dialog/index.js.map +1 -0
- package/dist/components/drawer/drawer.d.ts +27 -0
- package/dist/components/drawer/drawer.d.ts.map +1 -0
- package/dist/components/drawer/drawer.js +195 -0
- package/dist/components/drawer/drawer.js.map +1 -0
- package/dist/components/drawer/index.d.ts +8 -0
- package/dist/components/drawer/index.d.ts.map +1 -0
- package/dist/components/drawer/index.js +7 -0
- package/dist/components/drawer/index.js.map +1 -0
- package/dist/components/dropdown/dropdown.d.ts +28 -0
- package/dist/components/dropdown/dropdown.d.ts.map +1 -0
- package/dist/components/dropdown/dropdown.js +137 -0
- package/dist/components/dropdown/dropdown.js.map +1 -0
- package/dist/components/dropdown/index.d.ts +9 -0
- package/dist/components/dropdown/index.d.ts.map +1 -0
- package/dist/components/dropdown/index.js +9 -0
- package/dist/components/dropdown/index.js.map +1 -0
- package/dist/components/floatlabel/floatlabel.d.ts +42 -0
- package/dist/components/floatlabel/floatlabel.d.ts.map +1 -0
- package/dist/components/floatlabel/floatlabel.js +270 -0
- package/dist/components/floatlabel/floatlabel.js.map +1 -0
- package/dist/components/floatlabel/index.d.ts +2 -0
- package/dist/components/floatlabel/index.d.ts.map +1 -0
- package/dist/components/floatlabel/index.js +7 -0
- package/dist/components/floatlabel/index.js.map +1 -0
- package/dist/components/input/index.d.ts +2 -0
- package/dist/components/input/index.d.ts.map +1 -0
- package/dist/components/input/index.js +7 -0
- package/dist/components/input/index.js.map +1 -0
- package/dist/components/input/input.d.ts +22 -0
- package/dist/components/input/input.d.ts.map +1 -0
- package/dist/components/input/input.js +169 -0
- package/dist/components/input/input.js.map +1 -0
- package/dist/components/multiselect/index.d.ts +2 -0
- package/dist/components/multiselect/index.d.ts.map +1 -0
- package/dist/components/multiselect/index.js +7 -0
- package/dist/components/multiselect/index.js.map +1 -0
- package/dist/components/multiselect/multiselect.d.ts +32 -0
- package/dist/components/multiselect/multiselect.d.ts.map +1 -0
- package/dist/components/multiselect/multiselect.js +389 -0
- package/dist/components/multiselect/multiselect.js.map +1 -0
- package/dist/components/pagination/index.d.ts +8 -0
- package/dist/components/pagination/index.d.ts.map +1 -0
- package/dist/components/pagination/index.js +7 -0
- package/dist/components/pagination/index.js.map +1 -0
- package/dist/components/pagination/pagination.d.ts +23 -0
- package/dist/components/pagination/pagination.d.ts.map +1 -0
- package/dist/components/pagination/pagination.js +121 -0
- package/dist/components/pagination/pagination.js.map +1 -0
- package/dist/components/progress/index.d.ts +8 -0
- package/dist/components/progress/index.d.ts.map +1 -0
- package/dist/components/progress/index.js +7 -0
- package/dist/components/progress/index.js.map +1 -0
- package/dist/components/progress/progress.d.ts +18 -0
- package/dist/components/progress/progress.d.ts.map +1 -0
- package/dist/components/progress/progress.js +99 -0
- package/dist/components/progress/progress.js.map +1 -0
- package/dist/components/radio/index.d.ts +2 -0
- package/dist/components/radio/index.d.ts.map +1 -0
- package/dist/components/radio/index.js +7 -0
- package/dist/components/radio/index.js.map +1 -0
- package/dist/components/radio/radio.d.ts +23 -0
- package/dist/components/radio/radio.d.ts.map +1 -0
- package/dist/components/radio/radio.js +133 -0
- package/dist/components/radio/radio.js.map +1 -0
- package/dist/components/select/index.d.ts +2 -0
- package/dist/components/select/index.d.ts.map +1 -0
- package/dist/components/select/index.js +7 -0
- package/dist/components/select/index.js.map +1 -0
- package/dist/components/select/select.d.ts +36 -0
- package/dist/components/select/select.d.ts.map +1 -0
- package/dist/components/select/select.js +287 -0
- package/dist/components/select/select.js.map +1 -0
- package/dist/components/skeleton/index.d.ts +8 -0
- package/dist/components/skeleton/index.d.ts.map +1 -0
- package/dist/components/skeleton/index.js +7 -0
- package/dist/components/skeleton/index.js.map +1 -0
- package/dist/components/skeleton/skeleton.d.ts +13 -0
- package/dist/components/skeleton/skeleton.d.ts.map +1 -0
- package/dist/components/skeleton/skeleton.js +57 -0
- package/dist/components/skeleton/skeleton.js.map +1 -0
- package/dist/components/spinner/index.d.ts +2 -0
- package/dist/components/spinner/index.d.ts.map +1 -0
- package/dist/components/spinner/index.js +7 -0
- package/dist/components/spinner/index.js.map +1 -0
- package/dist/components/spinner/spinner.d.ts +16 -0
- package/dist/components/spinner/spinner.d.ts.map +1 -0
- package/dist/components/spinner/spinner.js +50 -0
- package/dist/components/spinner/spinner.js.map +1 -0
- package/dist/components/switch/index.d.ts +2 -0
- package/dist/components/switch/index.d.ts.map +1 -0
- package/dist/components/switch/index.js +7 -0
- package/dist/components/switch/index.js.map +1 -0
- package/dist/components/switch/switch.d.ts +22 -0
- package/dist/components/switch/switch.d.ts.map +1 -0
- package/dist/components/switch/switch.js +115 -0
- package/dist/components/switch/switch.js.map +1 -0
- package/dist/components/table/index.d.ts +2 -0
- package/dist/components/table/index.d.ts.map +1 -0
- package/dist/components/table/index.js +7 -0
- package/dist/components/table/index.js.map +1 -0
- package/dist/components/table/table.d.ts +38 -0
- package/dist/components/table/table.d.ts.map +1 -0
- package/dist/components/table/table.js +258 -0
- package/dist/components/table/table.js.map +1 -0
- package/dist/components/tabs/index.d.ts +9 -0
- package/dist/components/tabs/index.d.ts.map +1 -0
- package/dist/components/tabs/index.js +9 -0
- package/dist/components/tabs/index.js.map +1 -0
- package/dist/components/tabs/tabs.d.ts +38 -0
- package/dist/components/tabs/tabs.d.ts.map +1 -0
- package/dist/components/tabs/tabs.js +162 -0
- package/dist/components/tabs/tabs.js.map +1 -0
- package/dist/components/textarea/index.d.ts +8 -0
- package/dist/components/textarea/index.d.ts.map +1 -0
- package/dist/components/textarea/index.js +7 -0
- package/dist/components/textarea/index.js.map +1 -0
- package/dist/components/textarea/textarea.d.ts +19 -0
- package/dist/components/textarea/textarea.d.ts.map +1 -0
- package/dist/components/textarea/textarea.js +109 -0
- package/dist/components/textarea/textarea.js.map +1 -0
- package/dist/components/toast/index.d.ts +8 -0
- package/dist/components/toast/index.d.ts.map +1 -0
- package/dist/components/toast/index.js +8 -0
- package/dist/components/toast/index.js.map +1 -0
- package/dist/components/toast/toast.d.ts +40 -0
- package/dist/components/toast/toast.d.ts.map +1 -0
- package/dist/components/toast/toast.js +176 -0
- package/dist/components/toast/toast.js.map +1 -0
- package/dist/components/tooltip/index.d.ts +8 -0
- package/dist/components/tooltip/index.d.ts.map +1 -0
- package/dist/components/tooltip/index.js +7 -0
- package/dist/components/tooltip/index.js.map +1 -0
- package/dist/components/tooltip/tooltip.d.ts +14 -0
- package/dist/components/tooltip/tooltip.d.ts.map +1 -0
- package/dist/components/tooltip/tooltip.js +86 -0
- package/dist/components/tooltip/tooltip.js.map +1 -0
- package/dist/core/base.d.ts +29 -0
- package/dist/core/base.d.ts.map +1 -0
- package/dist/core/base.js +41 -0
- package/dist/core/base.js.map +1 -0
- package/dist/core/css.d.ts +6 -0
- package/dist/core/css.d.ts.map +1 -0
- package/dist/core/css.js +11 -0
- package/dist/core/css.js.map +1 -0
- package/dist/core/define.d.ts +8 -0
- package/dist/core/define.d.ts.map +1 -0
- package/dist/core/define.js +10 -0
- package/dist/core/define.js.map +1 -0
- package/dist/core/presets.d.ts +40 -0
- package/dist/core/presets.d.ts.map +1 -0
- package/dist/core/presets.js +80 -0
- package/dist/core/presets.js.map +1 -0
- package/dist/core/theme.d.ts +47 -0
- package/dist/core/theme.d.ts.map +1 -0
- package/dist/core/theme.js +76 -0
- package/dist/core/theme.js.map +1 -0
- package/dist/core/tokens.d.ts +36 -0
- package/dist/core/tokens.d.ts.map +1 -0
- package/dist/core/tokens.js +83 -0
- package/dist/core/tokens.js.map +1 -0
- package/dist/docs/app.d.ts +37 -0
- package/dist/docs/app.d.ts.map +1 -0
- package/dist/fenix-ui.esm.js +4471 -0
- package/dist/fenix-ui.esm.js.map +1 -0
- package/dist/fenix-ui.umd.min.js +2022 -0
- package/dist/fenix-ui2.esm.js +82 -0
- package/dist/fenix-ui2.esm.js.map +1 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +107 -0
- package/dist/index.js.map +1 -0
- package/dist/plugins/auto-import.d.ts +18 -0
- package/dist/plugins/auto-import.d.ts.map +1 -0
- package/dist/plugins/auto-import.js +69 -0
- package/dist/plugins/auto-import.js.map +1 -0
- package/dist/plugins/index.d.ts +25 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +21 -0
- package/dist/plugins/index.js.map +1 -0
- package/package.json +169 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.js","sources":["../../../src/components/calendar/calendar.ts"],"sourcesContent":["import { FxElement } from '../../core/base';\nimport { css } from '../../core/css';\nimport { defineElement } from '../../core/define';\n\n/**\n * <fx-calendar> — Calendário simples ou por período (range).\n *\n * Atributos:\n * - value=\"YYYY-MM-DD\" → seleção simples\n * - range + start/end → seleção por período\n * - min/max=\"YYYY | YYYY-MM | YYYY-MM-DD\" → limites por ano, mês ou dia\n * - locale (padrão pt-BR), disabled\n *\n * Navegação : clique no cabeçalho (mês) → grade de meses;\n * clique no ano → grade de anos; ‹ › navegam conforme a visualização.\n *\n * Evento: `change` (composed):\n * - simples: detail { value }\n * - range: detail { start, end }\n */\n\ntype View = 'days' | 'months' | 'years';\ninterface Bound {\n lo: number;\n hi: number;\n}\n\nconst key = (y: number, m1: number, d: number): number => y * 10000 + m1 * 100 + d;\n\n/** Aceita \"YYYY\", \"YYYY-MM\" ou \"YYYY-MM-DD\" e devolve [menorChave, maiorChave]. */\nfunction parseBound(raw: string): Bound | null {\n const m = /^(\\d{4})(?:-(\\d{2}))?(?:-(\\d{2}))?$/.exec(raw.trim());\n if (!m) return null;\n const y = +m[1];\n const m1 = m[2] ? +m[2] : 1;\n const d = m[3] ? +m[3] : null;\n if (d !== null) return { lo: key(y, m1, d), hi: key(y, m1, d) };\n if (m[2]) return { lo: key(y, m1, 1), hi: key(y, m1, 31) };\n return { lo: key(y, 1, 1), hi: key(y, 12, 31) };\n}\n\nexport class FxCalendar extends FxElement {\n static override styles = css`\n :host {\n display: inline-block;\n font-family: var(--fx-font-family);\n font-size: var(--fx-font-size);\n color: var(--fx-text-default);\n background: var(--fx-surface-background);\n border: 1px solid var(--fx-border-default);\n border-radius: var(--fx-radius-md);\n box-shadow: var(--fx-shadow-sm);\n padding: var(--fx-space-sm);\n user-select: none;\n }\n :host([disabled]) { opacity: 0.55; pointer-events: none; }\n .head {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--fx-space-xs);\n margin-bottom: var(--fx-space-xs);\n }\n .nav,\n .title {\n border: none;\n background: none;\n color: var(--fx-text-default);\n cursor: pointer;\n font: inherit;\n border-radius: var(--fx-radius-sm);\n padding: var(--fx-space-3xs, 4px) var(--fx-space-xs);\n }\n .nav:hover, .title:hover { background: var(--fx-surface-surface-hover); }\n .title { font-weight: var(--fx-font-weight); text-transform: capitalize; flex: 1; }\n .grid {\n display: grid;\n grid-template-columns: repeat(7, 34px);\n gap: 2px;\n }\n .grid.months, .grid.years { grid-template-columns: repeat(4, minmax(52px, 1fr)); }\n .wd {\n text-align: center;\n color: var(--fx-text-muted);\n font-size: calc(var(--fx-font-size) - 2px);\n padding: var(--fx-space-3xs, 4px) 0;\n text-transform: capitalize;\n }\n .cell {\n position: relative;\n border: none;\n background: none;\n font: inherit;\n color: var(--fx-text-default);\n height: 32px;\n border-radius: var(--fx-radius-sm);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n .cell:hover { background: color-mix(in srgb, var(--fx-color-primary) 12%, transparent); }\n .cell.muted { color: var(--fx-text-disabled); }\n .cell.today::after {\n content: '';\n position: absolute;\n bottom: 3px;\n width: 4px;\n height: 4px;\n border-radius: var(--fx-radius-full);\n background: var(--fx-color-primary);\n }\n .cell.sel {\n background: var(--fx-color-primary);\n color: #fff;\n font-weight: var(--fx-font-weight);\n }\n .cell.sel::after { background: #fff; }\n .cell.in-range {\n background: color-mix(in srgb, var(--fx-color-primary) 16%, transparent);\n border-radius: 0;\n }\n .grid.months .cell, .grid.years .cell { height: 40px; }\n .cell[disabled] { opacity: 0.35; cursor: not-allowed; pointer-events: none; }\n `;\n\n static override get observedAttributes(): string[] {\n return ['value', 'start', 'end', 'min', 'max', 'range', 'mode', 'values', 'locale', 'disabled'];\n }\n\n private view: View = 'days';\n private cursor = { y: new Date().getFullYear(), m: new Date().getMonth() };\n /** Período em construção (chaves numéricas). */\n private pickStart: number | null = null;\n private pickEnd: number | null = null;\n\n /** Modo de seleção: 'single' | 'range' | 'multiple'. */\n get mode(): 'single' | 'range' | 'multiple' {\n const m = this.getAttr('mode');\n if (m === 'range' || m === 'multiple') return m;\n return this.hasAttr('range') ? 'range' : 'single';\n }\n set mode(m: 'single' | 'range' | 'multiple') {\n this.setAttribute('mode', m);\n }\n\n get range(): boolean {\n return this.mode === 'range';\n }\n set range(value: boolean) {\n this.toggleAttr('range', Boolean(value));\n }\n\n /** Datas selecionadas no modo multiple (CSV no atributo). */\n get values(): string[] {\n const csv = this.getAttr('values');\n return csv ? csv.split(',').map((v) => v.trim()).filter(Boolean) : [];\n }\n set values(list: string[]) {\n this.setAttribute('values', list.join(','));\n }\n\n get value(): string {\n return this.getAttr('value');\n }\n set value(v: string) {\n this.setAttribute('value', v);\n }\n\n private bounds(): { min: Bound | null; max: Bound | null } {\n return {\n min: parseBound(this.getAttr('min', '')),\n max: parseBound(this.getAttr('max', '')),\n };\n }\n\n private locale(): string {\n return this.getAttr('locale', 'pt-BR');\n }\n\n private fmt(opts: Intl.DateTimeFormatOptions, d: Date): string {\n try {\n return new Intl.DateTimeFormat(this.locale(), opts).format(d);\n } catch {\n return new Intl.DateTimeFormat('pt-BR', opts).format(d);\n }\n }\n\n private dayDisabled(y: number, m: number, d: number): boolean {\n const { min, max } = this.bounds();\n const k = key(y, m + 1, d);\n return (min !== null && k < min.lo) || (max !== null && k > max.hi);\n }\n\n private monthDisabled(y: number, m1: number): boolean {\n const { min, max } = this.bounds();\n const lo = key(y, m1, 1);\n const hi = key(y, m1, 31);\n return (min !== null && hi < min.lo) || (max !== null && lo > max.hi);\n }\n\n private yearDisabled(y: number): boolean {\n const { min, max } = this.bounds();\n const lo = key(y, 1, 1);\n const hi = key(y, 12, 31);\n return (min !== null && hi < min.lo) || (max !== null && lo > max.hi);\n }\n\n private dayKeyOf(date: Date): number {\n return key(date.getFullYear(), date.getMonth() + 1, date.getDate());\n }\n\n private keyToDate(k: number): Date {\n return new Date(Math.floor(k / 10000), (Math.floor(k / 100) % 100) - 1, k % 100);\n }\n\n private iso(k: number): string {\n const d = this.keyToDate(k);\n const p = (n: number): string => String(n).padStart(2, '0');\n return `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())}`;\n }\n\n /** Seleção atual para pintura (chaves). */\n private selection(): {\n start: number | null;\n end: number | null;\n single: number | null;\n multi: Set<number>;\n } {\n const multi = new Set(this.values.map((iso) => parseBound(iso)?.lo ?? 0).filter(Boolean));\n if (this.mode === 'range') {\n let s = this.pickStart;\n let e = this.pickEnd;\n const attrS = parseBound(this.getAttr('start', ''));\n const attrE = parseBound(this.getAttr('end', ''));\n if (s === null && attrS) s = attrS.lo;\n if (e === null && attrE) e = attrE.lo;\n return { start: s, end: e, single: null, multi };\n }\n if (this.mode === 'multiple') {\n return { start: null, end: null, single: null, multi };\n }\n const v = parseBound(this.getAttr('value', ''));\n return { start: null, end: null, single: v ? v.lo : null, multi };\n }\n\n private emit(): void {\n if (this.mode === 'range') {\n const detail = {\n start: this.pickStart !== null ? this.iso(this.pickStart) : this.getAttr('start', ''),\n end: this.pickEnd !== null ? this.iso(this.pickEnd) : this.getAttr('end', ''),\n };\n this.setAttribute('start', detail.start);\n this.setAttribute('end', detail.end);\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true, detail }));\n } else if (this.mode === 'multiple') {\n const values = this.values;\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true, detail: { values } }));\n } else {\n const value = this.getAttr('value');\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true, detail: { value } }));\n }\n }\n\n private pickDay(k: number): void {\n if (this.mode === 'range') {\n if (this.pickStart === null || this.pickEnd !== null) {\n this.pickStart = k;\n this.pickEnd = null;\n this.setAttribute('start', this.iso(k));\n this.removeAttribute('end');\n this.render();\n return; // emite só ao completar o período\n }\n if (k < this.pickStart) [this.pickStart, this.pickEnd] = [k, this.pickStart];\n else this.pickEnd = k;\n this.emit();\n } else if (this.mode === 'multiple') {\n const set = new Set(this.values);\n const iso = this.iso(k);\n if (set.has(iso)) set.delete(iso);\n else set.add(iso);\n this.values = [...set].sort();\n this.emit();\n } else {\n this.value = this.iso(k);\n this.emit();\n }\n this.render();\n }\n\n private navigate(dir: -1 | 1): void {\n if (this.view === 'days') {\n const d = new Date(this.cursor.y, this.cursor.m + dir, 1);\n this.cursor = { y: d.getFullYear(), m: d.getMonth() };\n } else if (this.view === 'months') {\n this.cursor.y += dir;\n } else {\n this.cursor.y += dir * 12;\n }\n this.render();\n }\n\n protected override render(): void {\n const todayK = this.dayKeyOf(new Date());\n const sel = this.selection();\n const loc = this.locale();\n\n const titles: Record<View, string> = {\n days: this.fmt({ month: 'long', year: 'numeric' }, new Date(this.cursor.y, this.cursor.m, 1)),\n months: String(this.cursor.y),\n years: `${Math.floor(this.cursor.y / 12) * 12} – ${Math.floor(this.cursor.y / 12) * 12 + 11}`,\n };\n\n let cells = '';\n if (this.view === 'days') {\n const wds = [...Array(7)].map((_, i) =>\n this.fmt({ weekday: 'short' }, new Date(2024, 8, 1 + i)), // 01/09/2024 foi domingo\n );\n cells =\n wds.map((w) => `<span class=\"wd\">${w}</span>`).join('') +\n this.daysHtml(todayK, sel, loc);\n } else if (this.view === 'months') {\n cells = [...Array(12)]\n .map((_, i) => {\n const dis = this.monthDisabled(this.cursor.y, i + 1);\n return `<button type=\"button\" class=\"cell\" data-month=\"${i}\" ${dis ? 'disabled' : ''}>${this.fmt({ month: 'short' }, new Date(this.cursor.y, i, 1))}</button>`;\n })\n .join('');\n } else {\n const base = Math.floor(this.cursor.y / 12) * 12;\n cells = [...Array(12)]\n .map((_, i) => {\n const y = base + i;\n const dis = this.yearDisabled(y);\n return `<button type=\"button\" class=\"cell\" data-year=\"${y}\" ${dis ? 'disabled' : ''}>${y}</button>`;\n })\n .join('');\n }\n\n const titleAction =\n this.view === 'days'\n ? `data-goto=\"months\"`\n : this.view === 'months'\n ? `data-goto=\"years\"`\n : '';\n\n this.setTemplate(`\n <div class=\"head\">\n <button type=\"button\" class=\"nav\" data-nav=\"-1\" aria-label=\"Anterior\">‹</button>\n <button type=\"button\" class=\"title\" part=\"title\" ${titleAction}>${titles[this.view]}</button>\n <button type=\"button\" class=\"nav\" data-nav=\"1\" aria-label=\"Próximo\">›</button>\n </div>\n <div class=\"grid ${this.view}\">${cells}</div>\n `);\n\n this.root.querySelectorAll<HTMLButtonElement>('[data-nav]').forEach((b) =>\n b.addEventListener('click', () => this.navigate(Number(b.dataset.nav) as -1 | 1)),\n );\n const gotoBtn = this.root.querySelector<HTMLElement>('[data-goto]');\n gotoBtn?.addEventListener('click', () => {\n this.view = gotoBtn.dataset.goto as View;\n this.render();\n });\n\n this.root.querySelectorAll<HTMLButtonElement>('[data-day]').forEach((b) =>\n b.addEventListener('click', () => this.pickDay(Number(b.dataset.day!))),\n );\n this.root.querySelectorAll<HTMLButtonElement>('[data-month]').forEach((b) =>\n b.addEventListener('click', () => {\n this.cursor.m = Number(b.dataset.month!);\n this.view = 'days';\n this.render();\n }),\n );\n this.root.querySelectorAll<HTMLButtonElement>('[data-year]').forEach((b) =>\n b.addEventListener('click', () => {\n this.cursor.y = Number(b.dataset.year!);\n this.view = 'months';\n this.render();\n }),\n );\n }\n\n /** Grade de dias com preenchimento do mês anterior. */\n private daysHtml(todayK: number, sel: ReturnType<FxCalendar['selection']>, _loc: string): string {\n const { y, m } = this.cursor;\n const first = new Date(y, m, 1).getDay(); // 0=domingo\n const total = new Date(y, m + 1, 0).getDate();\n const prevTotal = new Date(y, m, 0).getDate();\n\n let html = '';\n for (let i = first - 1; i >= 0; i--) {\n html += `<span class=\"cell muted\">${prevTotal - i}</span>`;\n }\n for (let d = 1; d <= total; d++) {\n const k = key(y, m + 1, d);\n const isSel =\n sel.single === k || sel.start === k || sel.end === k || sel.multi.has(k);\n const inRange =\n sel.start !== null && sel.end !== null && k > sel.start && k < sel.end;\n const cls = ['cell', isSel ? 'sel' : '', inRange ? 'in-range' : '', k === todayK ? 'today' : '']\n .filter(Boolean)\n .join(' ');\n html += `<button type=\"button\" class=\"${cls}\" data-day=\"${k}\" ${this.dayDisabled(y, m, d) ? 'disabled' : ''}>${d}</button>`;\n }\n return html;\n }\n}\n\nexport function defineFxCalendar(): typeof FxCalendar {\n return defineElement('fx-calendar', FxCalendar);\n}\n\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/calendar/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/calendar/index.ts"],"sourcesContent":["import { defineFxCalendar } from './calendar';\n\n// Reexporta a classe para uso programático (instanceof, herança).\nexport { FxCalendar } from './calendar';\n\n// Auto-registro ao importar o subpath `@wrrdev/fenix-ui/calendar`.\ndefineFxCalendar();\n"],"names":[],"mappings":";;AAMA,iBAAA;"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { FxElement } from '../../core/base';
|
|
2
|
+
/**
|
|
3
|
+
* <fx-checkbox> — Caixa de seleção com suporte a estado indeterminado.
|
|
4
|
+
*
|
|
5
|
+
* Atributos: checked, indeterminate, disabled, value, size (sm|md|lg).
|
|
6
|
+
* Evento: `change` (composed, detail: { checked, value }).
|
|
7
|
+
*/
|
|
8
|
+
export declare class FxCheckbox extends FxElement {
|
|
9
|
+
static styles: string;
|
|
10
|
+
static get observedAttributes(): string[];
|
|
11
|
+
get checked(): boolean;
|
|
12
|
+
set checked(value: boolean);
|
|
13
|
+
get indeterminate(): boolean;
|
|
14
|
+
set indeterminate(value: boolean);
|
|
15
|
+
get disabled(): boolean;
|
|
16
|
+
set disabled(value: boolean);
|
|
17
|
+
/** Tamanho do controle. Padrão: `'md'`. */
|
|
18
|
+
get size(): string;
|
|
19
|
+
set size(value: string);
|
|
20
|
+
protected render(): void;
|
|
21
|
+
private toggle;
|
|
22
|
+
}
|
|
23
|
+
export declare function defineFxCheckbox(): typeof FxCheckbox;
|
|
24
|
+
//# sourceMappingURL=checkbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../../src/components/checkbox/checkbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C;;;;;GAKG;AACH,qBAAa,UAAW,SAAQ,SAAS;IACvC,OAAgB,MAAM,SA6DpB;IAEF,WAAoB,kBAAkB,IAAI,MAAM,EAAE,CAEjD;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAEzB;IAED,IAAI,aAAa,IAAI,OAAO,CAE3B;IACD,IAAI,aAAa,CAAC,KAAK,EAAE,OAAO,EAE/B;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAE1B;IAED,2CAA2C;IAC3C,IAAI,IAAI,IAAI,MAAM,CAGjB;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAErB;cAEkB,MAAM,IAAI,IAAI;IA6BjC,OAAO,CAAC,MAAM;CAYf;AAED,wBAAgB,gBAAgB,IAAI,OAAO,UAAU,CAEpD"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { FxElement } from "../../core/base.js";
|
|
2
|
+
import { css } from "../../core/css.js";
|
|
3
|
+
import { defineElement } from "../../core/define.js";
|
|
4
|
+
const _FxCheckbox = class _FxCheckbox extends FxElement {
|
|
5
|
+
static get observedAttributes() {
|
|
6
|
+
return ["checked", "disabled", "indeterminate"];
|
|
7
|
+
}
|
|
8
|
+
get checked() {
|
|
9
|
+
return this.hasAttr("checked");
|
|
10
|
+
}
|
|
11
|
+
set checked(value) {
|
|
12
|
+
this.toggleAttr("checked", Boolean(value));
|
|
13
|
+
}
|
|
14
|
+
get indeterminate() {
|
|
15
|
+
return this.hasAttr("indeterminate");
|
|
16
|
+
}
|
|
17
|
+
set indeterminate(value) {
|
|
18
|
+
this.toggleAttr("indeterminate", Boolean(value));
|
|
19
|
+
}
|
|
20
|
+
get disabled() {
|
|
21
|
+
return this.hasAttr("disabled");
|
|
22
|
+
}
|
|
23
|
+
set disabled(value) {
|
|
24
|
+
this.toggleAttr("disabled", Boolean(value));
|
|
25
|
+
}
|
|
26
|
+
/** Tamanho do controle. Padrão: `'md'`. */
|
|
27
|
+
get size() {
|
|
28
|
+
const s = this.getAttr("size", "md");
|
|
29
|
+
return s === "sm" || s === "lg" ? s : "md";
|
|
30
|
+
}
|
|
31
|
+
set size(value) {
|
|
32
|
+
this.setAttribute("size", value);
|
|
33
|
+
}
|
|
34
|
+
render() {
|
|
35
|
+
const px = this.size === "sm" ? "14px" : this.size === "lg" ? "22px" : "18px";
|
|
36
|
+
if (!this.style.getPropertyValue("--fx-size-checkbox")) {
|
|
37
|
+
this.style.setProperty("--fx-size-checkbox", px);
|
|
38
|
+
}
|
|
39
|
+
this.setTemplate(`
|
|
40
|
+
<span class="box" part="box" role="checkbox" tabindex="0"
|
|
41
|
+
aria-checked="${this.indeterminate ? "mixed" : this.checked}"
|
|
42
|
+
aria-disabled="${this.disabled}">
|
|
43
|
+
<span class="control" part="control">
|
|
44
|
+
<span class="mark">${this.indeterminate ? "–" : "✓"}</span>
|
|
45
|
+
</span>
|
|
46
|
+
<span class="label" part="label"><slot></slot></span>
|
|
47
|
+
</span>
|
|
48
|
+
`);
|
|
49
|
+
const box = this.root.querySelector(".box");
|
|
50
|
+
if (!box) return;
|
|
51
|
+
box.addEventListener("click", () => this.toggle());
|
|
52
|
+
box.addEventListener("keydown", (e) => {
|
|
53
|
+
if (e.key === " " || e.key === "Enter") {
|
|
54
|
+
e.preventDefault();
|
|
55
|
+
this.toggle();
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
toggle() {
|
|
60
|
+
if (this.disabled) return;
|
|
61
|
+
this.indeterminate = false;
|
|
62
|
+
this.checked = !this.checked;
|
|
63
|
+
this.dispatchEvent(
|
|
64
|
+
new CustomEvent("change", {
|
|
65
|
+
bubbles: true,
|
|
66
|
+
composed: true,
|
|
67
|
+
detail: { checked: this.checked, value: this.getAttr("value") }
|
|
68
|
+
})
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
_FxCheckbox.styles = css`
|
|
73
|
+
:host {
|
|
74
|
+
display: inline-flex;
|
|
75
|
+
vertical-align: middle;
|
|
76
|
+
font-family: var(--fx-font-family);
|
|
77
|
+
font-size: var(--fx-font-size);
|
|
78
|
+
}
|
|
79
|
+
.box {
|
|
80
|
+
display: inline-flex;
|
|
81
|
+
align-items: center;
|
|
82
|
+
gap: var(--fx-space-sm);
|
|
83
|
+
cursor: pointer;
|
|
84
|
+
user-select: none;
|
|
85
|
+
color: var(--fx-text-default);
|
|
86
|
+
-webkit-tap-highlight-color: transparent;
|
|
87
|
+
}
|
|
88
|
+
.control {
|
|
89
|
+
width: var(--fx-size-checkbox, 18px);
|
|
90
|
+
height: var(--fx-size-checkbox, 18px);
|
|
91
|
+
flex-shrink: 0;
|
|
92
|
+
display: inline-flex;
|
|
93
|
+
align-items: center;
|
|
94
|
+
justify-content: center;
|
|
95
|
+
border: 2px solid var(--fx-border-hover);
|
|
96
|
+
border-radius: calc(var(--fx-radius-sm) + 2px);
|
|
97
|
+
background: var(--fx-surface-background);
|
|
98
|
+
color: #fff;
|
|
99
|
+
font-size: calc(var(--fx-size-checkbox, 18px) - 6px);
|
|
100
|
+
line-height: 1;
|
|
101
|
+
transition:
|
|
102
|
+
background-color var(--fx-motion-duration-fast) var(--fx-motion-easing),
|
|
103
|
+
border-color var(--fx-motion-duration-fast) var(--fx-motion-easing),
|
|
104
|
+
box-shadow var(--fx-motion-duration-fast) var(--fx-motion-easing);
|
|
105
|
+
}
|
|
106
|
+
.box:hover .control { border-color: var(--fx-color-primary); }
|
|
107
|
+
.box:focus-visible .control {
|
|
108
|
+
outline: none;
|
|
109
|
+
box-shadow: var(--fx-effect-focus-ring, none);
|
|
110
|
+
}
|
|
111
|
+
:host([checked]) .control {
|
|
112
|
+
background: var(--fx-color-primary);
|
|
113
|
+
border-color: var(--fx-color-primary);
|
|
114
|
+
}
|
|
115
|
+
:host([indeterminate]) .control {
|
|
116
|
+
background: var(--fx-color-primary);
|
|
117
|
+
border-color: var(--fx-color-primary);
|
|
118
|
+
}
|
|
119
|
+
/* Validação */
|
|
120
|
+
:host([error]) .control,
|
|
121
|
+
:host([invalid]) .control { border-color: var(--fx-color-danger, #dc2626); }
|
|
122
|
+
:host([success]) .control,
|
|
123
|
+
:host([valid]) .control { border-color: var(--fx-color-success, #16a34a); }
|
|
124
|
+
.mark { visibility: hidden; }
|
|
125
|
+
:host([checked]) .mark,
|
|
126
|
+
:host([indeterminate]) .mark { visibility: visible; }
|
|
127
|
+
.label { display: inline-flex; align-items: center; }
|
|
128
|
+
:host([disabled]) .box {
|
|
129
|
+
opacity: 0.55;
|
|
130
|
+
cursor: not-allowed;
|
|
131
|
+
pointer-events: none;
|
|
132
|
+
}
|
|
133
|
+
`;
|
|
134
|
+
let FxCheckbox = _FxCheckbox;
|
|
135
|
+
function defineFxCheckbox() {
|
|
136
|
+
return defineElement("fx-checkbox", FxCheckbox);
|
|
137
|
+
}
|
|
138
|
+
export {
|
|
139
|
+
FxCheckbox,
|
|
140
|
+
defineFxCheckbox
|
|
141
|
+
};
|
|
142
|
+
//# sourceMappingURL=checkbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkbox.js","sources":["../../../src/components/checkbox/checkbox.ts"],"sourcesContent":["import { FxElement } from '../../core/base';\nimport { css } from '../../core/css';\nimport { defineElement } from '../../core/define';\n\n/**\n * <fx-checkbox> — Caixa de seleção com suporte a estado indeterminado.\n *\n * Atributos: checked, indeterminate, disabled, value, size (sm|md|lg).\n * Evento: `change` (composed, detail: { checked, value }).\n */\nexport class FxCheckbox extends FxElement {\n static override styles = css`\n :host {\n display: inline-flex;\n vertical-align: middle;\n font-family: var(--fx-font-family);\n font-size: var(--fx-font-size);\n }\n .box {\n display: inline-flex;\n align-items: center;\n gap: var(--fx-space-sm);\n cursor: pointer;\n user-select: none;\n color: var(--fx-text-default);\n -webkit-tap-highlight-color: transparent;\n }\n .control {\n width: var(--fx-size-checkbox, 18px);\n height: var(--fx-size-checkbox, 18px);\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: 2px solid var(--fx-border-hover);\n border-radius: calc(var(--fx-radius-sm) + 2px);\n background: var(--fx-surface-background);\n color: #fff;\n font-size: calc(var(--fx-size-checkbox, 18px) - 6px);\n line-height: 1;\n transition:\n background-color var(--fx-motion-duration-fast) var(--fx-motion-easing),\n border-color var(--fx-motion-duration-fast) var(--fx-motion-easing),\n box-shadow var(--fx-motion-duration-fast) var(--fx-motion-easing);\n }\n .box:hover .control { border-color: var(--fx-color-primary); }\n .box:focus-visible .control {\n outline: none;\n box-shadow: var(--fx-effect-focus-ring, none);\n }\n :host([checked]) .control {\n background: var(--fx-color-primary);\n border-color: var(--fx-color-primary);\n }\n :host([indeterminate]) .control {\n background: var(--fx-color-primary);\n border-color: var(--fx-color-primary);\n }\n /* Validação */\n :host([error]) .control,\n :host([invalid]) .control { border-color: var(--fx-color-danger, #dc2626); }\n :host([success]) .control,\n :host([valid]) .control { border-color: var(--fx-color-success, #16a34a); }\n .mark { visibility: hidden; }\n :host([checked]) .mark,\n :host([indeterminate]) .mark { visibility: visible; }\n .label { display: inline-flex; align-items: center; }\n :host([disabled]) .box {\n opacity: 0.55;\n cursor: not-allowed;\n pointer-events: none;\n }\n `;\n\n static override get observedAttributes(): string[] {\n return ['checked', 'disabled', 'indeterminate'];\n }\n\n get checked(): boolean {\n return this.hasAttr('checked');\n }\n set checked(value: boolean) {\n this.toggleAttr('checked', Boolean(value));\n }\n\n get indeterminate(): boolean {\n return this.hasAttr('indeterminate');\n }\n set indeterminate(value: boolean) {\n this.toggleAttr('indeterminate', Boolean(value));\n }\n\n get disabled(): boolean {\n return this.hasAttr('disabled');\n }\n set disabled(value: boolean) {\n this.toggleAttr('disabled', Boolean(value));\n }\n\n /** Tamanho do controle. Padrão: `'md'`. */\n get size(): string {\n const s = this.getAttr('size', 'md');\n return s === 'sm' || s === 'lg' ? s : 'md';\n }\n set size(value: string) {\n this.setAttribute('size', value);\n }\n\n protected override render(): void {\n // Escala por tamanho via token local.\n const px = this.size === 'sm' ? '14px' : this.size === 'lg' ? '22px' : '18px';\n if (!this.style.getPropertyValue('--fx-size-checkbox')) {\n this.style.setProperty('--fx-size-checkbox', px);\n }\n\n this.setTemplate(`\n <span class=\"box\" part=\"box\" role=\"checkbox\" tabindex=\"0\"\n aria-checked=\"${this.indeterminate ? 'mixed' : this.checked}\"\n aria-disabled=\"${this.disabled}\">\n <span class=\"control\" part=\"control\">\n <span class=\"mark\">${this.indeterminate ? '–' : '✓'}</span>\n </span>\n <span class=\"label\" part=\"label\"><slot></slot></span>\n </span>\n `);\n\n const box = this.root.querySelector<HTMLElement>('.box');\n if (!box) return;\n box.addEventListener('click', () => this.toggle());\n box.addEventListener('keydown', (e) => {\n if ((e as KeyboardEvent).key === ' ' || (e as KeyboardEvent).key === 'Enter') {\n e.preventDefault();\n this.toggle();\n }\n });\n }\n\n private toggle(): void {\n if (this.disabled) return;\n this.indeterminate = false; // interagir resolve o estado misto\n this.checked = !this.checked;\n this.dispatchEvent(\n new CustomEvent('change', {\n bubbles: true,\n composed: true,\n detail: { checked: this.checked, value: this.getAttr('value') },\n }),\n );\n }\n}\n\nexport function defineFxCheckbox(): typeof FxCheckbox {\n return defineElement('fx-checkbox', FxCheckbox);\n}\n"],"names":[],"mappings":";;;AAUO,MAAM,cAAN,MAAM,oBAAmB,UAAU;AAAA,EAgExC,WAAoB,qBAA+B;AACjD,WAAO,CAAC,WAAW,YAAY,eAAe;AAAA,EAChD;AAAA,EAEA,IAAI,UAAmB;AACrB,WAAO,KAAK,QAAQ,SAAS;AAAA,EAC/B;AAAA,EACA,IAAI,QAAQ,OAAgB;AAC1B,SAAK,WAAW,WAAW,QAAQ,KAAK,CAAC;AAAA,EAC3C;AAAA,EAEA,IAAI,gBAAyB;AAC3B,WAAO,KAAK,QAAQ,eAAe;AAAA,EACrC;AAAA,EACA,IAAI,cAAc,OAAgB;AAChC,SAAK,WAAW,iBAAiB,QAAQ,KAAK,CAAC;AAAA,EACjD;AAAA,EAEA,IAAI,WAAoB;AACtB,WAAO,KAAK,QAAQ,UAAU;AAAA,EAChC;AAAA,EACA,IAAI,SAAS,OAAgB;AAC3B,SAAK,WAAW,YAAY,QAAQ,KAAK,CAAC;AAAA,EAC5C;AAAA;AAAA,EAGA,IAAI,OAAe;AACjB,UAAM,IAAI,KAAK,QAAQ,QAAQ,IAAI;AACnC,WAAO,MAAM,QAAQ,MAAM,OAAO,IAAI;AAAA,EACxC;AAAA,EACA,IAAI,KAAK,OAAe;AACtB,SAAK,aAAa,QAAQ,KAAK;AAAA,EACjC;AAAA,EAEmB,SAAe;AAEhC,UAAM,KAAK,KAAK,SAAS,OAAO,SAAS,KAAK,SAAS,OAAO,SAAS;AACvE,QAAI,CAAC,KAAK,MAAM,iBAAiB,oBAAoB,GAAG;AACtD,WAAK,MAAM,YAAY,sBAAsB,EAAE;AAAA,IACjD;AAEA,SAAK,YAAY;AAAA;AAAA,wBAEG,KAAK,gBAAgB,UAAU,KAAK,OAAO;AAAA,yBAC1C,KAAK,QAAQ;AAAA;AAAA,+BAEP,KAAK,gBAAgB,MAAM,GAAG;AAAA;AAAA;AAAA;AAAA,KAIxD;AAED,UAAM,MAAM,KAAK,KAAK,cAA2B,MAAM;AACvD,QAAI,CAAC,IAAK;AACV,QAAI,iBAAiB,SAAS,MAAM,KAAK,QAAQ;AACjD,QAAI,iBAAiB,WAAW,CAAC,MAAM;AACrC,UAAK,EAAoB,QAAQ,OAAQ,EAAoB,QAAQ,SAAS;AAC5E,UAAE,eAAA;AACF,aAAK,OAAA;AAAA,MACP;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEQ,SAAe;AACrB,QAAI,KAAK,SAAU;AACnB,SAAK,gBAAgB;AACrB,SAAK,UAAU,CAAC,KAAK;AACrB,SAAK;AAAA,MACH,IAAI,YAAY,UAAU;AAAA,QACxB,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAQ,EAAE,SAAS,KAAK,SAAS,OAAO,KAAK,QAAQ,OAAO,EAAA;AAAA,MAAE,CAC/D;AAAA,IAAA;AAAA,EAEL;AACF;AA1IE,YAAgB,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADpB,IAAM,aAAN;AA6IA,SAAS,mBAAsC;AACpD,SAAO,cAAc,eAAe,UAAU;AAChD;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/checkbox/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/checkbox/index.ts"],"sourcesContent":["import { defineFxCheckbox } from './checkbox';\n\n// Reexporta a classe para uso programático (instanceof, herança).\nexport { FxCheckbox } from './checkbox';\n\n// Auto-registro ao importar o subpath `@wrrdev/fenix-ui/checkbox`.\ndefineFxCheckbox();\n"],"names":[],"mappings":";;AAMA,iBAAA;"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { FxElement } from '../../core/base';
|
|
2
|
+
/**
|
|
3
|
+
* <fx-datepicker> — Campo de data com calendário suspenso.
|
|
4
|
+
*
|
|
5
|
+
* Um input com ícone de calendário no final; ao clicar, abre o
|
|
6
|
+
* <fx-calendar> em um popover. As datas selecionadas aparecem no input.
|
|
7
|
+
*
|
|
8
|
+
* Atributos:
|
|
9
|
+
* - mode="single" | "range" | "multiple" (padrão: single)
|
|
10
|
+
* - value="YYYY-MM-DD" → single
|
|
11
|
+
* - start/end → range
|
|
12
|
+
* - values="a,b,c" → múltiplas datas (CSV)
|
|
13
|
+
* - min/max, placeholder, disabled, clearable, size (sm|md|lg)
|
|
14
|
+
* - format="dd/mm/yyyy" → máscara de exibição (tokens: dd mm yyyy, HH MM SS)
|
|
15
|
+
* - show-time → inclui seleção de hora:minuto:segundo no popover;
|
|
16
|
+
* o valor passa a ser "YYYY-MM-DDTHH:mm:ss"
|
|
17
|
+
*
|
|
18
|
+
* Evento: `change` (composed):
|
|
19
|
+
* - single: { value }
|
|
20
|
+
* - range: { value, start, end }
|
|
21
|
+
* - multiple: { values: string[] }
|
|
22
|
+
*/
|
|
23
|
+
export declare class FxDatepicker extends FxElement {
|
|
24
|
+
static styles: string;
|
|
25
|
+
static get observedAttributes(): string[];
|
|
26
|
+
private docListener?;
|
|
27
|
+
/** Hora/minuto/segundo do modo show-time. */
|
|
28
|
+
private time;
|
|
29
|
+
get mode(): string;
|
|
30
|
+
set mode(value: string);
|
|
31
|
+
get value(): string;
|
|
32
|
+
set value(v: string);
|
|
33
|
+
/** Datas do modo múltiplo (CSV no atributo). */
|
|
34
|
+
get values(): string[];
|
|
35
|
+
set values(list: string[]);
|
|
36
|
+
get disabled(): boolean;
|
|
37
|
+
set disabled(value: boolean);
|
|
38
|
+
protected connectedCallback(): void;
|
|
39
|
+
protected disconnectedCallback(): void;
|
|
40
|
+
/** Formata uma data ISO ("YYYY-MM-DD" ou com "THH:mm:ss") segundo o atributo format. */
|
|
41
|
+
private formatDate;
|
|
42
|
+
/** Texto exibido no input conforme o modo. */
|
|
43
|
+
private displayText;
|
|
44
|
+
/** "HH:MM:SS" do estado interno de show-time. */
|
|
45
|
+
private timeText;
|
|
46
|
+
/** Extrai hora de um valor ISO inicial, se houver. */
|
|
47
|
+
private loadTimeFromValue;
|
|
48
|
+
/** Anexa o horário interno ao ISO puro vindo do calendário. */
|
|
49
|
+
private withTime;
|
|
50
|
+
protected render(): void;
|
|
51
|
+
private emitChange;
|
|
52
|
+
/**
|
|
53
|
+
* Interpreta o texto digitado livremente e devolve ISO "YYYY-MM-DD"
|
|
54
|
+
* (ou null se inválido). Aceita a máscara do atributo `format`
|
|
55
|
+
* (tokens dd/mm/yyyy) ou ISO direto.
|
|
56
|
+
*/
|
|
57
|
+
private parseTyped;
|
|
58
|
+
/** Aplica o texto digitado no modo free-text (blur/Enter). */
|
|
59
|
+
private commitTyped;
|
|
60
|
+
}
|
|
61
|
+
export declare function defineFxDatepicker(): typeof FxDatepicker;
|
|
62
|
+
//# sourceMappingURL=datepicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datepicker.d.ts","sourceRoot":"","sources":["../../../src/components/datepicker/datepicker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,YAAa,SAAQ,SAAS;IACzC,OAAgB,MAAM,SA+IpB;IAEF,WAAoB,kBAAkB,IAAI,MAAM,EAAE,CAEjD;IAED,OAAO,CAAC,WAAW,CAAC,CAAqB;IACzC,6CAA6C;IAC7C,OAAO,CAAC,IAAI,CAAwB;IAEpC,IAAI,IAAI,IAAI,MAAM,CAGjB;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAErB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IACD,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,EAElB;IAED,gDAAgD;IAChD,IAAI,MAAM,IAAI,MAAM,EAAE,CAGrB;IACD,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAExB;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAE1B;cAEkB,iBAAiB,IAAI,IAAI;cAWzB,oBAAoB,IAAI,IAAI;IAK/C,wFAAwF;IACxF,OAAO,CAAC,UAAU;IAyBlB,8CAA8C;IAC9C,OAAO,CAAC,WAAW;IAoBnB,iDAAiD;IACjD,OAAO,CAAC,QAAQ;IAKhB,sDAAsD;IACtD,OAAO,CAAC,iBAAiB;IAQzB,+DAA+D;IAC/D,OAAO,CAAC,QAAQ;cAOG,MAAM,IAAI,IAAI;IAqJjC,OAAO,CAAC,UAAU;IAMlB;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAgClB,8DAA8D;IAC9D,OAAO,CAAC,WAAW;CAkCpB;AAED,wBAAgB,kBAAkB,IAAI,OAAO,YAAY,CAExD"}
|