@ngx-smz/ui-kit 21.9.0-next.8 → 21.10.0-next.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-smz-ui-kit.mjs","sources":["../../../projects/ngx-smz-ui-kit/src/lib/core/variants.ts","../../../projects/ngx-smz-ui-kit/src/lib/core/severity.ts","../../../projects/ngx-smz-ui-kit/src/lib/core/value-accessor.ts","../../../projects/ngx-smz-ui-kit/src/lib/core/template.directive.ts","../../../projects/ngx-smz-ui-kit/src/lib/types/filter.ts","../../../projects/ngx-smz-ui-kit/src/lib/core/merge.ts","../../../projects/ngx-smz-ui-kit/src/lib/button/button.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/tooltip/tooltip.directive.ts","../../../projects/ngx-smz-ui-kit/src/lib/ripple/ripple.directive.ts","../../../projects/ngx-smz-ui-kit/src/lib/input/input.directives.ts","../../../projects/ngx-smz-ui-kit/src/lib/checkbox/checkbox.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/radio-button/radio-button.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/toggle-switch/toggle-switch.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/badge/badge.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/tag/tag.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/divider/divider.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/skeleton/skeleton.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/progress-bar/progress-bar.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/message/message.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/icon/icon.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/badge/badge.directive.ts","../../../projects/ngx-smz-ui-kit/src/lib/core/object-utils.ts","../../../projects/ngx-smz-ui-kit/src/lib/core/zindex.ts","../../../projects/ngx-smz-ui-kit/src/lib/core/dom-handler.ts","../../../projects/ngx-smz-ui-kit/src/lib/core/autofocus.directive.ts","../../../projects/ngx-smz-ui-kit/src/lib/dialog/dialog-ref.ts","../../../projects/ngx-smz-ui-kit/src/lib/dialog/dialog-frame.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/dialog/dialog.service.ts","../../../projects/ngx-smz-ui-kit/src/lib/dialog/dialog.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/popover/popover.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/drawer/drawer.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/toast/message.service.ts","../../../projects/ngx-smz-ui-kit/src/lib/toast/toast.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/menu/menu.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/block-ui/block-ui.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/toolbar/toolbar.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/core/anchored-panel.ts","../../../projects/ngx-smz-ui-kit/src/lib/core/option-utils.ts","../../../projects/ngx-smz-ui-kit/src/lib/select/select.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/select/multi-select.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/select-button/select-button.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/listbox/listbox.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/icon-field/icon-field.components.ts","../../../projects/ngx-smz-ui-kit/src/lib/core/locale.service.ts","../../../projects/ngx-smz-ui-kit/src/lib/input-number/input-number.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/date-picker/date-utils.ts","../../../projects/ngx-smz-ui-kit/src/lib/date-picker/date-picker.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/auto-complete/auto-complete.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/input-mask/input-mask.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/password/password.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/color-picker/color-picker.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/tabs/tabs.components.ts","../../../projects/ngx-smz-ui-kit/src/lib/accordion/accordion.components.ts","../../../projects/ngx-smz-ui-kit/src/lib/timeline/timeline.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/style-class/style-class.directive.ts","../../../projects/ngx-smz-ui-kit/src/lib/paginator/paginator.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/data-view/data-view.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/pick-list/pick-list.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/core/filter.service.ts","../../../projects/ngx-smz-ui-kit/src/lib/tree/tree.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/tree-select/tree-select.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/theme/theme.service.ts","../../../projects/ngx-smz-ui-kit/src/lib/card/card.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/panel/panel.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/progress-spinner/progress-spinner.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/float-label/float-label.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/splitter/splitter.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/tree-table/tree-table.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/confirm/confirmation.service.ts","../../../projects/ngx-smz-ui-kit/src/lib/file-upload/file-upload.component.ts","../../../projects/ngx-smz-ui-kit/src/ngx-smz-ui-kit.ts"],"sourcesContent":["export type SmzClassValue = string | false | null | undefined;\n\ntype VariantGroups = Record<string, Record<string, string>>;\n\nexport type SmzVariantProps<V extends VariantGroups> = {\n [K in keyof V]?: keyof V[K] & string;\n};\n\nexport interface SmzVariantsConfig<V extends VariantGroups> {\n /** Classes aplicadas sempre. */\n base: string;\n /** Grupos de variantes mutuamente exclusivos (ex.: size, severity). */\n variants: V;\n /** Valor usado quando a prop nao e informada. */\n defaults?: SmzVariantProps<V>;\n /** Classes que dependem da combinacao de duas ou mais variantes. */\n compound?: Array<{ when: SmzVariantProps<V>; class: string }>;\n}\n\nexport function smzCx(...parts: SmzClassValue[]): string {\n return parts.filter(Boolean).join(' ');\n}\n\n/**\n * Combina classes por variante. As strings de classe devem ser literais completas\n * (nunca montadas por concatenacao), senao o Tailwind nao as encontra no scan.\n * Nao resolve conflitos entre utilitarios: mantenha as variantes mutuamente exclusivas.\n */\nexport function smzVariants<V extends VariantGroups>(\n config: SmzVariantsConfig<V>,\n): (props?: SmzVariantProps<V>) => string {\n return (props = {}) => {\n const resolved: Record<string, string | undefined> = { ...config.defaults, ...stripUndefined(props) };\n\n const fromGroups = Object.keys(config.variants).map((group) => {\n const value = resolved[group];\n return value === undefined ? undefined : config.variants[group]?.[value];\n });\n\n const fromCompound = (config.compound ?? [])\n .filter((rule) => Object.entries(rule.when).every(([group, value]) => resolved[group] === value))\n .map((rule) => rule.class);\n\n return smzCx(config.base, ...fromGroups, ...fromCompound);\n };\n}\n\nfunction stripUndefined<T extends object>(value: T): Partial<T> {\n return Object.fromEntries(Object.entries(value).filter(([, v]) => v !== undefined)) as Partial<T>;\n}\n","export type SmzSeverity = 'primary' | 'secondary' | 'success' | 'warning' | 'danger';\r\n\r\n/** Severidades do vocabulario antigo (PrimeNG), aceitas por compatibilidade. */\r\nexport type SmzLegacySeverity = 'info' | 'warn' | 'error' | 'help' | 'contrast';\r\n\r\nconst LEGACY: Record<SmzLegacySeverity, SmzSeverity> = {\r\n info: 'primary',\r\n warn: 'warning',\r\n error: 'danger',\r\n help: 'secondary',\r\n contrast: 'secondary',\r\n};\r\n\r\nexport function smzNormalizeSeverity(value: string | null | undefined, fallback: SmzSeverity = 'primary'): SmzSeverity {\r\n if (!value) return fallback;\r\n if (value in LEGACY) return LEGACY[value as SmzLegacySeverity];\r\n return (value in SMZ_SOLID_TONE ? value : fallback) as SmzSeverity;\r\n}\r\n\r\n/** Fundo solido por severidade (badge, tag). Strings literais para o Tailwind encontrar no scan. */\r\nexport const SMZ_SOLID_TONE: Record<SmzSeverity, string> = {\r\n primary: 'bg-ui-primary text-ui-on-primary',\r\n secondary: 'bg-ui-surface-3 text-ui-fg',\r\n success: 'bg-ui-success text-ui-on-success',\r\n warning: 'bg-ui-warning text-ui-on-warning',\r\n danger: 'bg-ui-danger text-ui-on-danger',\r\n};\r\n\r\n/** Fundo suave com borda por severidade (message). */\r\nexport const SMZ_SOFT_TONE: Record<SmzSeverity, string> = {\r\n primary: 'border-ui-primary/30 bg-ui-primary/10 text-ui-primary',\r\n secondary: 'border-ui-line bg-ui-surface-3 text-ui-fg',\r\n success: 'border-ui-success/30 bg-ui-success/10 text-ui-success',\r\n warning: 'border-ui-warning/40 bg-ui-warning/10 text-ui-warning',\r\n danger: 'border-ui-danger/30 bg-ui-danger/10 text-ui-danger',\r\n};\r\n","import { Directive, booleanAttribute, computed, input, signal } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\n\n/**\n * Base de ControlValueAccessor para os controles de formulario do ui-kit.\n * O componente concreto deve registrar NG_VALUE_ACCESSOR em `providers`.\n * Fornece a entrada `disabled` e o estado combinado `isDisabled` (entrada ou desabilitado pelo formulario).\n */\n@Directive()\nexport abstract class SmzValueAccessor<T> implements ControlValueAccessor {\n public readonly current = signal<T | null>(null);\n public readonly disabled = input(false, { transform: booleanAttribute });\n\n protected readonly formDisabled = signal(false);\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled());\n\n private onChange: (value: T | null) => void = () => undefined;\n private onTouched: () => void = () => undefined;\n\n public writeValue(value: T | null): void {\n this.current.set(value);\n }\n\n public registerOnChange(fn: (value: T | null) => void): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled);\n }\n\n protected commit(value: T | null): void {\n this.current.set(value);\n this.onChange(value);\n }\n\n protected touch(): void {\n this.onTouched();\n }\n}\n","import { Directive, TemplateRef, inject, input } from '@angular/core';\n\n/**\n * Substitui o `pTemplate` do PrimeNG: marca um `ng-template` com um nome para o componente\n * hospedeiro localizar via `contentChildren(SmzTemplateDirective)`.\n *\n * <ng-template smzTemplate=\"header\">...</ng-template>\n */\n@Directive({\n selector: 'ng-template[smzTemplate]',\n})\nexport class SmzTemplateDirective {\n public readonly template = inject<TemplateRef<unknown>>(TemplateRef);\n public readonly name = input.required<string>({ alias: 'smzTemplate' });\n\n /** Compatibilidade com `PrimeTemplate.getType()`. */\n public getType(): string {\n return this.name();\n }\n}\n\nexport function smzFindTemplate(\n templates: readonly SmzTemplateDirective[],\n name: string,\n): TemplateRef<unknown> | undefined {\n return templates.find((item) => item.name() === name)?.template;\n}\n","/** Substitui o `FilterMatchMode` do PrimeNG. Os valores sao os mesmos para facilitar a migracao. */\nexport const SmzFilterMatchMode = {\n STARTS_WITH: 'startsWith',\n CONTAINS: 'contains',\n NOT_CONTAINS: 'notContains',\n ENDS_WITH: 'endsWith',\n EQUALS: 'equals',\n NOT_EQUALS: 'notEquals',\n IN: 'in',\n LESS_THAN: 'lt',\n LESS_THAN_OR_EQUAL_TO: 'lte',\n GREATER_THAN: 'gt',\n GREATER_THAN_OR_EQUAL_TO: 'gte',\n BETWEEN: 'between',\n IS: 'is',\n IS_NOT: 'isNot',\n BEFORE: 'before',\n AFTER: 'after',\n DATE_IS: 'dateIs',\n DATE_IS_NOT: 'dateIsNot',\n DATE_BEFORE: 'dateBefore',\n DATE_AFTER: 'dateAfter',\n} as const;\n\nexport type SmzFilterMatchModeValue = (typeof SmzFilterMatchMode)[keyof typeof SmzFilterMatchMode];\n\n/** Substitui o `FilterOperator` do PrimeNG. */\nexport const SmzFilterOperator = {\n AND: 'and',\n OR: 'or',\n} as const;\n\nexport type SmzFilterOperatorValue = (typeof SmzFilterOperator)[keyof typeof SmzFilterOperator];\n\n/** Substitui o `FilterMetadata` do PrimeNG. */\nexport interface SmzFilterMetadata {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- valor livre do filtro\n value?: any;\n matchMode?: SmzFilterMatchModeValue | string;\n operator?: SmzFilterOperatorValue | string;\n}\n","import { HostAttributeToken, inject } from '@angular/core';\n\n/**\n * Mini \"tailwind-merge\": resolve conflitos entre as classes base de um componente e as classes que o\n * consumidor passou (padding, altura, arredondamento, gap). Considera apenas tokens sem variante (sem \":\").\n * O Tailwind nao garante a ordem entre `px-3` e `px-control-x`, entao a resolucao precisa ser explicita.\n */\nconst SINGLE_GROUPS: Array<{ name: string; test: RegExp }> = [\n { name: 'h', test: /^h-/ },\n { name: 'min-h', test: /^min-h-/ },\n { name: 'rounded', test: /^rounded(-|$)/ },\n { name: 'gap', test: /^gap-/ },\n];\n\nfunction tokensOf(value: string | null | undefined): string[] {\n return (value ?? '').split(/\\s+/).filter(Boolean);\n}\n\nfunction hasPrefix(tokens: string[], prefixes: string[]): boolean {\n return tokens.some((token) => prefixes.some((prefix) => token.startsWith(prefix)));\n}\n\n/** Resolve o padding de um eixo (x ou y) quando o consumidor sobrescreve so um lado. */\nfunction resolveAxis(token: string, axis: 'x' | 'y', extra: string[]): string | null | undefined {\n const all = hasPrefix(extra, ['p-']);\n const both = hasPrefix(extra, [`p${axis}-`]);\n const sides = axis === 'x' ? ['pl-', 'ps-'] : ['pt-'];\n const otherSides = axis === 'x' ? ['pr-', 'pe-'] : ['pb-'];\n const first = hasPrefix(extra, sides);\n const second = hasPrefix(extra, otherSides);\n const value = token.slice(3);\n\n if (all || both || (first && second)) return null;\n if (first) return `${axis === 'x' ? 'pr' : 'pb'}-${value}`;\n if (second) return `${axis === 'x' ? 'pl' : 'pt'}-${value}`;\n return undefined;\n}\n\nexport function smzMergeClasses(base: string, overrides: string | null | undefined): string {\n const extra = tokensOf(overrides).filter((token) => !token.includes(':'));\n const allExtra = tokensOf(overrides);\n if (allExtra.length === 0) return base;\n\n const kept: string[] = [];\n for (const token of tokensOf(base)) {\n if (token.includes(':') || token.startsWith('!')) {\n kept.push(token);\n continue;\n }\n\n if (token.startsWith('px-') || token.startsWith('py-')) {\n const resolved = resolveAxis(token, token.startsWith('px-') ? 'x' : 'y', extra);\n if (resolved === undefined) kept.push(token);\n else if (resolved !== null) kept.push(resolved);\n continue;\n }\n\n const group = SINGLE_GROUPS.find((entry) => entry.test.test(token));\n if (group && extra.some((candidate) => group.test.test(candidate))) continue;\n kept.push(token);\n }\n\n return [...kept, ...allExtra].join(' ');\n}\n\n/** Le a classe estatica do elemento hospedeiro (`class=\"...\"`), para mescla-la com as classes do componente. */\nexport function smzStaticHostClass(): string {\n return inject(new HostAttributeToken('class'), { optional: true }) ?? '';\n}\n","import { ChangeDetectionStrategy, Component, booleanAttribute, computed, input } from '@angular/core';\r\nimport { smzMergeClasses, smzStaticHostClass } from '../core/merge';\r\nimport { smzVariants } from '../core/variants';\r\n\r\nexport type SmzButtonSeverity = 'primary' | 'secondary' | 'danger' | 'success' | 'warning';\r\nexport type SmzButtonVariant = 'solid' | 'outlined' | 'text';\r\nexport type SmzButtonSize = 'sm' | 'md' | 'lg';\r\nexport type SmzButtonIconPosition = 'left' | 'right';\r\n\r\n/** Severidades aceitas por compatibilidade com o vocabulario antigo (PrimeNG). */\r\nexport type SmzButtonLegacySeverity = 'info' | 'warn' | 'help' | 'error' | 'contrast' | 'plain' | 'ghost';\r\n\r\nconst LEGACY_SEVERITY: Record<SmzButtonLegacySeverity, { severity: SmzButtonSeverity; variant?: SmzButtonVariant }> = {\r\n info: { severity: 'primary' },\r\n warn: { severity: 'warning' },\r\n help: { severity: 'secondary' },\r\n error: { severity: 'danger' },\r\n contrast: { severity: 'secondary' },\r\n plain: { severity: 'secondary', variant: 'text' },\r\n ghost: { severity: 'secondary', variant: 'text' },\r\n};\r\n\r\nconst SEVERITIES: SmzButtonSeverity[] = ['primary', 'secondary', 'danger', 'success', 'warning'];\r\n\r\ninterface ParsedStyleClass {\r\n severity?: SmzButtonSeverity;\r\n variant?: SmzButtonVariant;\r\n size?: SmzButtonSize;\r\n rounded?: boolean;\r\n extra: string;\r\n}\r\n\r\n/**\r\n * Interpreta strings de classe no vocabulario antigo (`p-button-outlined p-button-sm px-3`).\r\n * Tokens `p-button-*` viram props; os demais seguem como classes extras.\r\n */\r\nexport type SmzStyleClass = string | SmzStyleClass[] | Record<string, unknown> | null | undefined;\r\n\r\nexport function smzNormalizeStyleClass(value: SmzStyleClass): string {\r\n if (!value) return '';\r\n if (typeof value === 'string') return value;\r\n if (Array.isArray(value)) return value.map((entry) => smzNormalizeStyleClass(entry)).filter(Boolean).join(' ');\r\n return Object.entries(value).filter(([, enabled]) => !!enabled).map(([name]) => name).join(' ');\r\n}\r\n\r\nexport function smzParseButtonStyleClass(styleClass: SmzStyleClass): ParsedStyleClass {\r\n const parsed: ParsedStyleClass = { extra: '' };\r\n const extra: string[] = [];\r\n\r\n for (const token of smzNormalizeStyleClass(styleClass).split(/\\s+/).filter(Boolean)) {\r\n if (token === 'p-button' || token === 'p-button-icon-only' || token === 'p-button-raised') continue;\r\n if (!token.startsWith('p-button-')) {\r\n extra.push(token);\r\n continue;\r\n }\r\n\r\n const name = token.slice('p-button-'.length);\r\n if (name === 'text' || name === 'link') parsed.variant = 'text';\r\n else if (name === 'outlined') parsed.variant = 'outlined';\r\n else if (name === 'rounded') parsed.rounded = true;\r\n else if (name === 'sm' || name === 'small') parsed.size = 'sm';\r\n else if (name === 'lg' || name === 'large') parsed.size = 'lg';\r\n else if (SEVERITIES.includes(name as SmzButtonSeverity)) parsed.severity = name as SmzButtonSeverity;\r\n else if (name in LEGACY_SEVERITY) {\r\n const legacy = LEGACY_SEVERITY[name as SmzButtonLegacySeverity];\r\n parsed.severity = legacy.severity;\r\n if (legacy.variant) parsed.variant = parsed.variant ?? legacy.variant;\r\n }\r\n }\r\n\r\n parsed.extra = extra.join(' ');\r\n return parsed;\r\n}\r\n\r\nconst buttonClasses = smzVariants({\r\n base:\r\n 'inline-flex items-center justify-center gap-2 border font-ui font-medium whitespace-nowrap select-none cursor-pointer ' +\r\n 'transition-colors duration-ui ' +\r\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus ' +\r\n 'disabled:opacity-50 disabled:pointer-events-none',\r\n variants: {\r\n size: {\r\n sm: 'h-control-sm px-control-x-sm text-ui-sm',\r\n md: 'h-control px-control-x text-ui-md',\r\n lg: 'h-control-lg px-control-x-lg text-ui-lg',\r\n },\r\n variant: { solid: 'border-transparent', outlined: '', text: 'border-transparent' },\r\n severity: { primary: '', secondary: '', danger: '', success: '', warning: '' },\r\n rounded: { true: 'rounded-full', false: 'rounded-control' },\r\n loading: { true: 'pointer-events-none opacity-75', false: '' },\r\n iconOnly: { true: 'aspect-square !px-0', false: '' },\r\n },\r\n defaults: { size: 'md', variant: 'solid', severity: 'primary', rounded: 'false', loading: 'false', iconOnly: 'false' },\r\n compound: [\r\n { when: { iconOnly: 'true', size: 'sm' }, class: 'w-[var(--smz-control-h-sm)]' },\n { when: { iconOnly: 'true', size: 'md' }, class: 'w-[var(--smz-control-h)]' },\n { when: { iconOnly: 'true', size: 'lg' }, class: 'w-[var(--smz-control-h-lg)]' },\n { when: { variant: 'solid', severity: 'primary' }, class: 'bg-ui-primary text-ui-on-primary hover:bg-ui-primary-hover active:bg-ui-primary-active' },\r\n { when: { variant: 'solid', severity: 'secondary' }, class: 'bg-ui-surface-3 text-ui-fg hover:bg-ui-line active:bg-ui-line-strong' },\r\n { when: { variant: 'solid', severity: 'danger' }, class: 'bg-ui-danger text-ui-on-danger hover:bg-ui-danger-hover active:bg-ui-danger-active' },\r\n { when: { variant: 'solid', severity: 'success' }, class: 'bg-ui-success text-ui-on-success hover:bg-ui-success-hover active:bg-ui-success-active' },\r\n { when: { variant: 'solid', severity: 'warning' }, class: 'bg-ui-warning text-ui-on-warning hover:bg-ui-warning-hover active:bg-ui-warning-active' },\r\n\r\n { when: { variant: 'outlined', severity: 'primary' }, class: 'border-ui-primary text-ui-primary hover:bg-ui-primary/10' },\r\n { when: { variant: 'outlined', severity: 'secondary' }, class: 'border-ui-line-strong text-ui-fg hover:bg-ui-surface-3' },\r\n { when: { variant: 'outlined', severity: 'danger' }, class: 'border-ui-danger text-ui-danger hover:bg-ui-danger/10' },\r\n { when: { variant: 'outlined', severity: 'success' }, class: 'border-ui-success text-ui-success hover:bg-ui-success/10' },\r\n { when: { variant: 'outlined', severity: 'warning' }, class: 'border-ui-warning text-ui-warning hover:bg-ui-warning/10' },\r\n\r\n { when: { variant: 'text', severity: 'primary' }, class: 'text-ui-primary hover:bg-ui-primary/10' },\r\n { when: { variant: 'text', severity: 'secondary' }, class: 'text-ui-fg hover:bg-ui-surface-3' },\r\n { when: { variant: 'text', severity: 'danger' }, class: 'text-ui-danger hover:bg-ui-danger/10' },\r\n { when: { variant: 'text', severity: 'success' }, class: 'text-ui-success hover:bg-ui-success/10' },\r\n { when: { variant: 'text', severity: 'warning' }, class: 'text-ui-warning hover:bg-ui-warning/10' },\r\n ],\r\n});\r\n\r\n/**\r\n * Botao do ui-kit. Substitui o `pButton` / `p-button` do PrimeNG.\r\n *\r\n * <button smzButton label=\"Excluir\" icon=\"fa-solid fa-trash\" severity=\"danger\" variant=\"outlined\"></button>\r\n *\r\n * `styleClass` aceita o vocabulario antigo (`p-button-outlined p-button-sm`) alem de classes livres.\r\n */\r\n@Component({\r\n selector: 'button[smzButton], a[smzButton]',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class]': 'classes()',\r\n '[attr.aria-busy]': 'loading() || null',\r\n },\r\n template: `\r\n @if (loading()) {\r\n <svg class=\"h-4 w-4 animate-spin\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\r\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"3\" class=\"opacity-25\" />\r\n <path d=\"M21 12a9 9 0 0 0-9-9\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" />\r\n </svg>\r\n }\r\n @else if (icon() && iconPosition() === 'left') {\r\n <i [class]=\"icon()\" aria-hidden=\"true\"></i>\r\n }\r\n @if (label()) {\r\n <span>{{ label() }}</span>\r\n }\r\n <ng-content />\r\n @if (icon() && iconPosition() === 'right' && !loading()) {\r\n <i [class]=\"icon()\" aria-hidden=\"true\"></i>\r\n }\r\n `,\r\n})\r\nexport class SmzButtonComponent {\r\n public readonly label = input<string | null | undefined>('');\r\n public readonly icon = input<string | null | undefined>('');\r\n public readonly iconPosition = input<SmzButtonIconPosition>('left');\r\n public readonly severity = input<SmzButtonSeverity | SmzButtonLegacySeverity | null | undefined>(undefined);\r\n public readonly variant = input<SmzButtonVariant | null | undefined>(undefined);\r\n public readonly size = input<SmzButtonSize | null | undefined>(undefined);\r\n /** Atalhos do vocabulario antigo: equivalem a `variant=\"text\"` e `variant=\"outlined\"`. */\r\n public readonly text = input(false, { transform: booleanAttribute });\r\n public readonly outlined = input(false, { transform: booleanAttribute });\r\n public readonly rounded = input(false, { transform: booleanAttribute });\r\n public readonly loading = input(false, { transform: booleanAttribute });\r\n public readonly styleClass = input<SmzStyleClass>('');\r\n\r\n private readonly staticClass = smzStaticHostClass();\r\n\r\n protected readonly classes = computed(() => {\r\n const parsed = smzParseButtonStyleClass(this.styleClass());\r\n\r\n const legacy = this.severity() && this.severity() in LEGACY_SEVERITY\r\n ? LEGACY_SEVERITY[this.severity() as SmzButtonLegacySeverity]\r\n : undefined;\r\n const severity = (legacy?.severity ?? (this.severity() as SmzButtonSeverity | undefined)) ?? parsed.severity ?? 'primary';\r\n const variant =\r\n this.variant() ??\r\n (this.text() ? 'text' : this.outlined() ? 'outlined' : undefined) ??\r\n parsed.variant ??\r\n legacy?.variant ??\r\n 'solid';\r\n\r\n const base = buttonClasses({\r\n severity,\r\n variant,\r\n size: this.size() ?? parsed.size ?? 'md',\r\n rounded: String(this.rounded() || !!parsed.rounded) as 'true' | 'false',\r\n loading: String(this.loading()) as 'true' | 'false',\r\n iconOnly: String(!this.label() && !!this.icon()) as 'true' | 'false',\r\n });\r\n\r\n return smzMergeClasses(base, `${parsed.extra} ${this.staticClass}`);\r\n });\r\n}\r\n","import { ConnectedPosition, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n OnDestroy,\n booleanAttribute,\n inject,\n input,\n signal,\n} from '@angular/core';\n\nexport type SmzTooltipPosition = 'top' | 'bottom' | 'left' | 'right';\nexport type SmzTooltipEvent = 'hover' | 'focus' | 'both';\n\nexport interface SmzTooltipOptions {\n tooltipPosition?: SmzTooltipPosition;\n showDelay?: number;\n hideDelay?: number;\n tooltipEvent?: SmzTooltipEvent;\n escape?: boolean;\n tooltipStyleClass?: string;\n tooltipZIndex?: string | number;\n tooltipDisabled?: boolean;\n}\n\nconst OFFSET = 8;\n\nconst POSITIONS: Record<SmzTooltipPosition, ConnectedPosition[]> = {\n top: [\n { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: -OFFSET },\n { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: OFFSET },\n ],\n bottom: [\n { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: OFFSET },\n { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: -OFFSET },\n ],\n left: [\n { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -OFFSET },\n { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: OFFSET },\n ],\n right: [\n { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: OFFSET },\n { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -OFFSET },\n ],\n};\n\n@Component({\n selector: 'ui-tooltip',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (escape()) {\n <div role=\"tooltip\" [class]=\"classes\">{{ text() }}</div>\n }\n @else {\n <div role=\"tooltip\" [class]=\"classes\" [innerHTML]=\"text()\"></div>\n }\n `,\n})\nexport class SmzTooltipComponent {\n public readonly text = input.required<string>();\n public readonly escape = input(true);\n protected readonly classes =\n 'max-w-xs rounded-control bg-ui-fg px-2 py-1 font-ui text-ui-xs text-ui-surface-1 shadow-overlay';\n}\n\n/**\n * Tooltip do ui-kit. Substitui o `pTooltip` do PrimeNG.\n * Requer o CSS do CDK Overlay no app (`@angular/cdk/overlay-prebuilt.css`).\n *\n * <button smzButton smzTooltip=\"Salvar\" tooltipPosition=\"bottom\">...</button>\n */\n@Directive({\n selector: '[smzTooltip]',\n host: {\n '(mouseenter)': 'onEnter(\\'hover\\')',\n '(mouseleave)': 'onLeave(\\'hover\\')',\n '(focusin)': 'onEnter(\\'focus\\')',\n '(focusout)': 'onLeave(\\'focus\\')',\n '(keydown.escape)': 'hide()',\n },\n})\nexport class SmzTooltipDirective implements OnDestroy {\n public readonly text = input<string | null | undefined>('', { alias: 'smzTooltip' });\n public readonly tooltipPosition = input<SmzTooltipPosition>('top');\n public readonly showDelay = input(300);\n public readonly hideDelay = input(0);\n public readonly tooltipEvent = input<SmzTooltipEvent>('hover');\n public readonly escape = input(true, { transform: booleanAttribute });\n public readonly tooltipStyleClass = input<string>('');\n public readonly tooltipZIndex = input<string | number>('');\n public readonly tooltipDisabled = input(false, { transform: booleanAttribute });\n /** Opcoes agrupadas (compatibilidade com `tooltipOptions` do PrimeNG). Sobrescrevem os inputs individuais. */\n public readonly tooltipOptions = input<SmzTooltipOptions | null | undefined>(undefined);\n /** Aceito por compatibilidade; o overlay do CDK ja e anexado ao body. */\n public readonly appendTo = input<unknown>(undefined);\n\n private readonly overrides = signal<SmzTooltipOptions>({});\n private readonly overlay = inject(Overlay);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private overlayRef?: OverlayRef;\n private showTimer?: ReturnType<typeof setTimeout>;\n private hideTimer?: ReturnType<typeof setTimeout>;\n\n /** Ajuste programatico de opcoes (usado por diretivas que envolvem o tooltip). */\n public configure(options: SmzTooltipOptions): void {\n this.overrides.update((current) => ({ ...current, ...options }));\n }\n\n public onEnter(source: 'hover' | 'focus'): void {\n if (!this.accepts(source)) return;\n this.show();\n }\n\n public onLeave(source: 'hover' | 'focus'): void {\n if (!this.accepts(source)) return;\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n const delay = this.option('hideDelay');\n if (delay > 0) this.hideTimer = setTimeout(() => this.hide(), delay);\n else this.hide();\n }\n\n public show(): void {\n const text = this.text();\n if (this.option('tooltipDisabled') || !text) return;\n clearTimeout(this.hideTimer);\n if (this.overlayRef) return;\n\n clearTimeout(this.showTimer);\n this.showTimer = setTimeout(() => this.open(text), this.option('showDelay'));\n }\n\n public hide(): void {\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n this.overlayRef?.dispose();\n this.overlayRef = undefined;\n }\n\n public ngOnDestroy(): void {\n this.hide();\n }\n\n private accepts(source: 'hover' | 'focus'): boolean {\n const event = this.option('tooltipEvent');\n return event === 'both' || event === source;\n }\n\n private option<K extends keyof SmzTooltipOptions>(key: K): NonNullable<SmzTooltipOptions[K]> {\n const fromInputs: Required<SmzTooltipOptions> = {\n tooltipPosition: this.tooltipPosition(),\n showDelay: this.showDelay(),\n hideDelay: this.hideDelay(),\n tooltipEvent: this.tooltipEvent(),\n escape: this.escape(),\n tooltipStyleClass: this.tooltipStyleClass(),\n tooltipZIndex: this.tooltipZIndex(),\n tooltipDisabled: this.tooltipDisabled(),\n };\n const merged = { ...fromInputs, ...(this.tooltipOptions() ?? {}), ...this.overrides() };\n return merged[key] as NonNullable<SmzTooltipOptions[K]>;\n }\n\n private open(text: string): void {\n this.overlayRef = this.overlay.create({\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.host)\n .withPositions(POSITIONS[this.option('tooltipPosition')])\n .withPush(true),\n scrollStrategy: this.overlay.scrollStrategies.close(),\n });\n\n const zIndex = this.option('tooltipZIndex');\n if (zIndex !== '') this.overlayRef.hostElement.style.zIndex = String(zIndex);\n\n const ref = this.overlayRef.attach(new ComponentPortal(SmzTooltipComponent));\n ref.setInput('text', text);\n ref.setInput('escape', this.option('escape'));\n }\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\n\n/**\n * Efeito ripple. Substitui o `pRipple` do PrimeNG.\n * Usa a Web Animations API, entao nao depende de CSS/keyframes.\n */\n@Directive({\n selector: '[smzRipple]',\n host: {\n class: 'relative overflow-hidden',\n '(pointerdown)': 'ripple($event)',\n },\n})\nexport class SmzRippleDirective {\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n protected ripple(event: PointerEvent): void {\n const element = this.host.nativeElement;\n const rect = element.getBoundingClientRect();\n const size = Math.max(rect.width, rect.height) * 2;\n\n const wave = document.createElement('span');\n wave.className = 'pointer-events-none absolute rounded-full bg-current';\n wave.style.width = `${size}px`;\n wave.style.height = `${size}px`;\n wave.style.left = `${event.clientX - rect.left - size / 2}px`;\n wave.style.top = `${event.clientY - rect.top - size / 2}px`;\n element.appendChild(wave);\n\n const animation = wave.animate(\n [\n { transform: 'scale(0)', opacity: 0.25 },\n { transform: 'scale(1)', opacity: 0 },\n ],\n { duration: 500, easing: 'ease-out' },\n );\n animation.onfinish = (): void => wave.remove();\n }\n}\n","import { Directive, ElementRef, afterEveryRender, booleanAttribute, computed, inject, input } from '@angular/core';\nimport { smzMergeClasses, smzStaticHostClass } from '../core/merge';\nimport { smzVariants } from '../core/variants';\n\nexport type SmzInputSize = 'sm' | 'md' | 'lg';\n\nconst base =\n 'w-full border bg-ui-surface-1 font-ui text-ui-fg placeholder:text-ui-fg-subtle transition-colors duration-ui ' +\n 'focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger';\n\nconst invalidVariant = { true: 'border-ui-danger', false: 'border-ui-line-strong' };\n\nconst inputClasses = smzVariants({\n base: `${base} rounded-control`,\n variants: {\n size: {\n sm: 'h-control-sm px-input-x-sm text-ui-sm',\n md: 'h-control px-input-x text-ui-md',\n lg: 'h-control-lg px-input-x-lg text-ui-lg',\n },\n invalid: invalidVariant,\n },\n defaults: { size: 'md', invalid: 'false' },\n});\n\nconst textareaClasses = smzVariants({\n base: `${base} min-h-control rounded-control px-input-x py-2 text-ui-md`,\n variants: { invalid: invalidVariant },\n defaults: { invalid: 'false' },\n});\n\n/** Campo de texto. Substitui o `pInputText` do PrimeNG. */\n@Directive({\n selector: 'input[smzInputText]',\n host: { '[class]': 'classes()', '[attr.aria-invalid]': 'invalid() || null' },\n})\nexport class SmzInputTextDirective {\n public readonly size = input<SmzInputSize>('md');\n public readonly invalid = input(false, { transform: booleanAttribute });\n\n private readonly staticClass = smzStaticHostClass();\n\n protected readonly classes = computed(() =>\n smzMergeClasses(\n inputClasses({ size: this.size(), invalid: String(this.invalid()) as 'true' | 'false' }),\n this.staticClass,\n ),\n );\n}\n\n/** Area de texto. Substitui o `pTextarea` / `pInputTextarea` do PrimeNG. */\n@Directive({\n selector: 'textarea[smzTextarea]',\n host: { '[class]': 'classes()', '[attr.aria-invalid]': 'invalid() || null', '(input)': 'resize()' },\n})\nexport class SmzTextareaDirective {\n public readonly invalid = input(false, { transform: booleanAttribute });\n /** Cresce com o conteudo (equivale ao `autoResize` do `pTextarea`). */\n public readonly autoResize = input(false, { transform: booleanAttribute });\n\n private readonly el = inject<ElementRef<HTMLTextAreaElement>>(ElementRef);\n\n constructor() {\n afterEveryRender(() => this.resize());\n }\n\n protected resize(): void {\n if (!this.autoResize()) return;\n const textarea = this.el.nativeElement;\n textarea.style.overflow = 'hidden';\n textarea.style.height = 'auto';\n textarea.style.height = `${textarea.scrollHeight}px`;\n }\n\n private readonly staticClass = smzStaticHostClass();\n\n protected readonly classes = computed(() =>\n smzMergeClasses(textareaClasses({ invalid: String(this.invalid()) as 'true' | 'false' }), this.staticClass),\n );\n}\n","import { ChangeDetectionStrategy, Component, booleanAttribute, computed, forwardRef, input, output } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { SmzValueAccessor } from '../core/value-accessor';\r\n\r\n/**\r\n * Checkbox do ui-kit. Substitui o `p-checkbox` do PrimeNG.\r\n *\r\n * - Booleano: `<ui-checkbox formControlName=\"ativo\" label=\"Ativo\" />`\r\n * - Grupo (modelo e um array): `<ui-checkbox formControlName=\"itens\" value=\"a\" label=\"A\" />`\r\n */\r\n@Component({\r\n selector: 'ui-checkbox',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzCheckboxComponent), multi: true }],\r\n host: { class: 'inline-flex' },\r\n template: `\r\n <label\r\n class=\"inline-flex items-center gap-2 font-ui text-ui-md text-ui-fg\"\r\n [class]=\"isDisabled() ? 'cursor-not-allowed opacity-50' : 'cursor-pointer'\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"peer sr-only\"\r\n [attr.id]=\"inputId() || null\"\r\n [name]=\"name()\"\r\n [checked]=\"checked()\"\r\n [disabled]=\"isDisabled()\"\r\n (change)=\"toggle()\"\r\n (blur)=\"touch()\"\r\n />\r\n <span\r\n class=\"inline-flex h-5 w-5 items-center justify-center rounded border transition-colors duration-ui peer-focus-visible:ring-2 peer-focus-visible:ring-ui-focus\"\r\n [class]=\"boxClasses()\"\r\n >\r\n @if (checked()) {\r\n <svg viewBox=\"0 0 16 16\" class=\"h-3.5 w-3.5\" fill=\"none\" aria-hidden=\"true\">\r\n <path d=\"M3 8.5l3.2 3L13 4.5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n }\r\n </span>\r\n @if (label()) {\r\n <span>{{ label() }}</span>\r\n }\r\n <ng-content />\r\n </label>\r\n `,\r\n})\r\nexport class SmzCheckboxComponent extends SmzValueAccessor<unknown> {\r\n public readonly label = input<string | null | undefined>('');\r\n public readonly inputId = input<string | null | undefined>('');\r\n /** Valor deste item quando o modelo e um array (modo grupo). */\r\n public readonly value = input<unknown>(undefined);\r\n /** Forca o modo booleano mesmo com `value` informado. Mantido por compatibilidade com o Prime. */\r\n public readonly binary = input(false, { transform: booleanAttribute });\r\n public readonly name = input<string>('');\r\n public readonly changed = output<{ checked: boolean; value: unknown }>();\r\n\r\n private readonly groupMode = computed(() => this.value() !== undefined && !this.binary());\r\n\r\n protected readonly checked = computed(() => {\r\n const model = this.current();\r\n return this.groupMode() ? Array.isArray(model) && model.includes(this.value()) : !!model;\r\n });\r\n\r\n protected readonly boxClasses = computed(() =>\r\n this.checked()\r\n ? 'border-ui-primary bg-ui-primary text-ui-on-primary'\r\n : 'border-ui-line-strong bg-ui-surface-1 text-transparent',\r\n );\r\n\r\n protected toggle(): void {\r\n if (!this.groupMode()) {\r\n this.commit(!this.checked());\r\n this.changed.emit({ checked: !!this.current(), value: this.current() });\r\n return;\r\n }\r\n\r\n const model = Array.isArray(this.current()) ? (this.current() as unknown[]) : [];\r\n const item = this.value();\r\n this.commit(model.includes(item) ? model.filter((entry) => entry !== item) : [...model, item]);\r\n this.changed.emit({ checked: this.checked(), value: this.current() });\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, DestroyRef, Injector, afterNextRender, computed, forwardRef, inject, input, output } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\r\nimport { SmzValueAccessor } from '../core/value-accessor';\r\n\r\n/**\r\n * Radio do ui-kit. Substitui o `p-radiobutton` do PrimeNG.\r\n * Cada radio do grupo usa o mesmo controle de formulario e o mesmo `name`.\r\n *\r\n * <ui-radio-button formControlName=\"tipo\" name=\"tipo\" value=\"a\" label=\"A\" />\r\n */\r\n@Component({\r\n selector: 'ui-radio-button',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzRadioButtonComponent), multi: true }],\r\n host: { class: 'inline-flex' },\r\n template: `\r\n <label\r\n class=\"inline-flex items-center gap-2 font-ui text-ui-md text-ui-fg\"\r\n [class]=\"isDisabled() ? 'cursor-not-allowed opacity-50' : 'cursor-pointer'\"\r\n >\r\n <input\r\n type=\"radio\"\r\n class=\"peer sr-only\"\r\n [name]=\"name()\"\r\n [checked]=\"checked()\"\r\n [disabled]=\"isDisabled()\"\r\n (change)=\"select()\"\r\n (blur)=\"touch()\"\r\n />\r\n <span\r\n class=\"inline-flex h-5 w-5 items-center justify-center rounded-full border transition-colors duration-ui peer-focus-visible:ring-2 peer-focus-visible:ring-ui-focus\"\r\n [class]=\"checked() ? 'border-ui-primary' : 'border-ui-line-strong bg-ui-surface-1'\"\r\n >\r\n @if (checked()) {\r\n <span class=\"h-2.5 w-2.5 rounded-full bg-ui-primary\"></span>\r\n }\r\n </span>\r\n @if (label()) {\r\n <span>{{ label() }}</span>\r\n }\r\n <ng-content />\r\n </label>\r\n `,\r\n})\r\nexport class SmzRadioButtonComponent extends SmzValueAccessor<unknown> {\r\n private readonly injector = inject(Injector);\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n public readonly value = input<unknown>(undefined);\r\n public readonly name = input<string>('');\r\n public readonly label = input<string | null | undefined>('');\r\n public readonly clicked = output<{ value: unknown }>();\r\n\r\n /**\r\n * Os radios do grupo compartilham o mesmo controle, mas `commit` so atualiza o radio clicado.\r\n * Acompanhar o valor do controle mantem os demais radios sincronizados (desmarcam visualmente).\r\n */\r\n constructor() {\r\n super();\r\n // O controle so e associado a diretiva depois dos hooks do componente; por isso apos a primeira renderizacao.\r\n afterNextRender(() => {\r\n const control = this.injector.get(NgControl, null, { self: true, optional: true })?.control;\r\n control?.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((value: unknown) => this.current.set(value));\r\n });\r\n }\r\n\r\n protected readonly checked = computed(() => this.current() === this.value());\r\n\r\n protected select(): void {\r\n this.commit(this.value());\r\n this.clicked.emit({ value: this.value() });\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, forwardRef, input, output } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { SmzValueAccessor } from '../core/value-accessor';\r\n\r\n/**\r\n * Interruptor. Substitui o `p-toggleswitch` do PrimeNG.\r\n *\r\n * <ui-toggle-switch formControlName=\"ativo\" />\r\n */\r\n@Component({\r\n selector: 'ui-toggle-switch',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzToggleSwitchComponent), multi: true }],\r\n host: { class: 'inline-flex' },\r\n template: `\r\n <button\r\n type=\"button\"\r\n role=\"switch\"\r\n [attr.name]=\"name() || null\"\r\n class=\"relative inline-flex h-6 w-11 items-center rounded-full border border-transparent transition-colors duration-ui\r\n focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50\"\r\n [class]=\"current() ? 'bg-ui-primary' : 'bg-ui-line-strong'\"\r\n [attr.aria-checked]=\"!!current()\"\r\n [disabled]=\"isDisabled()\"\r\n (click)=\"toggle()\"\r\n (blur)=\"touch()\"\r\n >\r\n <span\r\n class=\"inline-block h-5 w-5 rounded-full bg-ui-surface-1 shadow-card transition-transform duration-ui\"\r\n [class]=\"current() ? 'translate-x-5' : 'translate-x-0.5'\"\r\n ></span>\r\n </button>\r\n `,\r\n})\r\nexport class SmzToggleSwitchComponent extends SmzValueAccessor<boolean> {\r\n public readonly name = input<string>('');\r\n public readonly changed = output<{ checked: boolean }>();\r\n\r\n protected toggle(): void {\r\n this.commit(!this.current());\r\n this.changed.emit({ checked: !!this.current() });\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\nimport { SMZ_SOLID_TONE, SmzLegacySeverity, SmzSeverity, smzNormalizeSeverity } from '../core/severity';\r\nimport { smzCx } from '../core/variants';\r\n\r\n/** Contador/etiqueta pequena. Substitui o `p-badge` do PrimeNG. */\r\n@Component({\r\n selector: 'ui-badge',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { '[class]': 'classes()' },\r\n template: '{{ value() }}<ng-content />',\r\n})\r\nexport class SmzBadgeComponent {\r\n public readonly value = input<string | number | null | undefined>('');\r\n public readonly severity = input<SmzSeverity | SmzLegacySeverity | null | undefined>('primary');\r\n\r\n protected readonly classes = computed(() =>\r\n smzCx(\r\n 'inline-flex h-5 min-w-5 items-center justify-center rounded-full px-1.5 font-ui text-ui-xs font-medium',\r\n SMZ_SOLID_TONE[smzNormalizeSeverity(this.severity())],\r\n ),\r\n );\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\nimport { SMZ_SOLID_TONE, SmzLegacySeverity, SmzSeverity, smzNormalizeSeverity } from '../core/severity';\r\nimport { smzCx } from '../core/variants';\r\n\r\n/** Etiqueta de status. Substitui o `p-tag` do PrimeNG. */\r\n@Component({\r\n selector: 'ui-tag',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { '[class]': 'classes()' },\r\n template: `\r\n @if (icon()) {\r\n <i [class]=\"icon()\" aria-hidden=\"true\"></i>\r\n }\r\n {{ value() }}<ng-content />\r\n `,\r\n})\r\nexport class SmzTagComponent {\r\n public readonly value = input<string | number | null | undefined>('');\r\n public readonly severity = input<SmzSeverity | SmzLegacySeverity | null | undefined>('primary');\r\n public readonly icon = input<string | null | undefined>('');\r\n public readonly rounded = input(false);\r\n\r\n protected readonly classes = computed(() =>\r\n smzCx(\r\n 'inline-flex items-center gap-1 px-2 py-0.5 font-ui text-ui-xs font-medium',\r\n this.rounded() ? 'rounded-full' : 'rounded-control',\r\n SMZ_SOLID_TONE[smzNormalizeSeverity(this.severity())],\r\n ),\r\n );\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\n\r\nexport type SmzDividerLayout = 'horizontal' | 'vertical';\r\n\r\n/** Linha separadora. Substitui o `p-divider` do PrimeNG (sem conteudo central). */\r\n@Component({\r\n selector: 'ui-divider',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n role: 'separator',\r\n '[attr.aria-orientation]': 'layout()',\r\n '[class]': 'classes()',\r\n },\r\n template: '',\r\n})\r\nexport class SmzDividerComponent {\r\n public readonly layout = input<SmzDividerLayout>('horizontal');\r\n\r\n protected readonly classes = computed(() =>\r\n this.layout() === 'vertical'\r\n ? 'mx-3 block w-px self-stretch bg-ui-line'\r\n : 'my-4 block h-px w-full bg-ui-line',\r\n );\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\n\r\nexport type SmzSkeletonShape = 'rectangle' | 'circle';\r\n\r\n/** Placeholder de carregamento. Substitui o `p-skeleton` do PrimeNG. */\r\n@Component({\r\n selector: 'ui-skeleton',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n 'aria-hidden': 'true',\r\n '[class]': 'classes()',\r\n '[style.width]': 'width()',\r\n '[style.height]': 'height()',\r\n },\r\n template: '',\r\n})\r\nexport class SmzSkeletonComponent {\r\n public readonly shape = input<SmzSkeletonShape>('rectangle');\r\n public readonly width = input('100%');\r\n public readonly height = input('1rem');\r\n\r\n protected readonly classes = computed(() =>\r\n this.shape() === 'circle'\r\n ? 'block animate-pulse rounded-full bg-ui-surface-3'\r\n : 'block animate-pulse rounded-control bg-ui-surface-3',\r\n );\r\n}\r\n","import { ChangeDetectionStrategy, Component, booleanAttribute, computed, input } from '@angular/core';\r\n\r\nexport type SmzProgressBarMode = 'determinate' | 'indeterminate';\r\n\r\n/** Barra de progresso. Substitui o `p-progressbar` do PrimeNG. */\r\n@Component({\r\n selector: 'ui-progress-bar',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n role: 'progressbar',\r\n class: 'block h-5',\r\n 'aria-valuemin': '0',\r\n 'aria-valuemax': '100',\r\n '[attr.aria-valuenow]': 'mode() === \"determinate\" ? percent() : null',\r\n },\r\n template: `\r\n <div class=\"relative h-full w-full overflow-hidden rounded-full bg-ui-surface-3\">\r\n <div\r\n class=\"flex h-full items-center justify-center rounded-full bg-ui-primary font-ui text-ui-xs text-ui-on-primary transition-[width] duration-ui\"\r\n [class.animate-pulse]=\"mode() === 'indeterminate'\"\r\n [style.width.%]=\"mode() === 'indeterminate' ? 100 : percent()\"\r\n >\r\n @if (showValue() && mode() === 'determinate' && percent() >= 10) {\r\n {{ percent() }}%\r\n }\r\n </div>\r\n </div>\r\n `,\r\n})\r\nexport class SmzProgressBarComponent {\r\n public readonly value = input<number | null | undefined>(0);\r\n public readonly mode = input<SmzProgressBarMode>('determinate');\r\n public readonly showValue = input(true, { transform: booleanAttribute });\r\n\r\n protected readonly percent = computed(() => Math.min(100, Math.max(0, Math.round(this.value() ?? 0))));\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\nimport { SMZ_SOFT_TONE, SmzSeverity } from '../core/severity';\r\nimport { smzCx } from '../core/variants';\r\n\r\nexport type SmzMessageSeverity = 'info' | 'success' | 'warn' | 'error' | 'secondary';\r\n\r\nconst SEVERITY_TONE: Record<SmzMessageSeverity, SmzSeverity> = {\r\n info: 'primary',\r\n success: 'success',\r\n warn: 'warning',\r\n error: 'danger',\r\n secondary: 'secondary',\r\n};\r\n\r\n/** Mensagem inline. Substitui o `p-message` do PrimeNG. */\r\n@Component({\r\n selector: 'ui-message',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { role: 'alert', '[class]': 'classes()' },\r\n template: `\r\n @if (icon()) {\r\n <i [class]=\"icon()\" aria-hidden=\"true\"></i>\r\n }\r\n <span>{{ text() }}<ng-content /></span>\r\n `,\r\n})\r\nexport class SmzMessageComponent {\r\n public readonly severity = input<SmzMessageSeverity | string | null | undefined>('info');\r\n public readonly text = input<string | null | undefined>('');\r\n public readonly icon = input<string | null | undefined>('');\r\n\r\n protected readonly classes = computed(() =>\r\n smzCx(\r\n 'flex items-start gap-2 rounded-control border px-3 py-2 font-ui text-ui-md',\r\n SMZ_SOFT_TONE[SEVERITY_TONE[(this.severity() as SmzMessageSeverity) in SEVERITY_TONE ? (this.severity() as SmzMessageSeverity) : 'info']],\r\n ),\r\n );\r\n}\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\n\r\n/**\r\n * Icone baseado em classes de fonte de icones (ex.: \"fa-solid fa-check\", \"fa-solid fa-check\").\r\n * A origem dos glifos e do app; o componente so padroniza a marcacao.\r\n */\r\n@Component({\r\n selector: 'ui-icon',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { class: 'inline-flex items-center justify-center' },\r\n template: '<i [class]=\"name()\" aria-hidden=\"true\"></i>',\r\n})\r\nexport class SmzIconComponent {\r\n public readonly name = input.required<string>();\r\n}\r\n","import { Directive, ElementRef, OnDestroy, Renderer2, effect, inject, input } from '@angular/core';\nimport { SMZ_SOLID_TONE, SmzLegacySeverity, SmzSeverity, smzNormalizeSeverity } from '../core/severity';\n\n/**\n * Badge sobreposto a um elemento (canto superior direito). Substitui o `pBadge` do PrimeNG.\n *\n * <i class=\"fa-solid fa-bell\" smzBadge [value]=\"count\"></i>\n */\n@Directive({\n selector: '[smzBadge]',\n host: { class: 'relative inline-block' },\n})\nexport class SmzBadgeDirective implements OnDestroy {\n public readonly value = input<string | number | null | undefined>('');\n public readonly severity = input<SmzSeverity | SmzLegacySeverity | null | undefined>('primary');\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly renderer = inject(Renderer2);\n private badge?: HTMLElement;\n\n constructor() {\n effect(() => {\n const value = this.value();\n if (value === '' || value === null || value === undefined) {\n this.removeBadge();\n return;\n }\n\n if (!this.badge) {\n this.badge = this.renderer.createElement('span') as HTMLElement;\n this.renderer.appendChild(this.host.nativeElement, this.badge);\n }\n this.badge.className =\n 'absolute -right-2 -top-2 inline-flex h-4 min-w-4 items-center justify-center rounded-full px-1 font-ui text-ui-xs font-medium ' +\n SMZ_SOLID_TONE[smzNormalizeSeverity(this.severity())];\n this.badge.textContent = String(value);\n });\n }\n\n public ngOnDestroy(): void {\n this.removeBadge();\n }\n\n private removeBadge(): void {\n if (!this.badge) return;\n this.renderer.removeChild(this.host.nativeElement, this.badge);\n this.badge = undefined;\n }\n}\n","/* eslint-disable @typescript-eslint/typedef -- utilitario portado, tipos implicitos */\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/**\n * Utilitarios de objeto usados pelos componentes de dados (tabela, arvore, selects).\n * Substitui o `ObjectUtils` do PrimeNG, com a mesma semantica dos metodos usados.\n */\nexport class SmzObjectUtils {\n public static isEmpty(value: any): boolean {\n return (\n value === null ||\n value === undefined ||\n value === '' ||\n (Array.isArray(value) && value.length === 0) ||\n (!(value instanceof Date) && typeof value === 'object' && Object.keys(value).length === 0)\n );\n }\n\n public static isNotEmpty(value: any): boolean {\n return !SmzObjectUtils.isEmpty(value);\n }\n\n public static isFunction(value: any): boolean {\n return !!(value && value.constructor && value.call && value.apply);\n }\n\n /** Le um campo de um objeto; aceita caminho com ponto (`a.b.c`) ou funcao. */\n public static resolveFieldData(data: any, field: any): any {\n if (!data || !field) return null;\n\n try {\n const value = data[field];\n if (SmzObjectUtils.isNotEmpty(value)) return value;\n }\n catch {\n // segue para a resolucao por caminho\n }\n\n if (Object.keys(data).length) {\n if (SmzObjectUtils.isFunction(field)) return field(data);\n if (field.indexOf('.') === -1) return data[field];\n\n let value = data;\n for (const part of field.split('.')) {\n if (value == null) return null;\n value = value[part];\n }\n return value;\n }\n\n return null;\n }\n\n public static equals(first: any, second: any, field?: string): boolean {\n if (field) {\n return SmzObjectUtils.resolveFieldData(first, field) === SmzObjectUtils.resolveFieldData(second, field);\n }\n return SmzObjectUtils.deepEquals(first, second);\n }\n\n public static deepEquals(first: any, second: any): boolean {\n if (first === second) return true;\n\n if (first && second && typeof first === 'object' && typeof second === 'object') {\n const firstIsArray = Array.isArray(first);\n const secondIsArray = Array.isArray(second);\n if (firstIsArray !== secondIsArray) return false;\n\n if (firstIsArray && secondIsArray) {\n if (first.length !== second.length) return false;\n return first.every((item: any, index: number) => SmzObjectUtils.deepEquals(item, second[index]));\n }\n\n const firstIsDate = first instanceof Date;\n const secondIsDate = second instanceof Date;\n if (firstIsDate !== secondIsDate) return false;\n if (firstIsDate && secondIsDate) return first.getTime() === second.getTime();\n\n const keys = Object.keys(first);\n if (keys.length !== Object.keys(second).length) return false;\n return keys.every((key) => Object.prototype.hasOwnProperty.call(second, key) && SmzObjectUtils.deepEquals(first[key], second[key]));\n }\n\n // NaN === NaN\n return first !== first && second !== second;\n }\n\n /** Move um item de `from` para `to` (muta o array). */\n public static reorderArray(value: any[], from: number, to: number): void {\n if (value && from !== to) {\n if (to >= value.length) {\n to %= value.length;\n from %= value.length;\n }\n value.splice(to, 0, value.splice(from, 1)[0]);\n }\n }\n\n public static removeAccents(text: string): string {\n return text && typeof text === 'string' ? text.normalize('NFD').replace(/[̀-ͯ]/g, '') : text;\n }\n\n /**\n * Compara dois valores respeitando valores vazios (vazio vai para o fim na ordem ascendente).\n * `locale` define o collator usado para strings (com ordenacao numerica).\n */\n public static compare(first: any, second: any, locale?: string, order = 1): number {\n const emptyFirst = SmzObjectUtils.isEmpty(first);\n const emptySecond = SmzObjectUtils.isEmpty(second);\n\n if (emptyFirst && emptySecond) return 0;\n if (emptyFirst) return order;\n if (emptySecond) return -order;\n if (typeof first === 'string' && typeof second === 'string') {\n return new Intl.Collator(locale, { numeric: true }).compare(first, second);\n }\n return first < second ? -1 : first > second ? 1 : 0;\n }\n\n public static sort(first: any, second: any, order = 1, locale?: string, nullSortOrder = 1): number {\n const result = SmzObjectUtils.compare(first, second, locale, order);\n let finalOrder = order;\n\n // nullSortOrder === 1: nulos no fim (como no Excel)\n if (SmzObjectUtils.isEmpty(first) || SmzObjectUtils.isEmpty(second)) {\n finalOrder = nullSortOrder === 1 ? order : nullSortOrder;\n }\n return finalOrder * result;\n }\n}\n\nlet lastId = 0;\n\n/** Gera ids unicos para elementos (`smz_id_1`, `smz_id_2`...). Substitui o `UniqueComponentId` do PrimeNG. */\nexport function smzUniqueId(prefix = 'smz_id_'): string {\n lastId++;\n return `${prefix}${lastId}`;\n}\n","/* eslint-disable @typescript-eslint/typedef -- helpers pequenos com tipos inferidos */\ninterface ZIndexEntry {\n key: string;\n value: number;\n}\n\nlet zIndexes: ZIndexEntry[] = [];\n\nfunction lastEntry(key: string, anyKey: boolean, baseZIndex = 0): ZIndexEntry {\n return [...zIndexes].reverse().find((entry) => (anyKey ? true : entry.key === key)) ?? { key, value: baseZIndex };\n}\n\nfunction generate(key: string, baseZIndex = 999): number {\n const last = lastEntry(key, true, baseZIndex);\n const next = last.value + (last.key === key ? 0 : baseZIndex) + 1;\n zIndexes.push({ key, value: next });\n return next;\n}\n\nfunction read(element: HTMLElement | null | undefined): number {\n return element ? parseInt(element.style.zIndex, 10) || 0 : 0;\n}\n\n/**\n * Gerencia a pilha de z-index de overlays (dialogs, menus, popovers).\n * Substitui o `ZIndexUtils` do PrimeNG.\n */\nexport const SmzZIndex = {\n get: read,\n getCurrent: (key = ''): number => lastEntry(key, true).value,\n set: (key: string, element: HTMLElement | null | undefined, baseZIndex?: number): void => {\n if (element) element.style.zIndex = String(generate(key, baseZIndex));\n },\n clear: (element: HTMLElement | null | undefined): void => {\n if (!element) return;\n const value = read(element);\n zIndexes = zIndexes.filter((entry) => entry.value !== value);\n element.style.zIndex = '';\n },\n};\n","/* eslint-disable @typescript-eslint/typedef -- utilitario portado, tipos implicitos */\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-return, @typescript-eslint/explicit-module-boundary-types, max-len */\n\nconst FOCUSABLE_FILTER = ':not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])';\n\n/**\n * Utilitarios de DOM usados pelos componentes que manipulam elementos diretamente (tabela, dialog, menu).\n * Substitui o `DomHandler` do PrimeNG, com os mesmos nomes e semantica dos metodos usados.\n */\nexport class SmzDomHandler {\n private static classes(value: string): string[] {\n return value.split(/\\s+/).filter(Boolean);\n }\n\n public static hasClass(element: any, className: string): boolean {\n if (!element || !className) return false;\n return element.classList\n ? element.classList.contains(className)\n : new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);\n }\n\n public static addClass(element: any, className: string): void {\n if (!element || !className) return;\n if (element.classList) element.classList.add(...SmzDomHandler.classes(className));\n else element.className += ' ' + className;\n }\n\n public static removeClass(element: any, className: string): void {\n if (!element || !className) return;\n if (element.classList) element.classList.remove(...SmzDomHandler.classes(className));\n else element.className = element.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n\n public static invokeElementMethod(element: any, methodName: string, args?: any[]): void {\n element[methodName](...(args ?? []));\n }\n\n public static find(element: any, selector: string): any {\n return element.querySelectorAll(selector);\n }\n\n public static findSingle(element: any, selector: string): any {\n return element ? element.querySelector(selector) : null;\n }\n\n public static matches(element: any, selector: string): boolean {\n return element?.matches ? element.matches(selector) : false;\n }\n\n public static index(element: any): number {\n const children = element.parentNode.childNodes;\n let count = 0;\n for (let i = 0; i < children.length; i++) {\n if (children[i] === element) return count;\n if (children[i].nodeType === 1) count++;\n }\n return -1;\n }\n\n public static indexWithinGroup(element: any, attributeName: string): number {\n const children = element?.parentNode ? SmzDomHandler.find(element.parentNode, `[${attributeName}]`) : [];\n let count = 0;\n for (let i = 0; i < children.length; i++) {\n if (children[i] === element) return count;\n if (children[i].nodeType === 1) count++;\n }\n return -1;\n }\n\n public static appendChild(element: any, target: any): void {\n if (SmzDomHandler.isElement(target)) target.appendChild(element);\n else if (target && target.el && target.el.nativeElement) target.el.nativeElement.appendChild(element);\n else if (target === 'body') document.body.appendChild(element);\n else if (typeof target === 'string' && document.querySelector(target)) (document.querySelector(target) as Element).appendChild(element);\n else throw new Error('Cannot append ' + target + ' to ' + element);\n }\n\n public static isElement(obj: any): boolean {\n return typeof HTMLElement === 'object' ? obj instanceof HTMLElement : !!obj && typeof obj === 'object' && obj.nodeType === 1 && typeof obj.nodeName === 'string';\n }\n\n public static getOuterWidth(element: any, margin?: boolean): number {\n if (!element) return 0;\n let width = element.offsetWidth;\n if (margin) {\n const style = getComputedStyle(element);\n width += parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n }\n return width;\n }\n\n public static getOuterHeight(element: any, margin?: boolean): number {\n if (!element) return 0;\n let height = element.offsetHeight;\n if (margin) {\n const style = getComputedStyle(element);\n height += parseFloat(style.marginTop) + parseFloat(style.marginBottom);\n }\n return height;\n }\n\n public static getOffset(element: any): { top: any; left: any } {\n if (!element) return { top: 'auto', left: 'auto' };\n const rect = element.getBoundingClientRect();\n return {\n top: rect.top + (window.scrollY || document.documentElement.scrollTop || document.body.scrollTop || 0),\n left: rect.left + (window.scrollX || document.documentElement.scrollLeft || document.body.scrollLeft || 0),\n };\n }\n\n public static getWindowScrollTop(): number {\n return (window.scrollY || document.documentElement.scrollTop || 0) - (document.documentElement.clientTop || 0);\n }\n\n public static getWindowScrollLeft(): number {\n return (window.scrollX || document.documentElement.scrollLeft || 0) - (document.documentElement.clientLeft || 0);\n }\n\n public static getViewport(): { width: number; height: number } {\n return {\n width: window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth,\n height: window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight,\n };\n }\n\n public static getHiddenElementDimensions(element: any): { width: number; height: number } {\n const original = { display: element.style.display, visibility: element.style.visibility };\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n const dimensions = { width: element.offsetWidth, height: element.offsetHeight };\n element.style.display = original.display;\n element.style.visibility = original.visibility;\n return dimensions;\n }\n\n public static getHiddenElementOuterWidth(element: any): number {\n const original = { display: element.style.display, visibility: element.style.visibility };\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n const width = element.offsetWidth;\n element.style.display = original.display;\n element.style.visibility = original.visibility;\n return width;\n }\n\n public static getHiddenElementOuterHeight(element: any): number {\n const original = { display: element.style.display, visibility: element.style.visibility };\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n const height = element.offsetHeight;\n element.style.display = original.display;\n element.style.visibility = original.visibility;\n return height;\n }\n\n public static isVisible(element: any): boolean {\n return !!element && element.offsetParent !== null;\n }\n\n public static isTouchDevice(): boolean {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n }\n\n public static clearSelection(): void {\n const selection = window.getSelection?.();\n if (!selection) return;\n if (selection.empty) selection.empty();\n else if (selection.removeAllRanges && selection.rangeCount > 0 && selection.getRangeAt(0).getClientRects().length > 0) selection.removeAllRanges();\n }\n\n public static getFocusableElements(element: any, selector = ''): any[] {\n const nodes = SmzDomHandler.find(\n element,\n `button${FOCUSABLE_FILTER}${selector}, [href][clientHeight][clientWidth]${FOCUSABLE_FILTER}${selector}, ` +\n `input${FOCUSABLE_FILTER}${selector}, select${FOCUSABLE_FILTER}${selector}, textarea${FOCUSABLE_FILTER}${selector}, ` +\n `[tabIndex]${FOCUSABLE_FILTER}${selector}, [contenteditable]${FOCUSABLE_FILTER}${selector}`,\n );\n\n const visible: any[] = [];\n for (const node of nodes) {\n const style = getComputedStyle(node);\n if (SmzDomHandler.isVisible(node) && style.display !== 'none' && style.visibility !== 'hidden') visible.push(node);\n }\n return visible;\n }\n\n /** Posiciona `element` (position: absolute no body) abaixo de `target`, invertendo se nao couber. */\n public static absolutePosition(element: any, target: any, gutter = true): void {\n const dimensions = element.offsetParent\n ? { width: element.offsetWidth, height: element.offsetHeight }\n : SmzDomHandler.getHiddenElementDimensions(element);\n const targetHeight = target.offsetHeight;\n const targetRect = target.getBoundingClientRect();\n const scrollTop = SmzDomHandler.getWindowScrollTop();\n const scrollLeft = SmzDomHandler.getWindowScrollLeft();\n const viewport = SmzDomHandler.getViewport();\n let top: number;\n let left: number;\n\n if (targetRect.top + targetHeight + dimensions.height > viewport.height) {\n top = targetRect.top + scrollTop - dimensions.height;\n element.style.transformOrigin = 'bottom';\n if (top < 0) top = scrollTop;\n }\n else {\n top = targetHeight + targetRect.top + scrollTop;\n element.style.transformOrigin = 'top';\n }\n\n const horizontalOverflow = targetRect.left + dimensions.width - viewport.width;\n if (dimensions.width > viewport.width) left = scrollLeft;\n else if (horizontalOverflow > 0) left = Math.max(0, targetRect.left + scrollLeft - horizontalOverflow);\n else left = targetRect.left + scrollLeft;\n\n element.style.top = top + 'px';\n element.style.left = left + 'px';\n if (!gutter) element.style.marginTop = '0px';\n }\n\n /** Posiciona `element` relativo ao seu offsetParent, abaixo de `target`. */\n public static relativePosition(element: any, target: any, gutter = true): void {\n const parentOffset = element.offsetParent ? null : SmzDomHandler.getHiddenElementDimensions(element);\n const elementHeight = parentOffset ? parentOffset.height : element.offsetHeight;\n const elementWidth = parentOffset ? parentOffset.width : element.offsetWidth;\n const targetHeight = target.offsetHeight;\n const targetRect = target.getBoundingClientRect();\n const viewport = SmzDomHandler.getViewport();\n let top: number;\n let left: number;\n\n if (targetRect.top + targetHeight + elementHeight > viewport.height) {\n top = -elementHeight;\n element.style.transformOrigin = 'bottom';\n if (targetRect.top + top < 0) top = -targetRect.top;\n }\n else {\n top = targetHeight;\n element.style.transformOrigin = 'top';\n }\n\n if (elementWidth > viewport.width) left = targetRect.left * -1;\n else if (targetRect.left + elementWidth > viewport.width) left = (targetRect.left + elementWidth - viewport.width) * -1;\n else left = 0;\n\n element.style.top = top + 'px';\n element.style.left = left + 'px';\n if (!gutter) element.style.marginTop = '0px';\n }\n}\n\nconst OVERFLOW_PATTERN = /(auto|scroll)/;\n\nfunction scrollableParents(element: any): any[] {\n const parents: any[] = [];\n let parent = element?.parentNode;\n while (parent && parent.nodeType === 1) {\n const style = getComputedStyle(parent);\n if (OVERFLOW_PATTERN.test(style.overflow + style.overflowX + style.overflowY)) parents.push(parent);\n parent = parent.parentNode;\n }\n parents.push(window);\n return parents;\n}\n\n/**\n * Dispara `listener` quando qualquer ancestral rolavel de `element` rola (usado para fechar overlays conectados).\n * Substitui o `ConnectedOverlayScrollHandler` do PrimeNG.\n */\nexport class SmzConnectedOverlayScrollHandler {\n private parents: any[] | null = null;\n\n constructor(private element: any, private listener: () => void = () => undefined) {\n }\n\n public bindScrollListener(): void {\n this.parents ??= scrollableParents(this.element);\n for (const parent of this.parents) parent.addEventListener('scroll', this.listener);\n }\n\n public unbindScrollListener(): void {\n for (const parent of this.parents ?? []) parent.removeEventListener('scroll', this.listener);\n }\n\n public destroy(): void {\n this.unbindScrollListener();\n this.element = null;\n this.parents = null;\n }\n}\n","import { AfterContentChecked, Directive, ElementRef, booleanAttribute, inject, input } from '@angular/core';\nimport { SmzDomHandler } from './dom-handler';\n\n/**\n * Foca o primeiro elemento focavel (ou o proprio hospedeiro) apos a renderizacao.\n * Substitui o `pAutoFocus` do PrimeNG.\n *\n * <input smzAutoFocus /> <div [smzAutoFocus]=\"true\"> ... </div>\n */\n@Directive({\n selector: '[smzAutoFocus]',\n})\nexport class SmzAutoFocusDirective implements AfterContentChecked {\n public readonly autofocus = input(true, { alias: 'smzAutoFocus', transform: (value: unknown) => value === '' || booleanAttribute(value) });\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private focused = false;\n\n public ngAfterContentChecked(): void {\n if (this.focused) return;\n\n setTimeout(() => {\n if (this.focused || !this.autofocus()) return;\n const element = this.host.nativeElement;\n const focusable = SmzDomHandler.getFocusableElements(element) as HTMLElement[];\n if (focusable.length > 0) focusable[0].focus();\n else element.focus();\n this.focused = true;\n }, 5);\n }\n}\n","import { Observable, Subject } from 'rxjs';\n\n/** Configuracao de um dialog aberto por `SmzDialogService`. Tambem e o token de DI para o componente do conteudo. */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- dados livres do consumidor\nexport class SmzDialogConfig<TData = any> {\n public data?: TData;\n public header?: string;\n public width?: string;\n public height?: string;\n public showHeader?: boolean;\n public modal?: boolean;\n public closable?: boolean;\n public closeOnEscape?: boolean;\n public dismissableMask?: boolean;\n public baseZIndex?: number;\n public style?: Record<string, string>;\n public contentStyle?: Record<string, string>;\n public styleClass?: string;\n}\n\n/** Referencia ao dialog aberto. Injetavel no componente do conteudo para fechar com um resultado. */\nexport class SmzDialogRef<TResult = unknown> {\n private readonly closeSubject = new Subject<TResult | undefined>();\n private closeHandler: () => void = () => undefined;\n\n /** Emite o resultado quando o dialog fecha. */\n public readonly onClose: Observable<TResult | undefined> = this.closeSubject.asObservable();\n\n public close(result?: TResult): void {\n this.closeSubject.next(result);\n this.closeSubject.complete();\n this.closeHandler();\n }\n\n /** @internal registrado pelo servico para destruir o overlay. */\n public bind(closeHandler: () => void): void {\n this.closeHandler = closeHandler;\n }\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\nimport { NgStyle } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n InjectionToken,\n Injector,\n Type,\n ViewContainerRef,\n afterNextRender,\n inject,\n viewChild,\n} from '@angular/core';\nimport { SmzDialogConfig, SmzDialogRef } from './dialog-ref';\n\n/** Componente que sera criado dentro do dialog. */\nexport const SMZ_DIALOG_CONTENT = new InjectionToken<Type<unknown>>('SMZ_DIALOG_CONTENT');\n\n/** Moldura do dialog: cabecalho com titulo e botao fechar, mais a area do conteudo. */\n@Component({\n selector: 'ui-dialog-frame',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgStyle],\n host: { class: 'pointer-events-auto block' },\n template: `\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"config.header || null\"\n class=\"flex max-h-[90vh] max-w-[95vw] flex-col rounded-overlay border border-ui-line bg-ui-surface-2 font-ui text-ui-fg shadow-overlay\"\n [class]=\"config.styleClass ?? ''\"\n [style.width]=\"config.width ?? null\"\n [style.height]=\"config.height ?? null\"\n [ngStyle]=\"config.style\"\n >\n @if (config.showHeader !== false) {\n <div class=\"flex items-center justify-between gap-4 border-b border-ui-line px-4 py-3\">\n <span class=\"text-ui-lg font-medium\">{{ config.header }}</span>\n @if (config.closable !== false) {\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 cursor-pointer items-center justify-center rounded-full text-ui-fg-muted transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus\"\n aria-label=\"Fechar\"\n (click)=\"ref.close()\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" />\n </svg>\n </button>\n }\n </div>\n }\n <div class=\"min-h-0 flex-1 overflow-auto p-4\" [ngStyle]=\"config.contentStyle\">\n <ng-container #content />\n </div>\n </div>\n `,\n})\nexport class SmzDialogFrameComponent {\n protected readonly config = inject(SmzDialogConfig);\n protected readonly ref = inject(SmzDialogRef);\n\n private readonly injector = inject(Injector);\n private readonly contentType = inject(SMZ_DIALOG_CONTENT);\n private readonly host = viewChild.required('content', { read: ViewContainerRef });\n\n constructor() {\n afterNextRender(() => {\n this.host().createComponent(this.contentType, { injector: this.injector });\n });\n }\n}\n","import { Overlay } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Injectable, Injector, Type, inject } from '@angular/core';\nimport { filter } from 'rxjs';\nimport { SmzZIndex } from '../core/zindex';\nimport { SMZ_DIALOG_CONTENT, SmzDialogFrameComponent } from './dialog-frame.component';\nimport { SmzDialogConfig, SmzDialogRef } from './dialog-ref';\n\n/**\n * Abre um componente dentro de um dialog modal (CDK Overlay). Substitui o `DialogService` do PrimeNG.\n * Requer o CSS do CDK Overlay no app (`@angular/cdk/overlay-prebuilt.css`).\n *\n * const ref = dialogs.open(MeuComponente, { header: 'Titulo', width: '50%', data: { ... } });\n * ref.onClose.subscribe((resultado) => ...);\n */\n@Injectable({ providedIn: 'root' })\nexport class SmzDialogService {\n private readonly overlay = inject(Overlay);\n private readonly injector = inject(Injector);\n\n public open<TResult = unknown>(content: Type<unknown>, config: Partial<SmzDialogConfig> = {}): SmzDialogRef<TResult> {\n const resolved = Object.assign(new SmzDialogConfig(), config);\n const ref = new SmzDialogRef<TResult>();\n const modal = resolved.modal !== false;\n\n const overlayRef = this.overlay.create({\n hasBackdrop: modal,\n positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),\n scrollStrategy: this.overlay.scrollStrategies.block(),\n });\n\n if (resolved.baseZIndex != null) {\n overlayRef.hostElement.style.zIndex = String(resolved.baseZIndex + 1);\n if (overlayRef.backdropElement) overlayRef.backdropElement.style.zIndex = String(resolved.baseZIndex);\n }\n else {\n SmzZIndex.set('modal', overlayRef.hostElement, 1100);\n if (overlayRef.backdropElement) overlayRef.backdropElement.style.zIndex = String(SmzZIndex.get(overlayRef.hostElement) - 1);\n }\n\n ref.bind(() => {\n SmzZIndex.clear(overlayRef.hostElement);\n overlayRef.dispose();\n });\n\n if (resolved.closeOnEscape !== false) {\n overlayRef.keydownEvents().pipe(filter((event) => event.key === 'Escape')).subscribe(() => ref.close());\n }\n if (modal && resolved.dismissableMask) {\n overlayRef.backdropClick().subscribe(() => ref.close());\n }\n\n const injector = Injector.create({\n parent: this.injector,\n providers: [\n { provide: SmzDialogConfig, useValue: resolved },\n { provide: SmzDialogRef, useValue: ref },\n { provide: SMZ_DIALOG_CONTENT, useValue: content },\n ],\n });\n overlayRef.attach(new ComponentPortal(SmzDialogFrameComponent, null, injector));\n\n return ref;\n }\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\nimport { GlobalPositionStrategy, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n booleanAttribute,\n computed,\n contentChildren,\n effect,\n inject,\n input,\n signal,\n model,\n output,\n viewChild,\n} from '@angular/core';\nimport { filter } from 'rxjs';\nimport { smzFindTemplate, SmzTemplateDirective } from '../core/template.directive';\nimport { SmzZIndex } from '../core/zindex';\n\n/** Posicoes aceitas por `ui-dialog`. */\nexport type SmzDialogPosition = 'center' | 'top' | 'bottom' | 'left' | 'right' | 'topleft' | 'topright' | 'bottomleft' | 'bottomright';\n\n/**\n * Dialog declarativo. Substitui o `p-dialog` do PrimeNG.\n *\n * <ui-dialog header=\"Titulo\" [(visible)]=\"aberto\" [style]=\"{ width: '450px' }\">\n * conteudo\n * <ng-template smzTemplate=\"footer\"><button smzButton label=\"Salvar\"></button></ng-template>\n * </ui-dialog>\n */\n@Component({\n selector: 'ui-dialog',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgStyle, NgTemplateOutlet],\n template: `\n <ng-template #panel>\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"header() || null\"\n class=\"pointer-events-auto flex flex-col border border-ui-line bg-ui-surface-2 font-ui text-ui-fg shadow-overlay\"\n [class]=\"(maximized() ? 'h-screen w-screen max-h-none max-w-none rounded-none ' : 'max-h-[90vh] max-w-[95vw] rounded-overlay ') + (resizable() && !maximized() ? 'resize overflow-auto ' : '') + (styleClass() ?? '')\"\n [ngStyle]=\"maximized() ? null : style()\"\n [style.transform]=\"maximized() || (dx() === 0 && dy() === 0) ? null : 'translate(' + dx() + 'px, ' + dy() + 'px)'\"\n >\n @if (headerTemplate(); as headerTpl) {\n <div class=\"border-b border-ui-line px-4 py-3\" [class.cursor-move]=\"draggable() && !maximized()\" (pointerdown)=\"startDrag($event)\">\n <ng-container [ngTemplateOutlet]=\"headerTpl\" />\n </div>\n }\n @else if (header() || closable()) {\n <div class=\"flex items-center justify-between gap-4 border-b border-ui-line px-4 py-3\" [class.cursor-move]=\"draggable() && !maximized()\" (pointerdown)=\"startDrag($event)\">\n <span class=\"text-ui-lg font-medium\">{{ header() }}</span>\n <div class=\"flex items-center gap-1\">\n @if (maximizable()) {\n <button type=\"button\" class=\"inline-flex h-8 w-8 cursor-pointer items-center justify-center rounded-full text-ui-fg-muted transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus\" [attr.aria-label]=\"maximized() ? 'Restaurar' : 'Maximizar'\" (click)=\"maximize()\">\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4\" fill=\"none\" aria-hidden=\"true\">\n @if (maximized()) { <path d=\"M5 3h8v8M3 5h8v8H3z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linejoin=\"round\" /> } @else { <rect x=\"3\" y=\"3\" width=\"10\" height=\"10\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linejoin=\"round\" /> }\n </svg>\n </button>\n }\n @if (closable()) {\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 cursor-pointer items-center justify-center rounded-full text-ui-fg-muted transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus\"\n aria-label=\"Fechar\"\n (click)=\"close()\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" />\n </svg>\n </button>\n }\n </div>\n </div>\n }\n <div class=\"min-h-0 flex-1 overflow-auto p-4\"><ng-content /></div>\n @if (footerTemplate(); as footerTpl) {\n <div class=\"flex justify-end gap-2 border-t border-ui-line px-4 py-3\">\n <ng-container [ngTemplateOutlet]=\"footerTpl\" />\n </div>\n }\n </div>\n </ng-template>\n `,\n})\nexport class SmzDialogComponent implements OnDestroy {\n public readonly visible = model(false);\n public readonly header = input<string | null | undefined>('');\n public readonly modal = input(true, { transform: booleanAttribute });\n public readonly closable = input(true, { transform: booleanAttribute });\n public readonly dismissableMask = input(false, { transform: booleanAttribute });\n public readonly closeOnEscape = input(true, { transform: booleanAttribute });\n public readonly style = input<Record<string, string | number | null> | null | undefined>(null);\n public readonly styleClass = input<string | null | undefined>('');\n public readonly baseZIndex = input(0);\n /** Permite arrastar pelo cabecalho. */\n public readonly draggable = input(false, { transform: booleanAttribute });\n /** Mostra a alca nativa de redimensionar no canto inferior direito. */\n public readonly resizable = input(false, { transform: booleanAttribute });\n /** Mostra o botao de maximizar no cabecalho padrao (com `smzTemplate=\"header\"` use `maximize()`). */\n public readonly maximizable = input(false, { transform: booleanAttribute });\n public readonly maximized = model(false);\n /** Posicao na tela (como o `position` do `p-dialog`). */\n public readonly position = input<SmzDialogPosition>('center');\n\n public readonly shown = output<void>();\n public readonly hidden = output<void>();\n\n private readonly panel = viewChild.required<TemplateRef<unknown>>('panel');\n private readonly templates = contentChildren(SmzTemplateDirective);\n protected readonly headerTemplate = computed(() => smzFindTemplate(this.templates(), 'header'));\n protected readonly footerTemplate = computed(() => smzFindTemplate(this.templates(), 'footer'));\n\n private readonly overlay = inject(Overlay);\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private overlayRef?: OverlayRef;\n\n protected readonly dx = signal(0);\n protected readonly dy = signal(0);\n\n constructor() {\n effect(() => {\n if (this.visible()) this.open();\n else this.dispose();\n });\n effect(() => {\n const position = this.position();\n this.overlayRef?.updatePositionStrategy(this.strategyFor(position));\n });\n }\n\n /** Alterna entre maximizado e normal. */\n public maximize(): void {\n this.maximized.update((value) => !value);\n this.dx.set(0);\n this.dy.set(0);\n }\n\n protected startDrag(event: PointerEvent): void {\n if (!this.draggable() || this.maximized() || (event.target as HTMLElement).closest('button')) return;\n event.preventDefault();\n const startX = event.clientX - this.dx();\n const startY = event.clientY - this.dy();\n const move = (e: PointerEvent): void => {\n this.dx.set(e.clientX - startX);\n this.dy.set(e.clientY - startY);\n };\n const up = (): void => {\n document.removeEventListener('pointermove', move);\n document.removeEventListener('pointerup', up);\n };\n document.addEventListener('pointermove', move);\n document.addEventListener('pointerup', up);\n }\n\n private strategyFor(position: SmzDialogPosition): GlobalPositionStrategy {\n const strategy = this.overlay.position().global();\n const horizontal = position.includes('left') ? 'left' : position.includes('right') ? 'right' : 'center';\n const vertical = position.startsWith('top') ? 'top' : position.startsWith('bottom') ? 'bottom' : position === 'left' || position === 'right' || position === 'center' ? 'center' : 'center';\n if (horizontal === 'left') strategy.left('0');\n else if (horizontal === 'right') strategy.right('0');\n else strategy.centerHorizontally();\n if (vertical === 'top') strategy.top('0');\n else if (vertical === 'bottom') strategy.bottom('0');\n else strategy.centerVertically();\n return strategy;\n }\n\n public close(): void {\n this.visible.set(false);\n }\n\n public ngOnDestroy(): void {\n this.dispose();\n }\n\n private open(): void {\n if (this.overlayRef) return;\n\n const modal = this.modal();\n this.overlayRef = this.overlay.create({\n hasBackdrop: modal,\n positionStrategy: this.strategyFor(this.position()),\n scrollStrategy: this.overlay.scrollStrategies.block(),\n });\n\n SmzZIndex.set('modal', this.overlayRef.hostElement, 1100 + this.baseZIndex());\n if (this.overlayRef.backdropElement) {\n this.overlayRef.backdropElement.style.zIndex = String(SmzZIndex.get(this.overlayRef.hostElement) - 1);\n }\n\n if (this.closeOnEscape()) {\n this.overlayRef.keydownEvents().pipe(filter((event) => event.key === 'Escape')).subscribe(() => this.close());\n }\n if (modal && this.dismissableMask()) {\n this.overlayRef.backdropClick().subscribe(() => this.close());\n }\n\n this.overlayRef.attach(new TemplatePortal(this.panel(), this.viewContainer));\n this.forwardTestId();\n this.shown.emit();\n }\n\n private dispose(): void {\n if (!this.overlayRef) return;\n SmzZIndex.clear(this.overlayRef.hostElement);\n this.overlayRef.dispose();\n this.overlayRef = undefined;\n this.hidden.emit();\n }\n\n /** O `data-testid` posto no hospedeiro vai para o painel renderizado no overlay (usado nos testes e2e). */\n private forwardTestId(): void {\n const testId = this.host.nativeElement.getAttribute('data-testid');\n if (testId) this.overlayRef?.overlayElement.querySelector('[role=\"dialog\"]')?.setAttribute('data-testid', testId);\n }\n}\n","import { ConnectedPosition, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { NgStyle } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n booleanAttribute,\n inject,\n input,\n output,\n viewChild,\n} from '@angular/core';\nimport { filter, merge } from 'rxjs';\nimport { SmzZIndex } from '../core/zindex';\n\n/** Elemento real ou ancora virtual que apenas informa o retangulo. */\nexport type SmzPopoverTarget = Element | { getBoundingClientRect(): { left: number; top: number; width: number; height: number } };\n\nconst POSITIONS: ConnectedPosition[] = [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 8 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -8 },\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetY: 8 },\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', offsetY: -8 },\n];\n\n/**\n * Painel flutuante ancorado a um elemento. Substitui o `p-popover` do PrimeNG.\n *\n * <button smzButton (click)=\"op.toggle($event)\"></button>\n * <ui-popover #op>conteudo</ui-popover>\n */\n@Component({\n selector: 'ui-popover',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgStyle],\n host: { class: 'contents' },\n template: `\n <ng-template #panel>\n <div\n role=\"dialog\"\n class=\"rounded-overlay border border-ui-line bg-ui-surface-2 p-3 font-ui text-ui-fg shadow-overlay\"\n [class]=\"styleClass() ?? ''\"\n [ngStyle]=\"style()\"\n >\n <ng-content />\n </div>\n </ng-template>\n `,\n})\nexport class SmzPopoverComponent implements OnDestroy {\n public readonly style = input<Record<string, string | number | null> | null | undefined>(null);\n public readonly styleClass = input<string | null | undefined>('');\n public readonly dismissable = input(true, { transform: booleanAttribute });\n public readonly autoZIndex = input(true, { transform: booleanAttribute });\n /** Aceito por compatibilidade; o overlay do CDK ja e anexado ao body. */\n public readonly appendTo = input<unknown>(undefined);\n\n public readonly shown = output<void>();\n public readonly hidden = output<void>();\n\n private readonly panel = viewChild.required<TemplateRef<unknown>>('panel');\n private readonly overlay = inject(Overlay);\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private overlayRef?: OverlayRef;\n private origin?: Element;\n\n public get overlayVisible(): boolean {\n return !!this.overlayRef;\n }\n\n public toggle(event: Event | null, target?: SmzPopoverTarget): void {\n if (this.overlayRef) this.hide();\n else this.show(event, target);\n }\n\n public show(event: Event | null, target?: SmzPopoverTarget): void {\n if (this.overlayRef) return;\n\n const anchor = target ?? (event?.currentTarget as SmzPopoverTarget | null) ?? (event?.target as SmzPopoverTarget);\n const origin = anchor instanceof Element ? anchor : this.toPoint(anchor);\n this.origin = anchor instanceof Element ? anchor : undefined;\n\n this.overlayRef = this.overlay.create({\n positionStrategy: this.overlay.position().flexibleConnectedTo(origin).withPositions(POSITIONS).withPush(true),\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n });\n\n if (this.autoZIndex()) SmzZIndex.set('overlay', this.overlayRef.hostElement, 1000);\n\n if (this.dismissable()) {\n merge(\n this.overlayRef.outsidePointerEvents().pipe(filter((outside) => !this.origin?.contains(outside.target as Node))),\n this.overlayRef.keydownEvents().pipe(filter((key) => key.key === 'Escape')),\n ).subscribe(() => this.hide());\n }\n\n this.overlayRef.attach(new TemplatePortal(this.panel(), this.viewContainer));\n this.forwardTestId();\n this.shown.emit();\n }\n\n public hide(): void {\n if (!this.overlayRef) return;\n SmzZIndex.clear(this.overlayRef.hostElement);\n this.overlayRef.dispose();\n this.overlayRef = undefined;\n this.origin = undefined;\n this.hidden.emit();\n }\n\n public ngOnDestroy(): void {\n this.overlayRef?.dispose();\n this.overlayRef = undefined;\n }\n\n /** Ancora virtual (objeto com `getBoundingClientRect`) vira um ponto para o CDK. */\n private toPoint(anchor: SmzPopoverTarget): { x: number; y: number; width: number; height: number } {\n const rect = anchor.getBoundingClientRect();\n return { x: rect.left, y: rect.top, width: rect.width, height: rect.height };\n }\n\n /** O `data-testid` posto no hospedeiro vai para o painel renderizado no overlay (usado nos testes e2e). */\n private forwardTestId(): void {\n const testId = this.host.nativeElement.getAttribute('data-testid');\n if (testId) this.overlayRef?.overlayElement.querySelector('[role=\"dialog\"]')?.setAttribute('data-testid', testId);\n }\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n booleanAttribute,\n computed,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output,\n viewChild,\n} from '@angular/core';\nimport { filter } from 'rxjs';\nimport { smzFindTemplate, SmzTemplateDirective } from '../core/template.directive';\nimport { SmzZIndex } from '../core/zindex';\n\nexport type SmzDrawerPosition = 'left' | 'right' | 'top' | 'bottom' | 'full';\n\nconst PANEL_BY_POSITION: Record<SmzDrawerPosition, string> = {\n left: 'h-screen w-80 max-w-full',\n right: 'h-screen w-80 max-w-full',\n top: 'h-80 max-h-full w-screen',\n bottom: 'h-80 max-h-full w-screen',\n full: 'h-screen w-screen',\n};\n\n/**\n * Painel lateral deslizante. Substitui o `p-drawer` do PrimeNG.\n *\n * <ui-drawer [(visible)]=\"aberto\" position=\"right\" header=\"Filtros\">conteudo</ui-drawer>\n */\n@Component({\n selector: 'ui-drawer',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgStyle, NgTemplateOutlet],\n template: `\n <ng-template #panel>\n <aside\n role=\"dialog\"\n aria-modal=\"true\"\n class=\"pointer-events-auto flex flex-col border-ui-line bg-ui-surface-2 font-ui text-ui-fg shadow-overlay\"\n [class]=\"panelClasses()\"\n [ngStyle]=\"style()\"\n >\n @if (headerTemplate(); as headerTpl) {\n <div class=\"border-b border-ui-line px-4 py-3\"><ng-container [ngTemplateOutlet]=\"headerTpl\" /></div>\n }\n @else if (header() || showCloseIcon()) {\n <div class=\"flex items-center justify-between gap-4 border-b border-ui-line px-4 py-3\">\n <span class=\"text-ui-lg font-medium\">{{ header() }}</span>\n @if (showCloseIcon()) {\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 cursor-pointer items-center justify-center rounded-full text-ui-fg-muted transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus\"\n aria-label=\"Fechar\"\n (click)=\"close()\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" />\n </svg>\n </button>\n }\n </div>\n }\n <div class=\"min-h-0 flex-1 overflow-auto\"><ng-content /></div>\n @if (footerTemplate(); as footerTpl) {\n <div class=\"border-t border-ui-line px-4 py-3\"><ng-container [ngTemplateOutlet]=\"footerTpl\" /></div>\n }\n </aside>\n </ng-template>\n `,\n})\nexport class SmzDrawerComponent implements OnDestroy {\n public readonly visible = model(false);\n public readonly position = input<SmzDrawerPosition>('left');\n public readonly fullScreen = input(false, { transform: booleanAttribute });\n public readonly header = input<string | null | undefined>('');\n public readonly modal = input(true, { transform: booleanAttribute });\n public readonly dismissible = input(true, { transform: booleanAttribute });\n public readonly closeOnEscape = input(true, { transform: booleanAttribute });\n public readonly showCloseIcon = input(true, { transform: booleanAttribute });\n public readonly style = input<Record<string, string | number | null> | null | undefined>(null);\n public readonly styleClass = input<string | null | undefined>('');\n /** Aceitos por compatibilidade com o `p-drawer`; sem efeito neste componente. */\n public readonly blockScroll = input(true, { transform: booleanAttribute });\n public readonly ariaCloseLabel = input<string | null | undefined>('');\n public readonly appendTo = input<unknown>(undefined);\n\n public readonly shown = output<void>();\n public readonly hidden = output<void>();\n\n private readonly panel = viewChild.required<TemplateRef<unknown>>('panel');\n private readonly templates = contentChildren(SmzTemplateDirective);\n protected readonly headerTemplate = computed(() => smzFindTemplate(this.templates(), 'header'));\n protected readonly footerTemplate = computed(() => smzFindTemplate(this.templates(), 'footer'));\n\n protected readonly effectivePosition = computed<SmzDrawerPosition>(() => (this.fullScreen() ? 'full' : this.position() ?? 'left'));\n protected readonly panelClasses = computed(() => {\n const position = this.effectivePosition();\n const edge = position === 'left' ? 'border-r' : position === 'right' ? 'border-l' : position === 'top' ? 'border-b' : position === 'bottom' ? 'border-t' : '';\n return `${PANEL_BY_POSITION[position]} ${edge} ${this.styleClass() ?? ''}`.trim();\n });\n\n private readonly overlay = inject(Overlay);\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private overlayRef?: OverlayRef;\n\n constructor() {\n effect(() => {\n if (this.visible()) this.open();\n else this.dispose();\n });\n }\n\n public close(): void {\n this.visible.set(false);\n }\n\n public ngOnDestroy(): void {\n this.dispose();\n }\n\n private open(): void {\n if (this.overlayRef) return;\n\n const position = this.effectivePosition();\n const strategy = this.overlay.position().global();\n if (position === 'left' || position === 'full' || position === 'top') strategy.top('0').left('0');\n if (position === 'right') strategy.top('0').right('0');\n if (position === 'bottom') strategy.bottom('0').left('0');\n\n this.overlayRef = this.overlay.create({\n hasBackdrop: this.modal(),\n positionStrategy: strategy,\n scrollStrategy: this.overlay.scrollStrategies.block(),\n });\n\n SmzZIndex.set('modal', this.overlayRef.hostElement, 1100);\n if (this.overlayRef.backdropElement) {\n this.overlayRef.backdropElement.style.zIndex = String(SmzZIndex.get(this.overlayRef.hostElement) - 1);\n }\n\n if (this.closeOnEscape()) {\n this.overlayRef.keydownEvents().pipe(filter((event) => event.key === 'Escape')).subscribe(() => this.close());\n }\n if (this.modal() && this.dismissible()) {\n this.overlayRef.backdropClick().subscribe(() => this.close());\n }\n\n this.overlayRef.attach(new TemplatePortal(this.panel(), this.viewContainer));\n this.forwardTestId();\n this.shown.emit();\n }\n\n private dispose(): void {\n if (!this.overlayRef) return;\n SmzZIndex.clear(this.overlayRef.hostElement);\n this.overlayRef.dispose();\n this.overlayRef = undefined;\n this.hidden.emit();\n }\n\n /** O `data-testid` posto no hospedeiro vai para o painel renderizado no overlay (usado nos testes e2e). */\n private forwardTestId(): void {\n const testId = this.host.nativeElement.getAttribute('data-testid');\n if (testId) this.overlayRef?.overlayElement.querySelector('[role=\"dialog\"]')?.setAttribute('data-testid', testId);\n }\n}\n","import { Injectable, signal } from '@angular/core';\n\nexport interface SmzToastMessage {\n /** success | info | warn | error | secondary | contrast (vocabulario antigo) */\n severity?: string;\n summary?: string;\n detail?: string;\n id?: unknown;\n /** Permite ter varios containers `ui-toast`, cada um escutando uma chave. */\n key?: string;\n /** Tempo de vida em ms (padrao do container se omitido). */\n life?: number;\n sticky?: boolean;\n closable?: boolean;\n data?: unknown;\n icon?: string;\n contentStyleClass?: string;\n styleClass?: string;\n closeIcon?: string;\n [extra: string]: unknown;\n}\n\nlet nextId = 0;\n\n/** Barramento de mensagens do toast. Substitui o `MessageService` do PrimeNG. */\n@Injectable({ providedIn: 'root' })\nexport class SmzMessageService {\n private readonly state = signal<ReadonlyArray<SmzToastMessage>>([]);\n\n /** Mensagens atualmente na fila (todas as chaves). */\n public readonly messages = this.state.asReadonly();\n\n public add(message: SmzToastMessage): void {\n this.addAll([message]);\n }\n\n public addAll(messages: SmzToastMessage[]): void {\n const prepared = messages.map((message) => ({ ...message, id: message.id ?? `smz-toast-${++nextId}` }));\n this.state.update((current) => [...current, ...prepared]);\n }\n\n public remove(message: SmzToastMessage): void {\n this.state.update((current) => current.filter((entry) => entry !== message && entry.id !== message.id));\n }\n\n /** Remove todas as mensagens, ou so as da chave informada. */\n public clear(key?: string): void {\n this.state.update((current) => (key ? current.filter((entry) => entry.key !== key) : []));\n }\n}\n","import { NgClass, NgStyle } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, computed, effect, inject, input } from '@angular/core';\nimport { SMZ_SOFT_TONE, SmzSeverity } from '../core/severity';\nimport { SmzMessageService, SmzToastMessage } from './message.service';\n\nexport type SmzToastPosition = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right' | 'center';\n\nconst POSITION_CLASSES: Record<SmzToastPosition, string> = {\n 'top-left': 'top-4 left-4 items-start',\n 'top-center': 'top-4 left-1/2 -translate-x-1/2 items-center',\n 'top-right': 'top-4 right-4 items-end',\n 'bottom-left': 'bottom-4 left-4 items-start',\n 'bottom-center': 'bottom-4 left-1/2 -translate-x-1/2 items-center',\n 'bottom-right': 'bottom-4 right-4 items-end',\n center: 'top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 items-center',\n};\n\nconst SEVERITY_TONE: Record<string, SmzSeverity> = {\n success: 'success',\n info: 'primary',\n warn: 'warning',\n error: 'danger',\n secondary: 'secondary',\n contrast: 'secondary',\n};\n\nconst DEFAULT_LIFE = 3000;\n\n/**\n * Container de toasts: exibe as mensagens do `SmzMessageService`. Substitui o `p-toast` do PrimeNG.\n *\n * <ui-toast position=\"bottom-right\" />\n */\n@Component({\n selector: 'ui-toast',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, NgStyle],\n template: `\n <div\n class=\"pointer-events-none fixed z-[2000] flex w-80 max-w-[95vw] flex-col gap-2\"\n [class]=\"positionClasses()\"\n [ngClass]=\"styleClass()\"\n [ngStyle]=\"style()\"\n >\n @for (message of visibleMessages(); track message.id) {\n <div\n role=\"alert\"\n aria-live=\"assertive\"\n class=\"pointer-events-auto flex items-start gap-3 rounded-overlay border px-4 py-3 font-ui shadow-overlay\"\n [class]=\"toneClasses(message)\"\n [ngClass]=\"message.styleClass\"\n (mouseenter)=\"pause(message)\"\n (mouseleave)=\"resume(message)\"\n >\n @if (message.icon) {\n <i [class]=\"message.icon\" aria-hidden=\"true\"></i>\n }\n <div class=\"min-w-0 flex-1\" [ngClass]=\"message.contentStyleClass\">\n @if (message.summary) {\n <div class=\"text-ui-md font-medium\">{{ message.summary }}</div>\n }\n @if (message.detail) {\n <div class=\"text-ui-sm\">{{ message.detail }}</div>\n }\n </div>\n @if (message.closable !== false) {\n <button\n type=\"button\"\n class=\"inline-flex h-6 w-6 shrink-0 cursor-pointer items-center justify-center rounded-full transition-colors duration-ui hover:bg-ui-fg/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus\"\n aria-label=\"Fechar\"\n (click)=\"close(message)\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-3.5 w-3.5\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" />\n </svg>\n </button>\n }\n </div>\n }\n </div>\n `,\n})\nexport class SmzToastContainerComponent {\n public readonly position = input<SmzToastPosition>('top-right');\n public readonly key = input<string | null | undefined>(undefined);\n public readonly life = input(DEFAULT_LIFE);\n public readonly style = input<Record<string, string | number | null> | null | undefined>(null);\n public readonly styleClass = input<string | null | undefined>('');\n\n private readonly service = inject(SmzMessageService);\n private readonly timers = new Map<unknown, { handle: ReturnType<typeof setTimeout>; start: number; remaining: number }>();\n\n protected readonly positionClasses = computed(() => POSITION_CLASSES[this.position()] ?? POSITION_CLASSES['top-right']);\n protected readonly visibleMessages = computed(() => {\n const key = this.key();\n return this.service.messages().filter((message) => (key ? message.key === key : !message.key));\n });\n\n constructor() {\n effect(() => {\n for (const message of this.visibleMessages()) this.schedule(message);\n });\n\n inject(DestroyRef).onDestroy(() => this.timers.forEach((timer) => clearTimeout(timer.handle)));\n }\n\n protected toneClasses(message: SmzToastMessage): string {\n const tone = SEVERITY_TONE[message.severity ?? 'info'] ?? 'primary';\n return `${SMZ_SOFT_TONE[tone]} bg-ui-surface-2`;\n }\n\n protected close(message: SmzToastMessage): void {\n this.clearTimer(message);\n this.service.remove(message);\n }\n\n protected pause(message: SmzToastMessage): void {\n const timer = this.timers.get(message.id);\n if (!timer) return;\n clearTimeout(timer.handle);\n timer.remaining -= Date.now() - timer.start;\n }\n\n protected resume(message: SmzToastMessage): void {\n const timer = this.timers.get(message.id);\n if (!timer || message.sticky) return;\n this.arm(message, Math.max(timer.remaining, 500));\n }\n\n private schedule(message: SmzToastMessage): void {\n if (message.sticky || this.timers.has(message.id)) return;\n this.arm(message, message.life ?? this.life());\n }\n\n private arm(message: SmzToastMessage, duration: number): void {\n const handle = setTimeout(() => this.close(message), duration);\n this.timers.set(message.id, { handle, start: Date.now(), remaining: duration });\n }\n\n private clearTimer(message: SmzToastMessage): void {\n const timer = this.timers.get(message.id);\n if (timer) clearTimeout(timer.handle);\n this.timers.delete(message.id);\n }\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n booleanAttribute,\n inject,\n input,\n output,\n viewChild,\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { filter, merge } from 'rxjs';\nimport { SmzZIndex } from '../core/zindex';\nimport { SmzTooltipDirective } from '../tooltip/tooltip.directive';\nimport { SmzUiMenuItem } from '../types/menu-item';\n\ntype MenuAnchor = Element | { x: number; y: number; width: number; height: number };\n\nconst POSITIONS = [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetY: 4 },\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', offsetY: -4 },\n] as const;\n\n/**\n * Menu de itens, inline ou em popup ancorado. Substitui o `p-menu` do PrimeNG.\n *\n * <button smzButton (click)=\"menu.toggle($event)\"></button>\n * <ui-menu #menu [model]=\"itens\" [popup]=\"true\" />\n */\n@Component({\n selector: 'ui-menu',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, NgStyle, NgTemplateOutlet, RouterLink, SmzTooltipDirective],\n template: `\n <ng-template #row let-item>\n @if (item.routerLink) {\n <a\n role=\"menuitem\"\n class=\"flex w-full cursor-pointer items-center gap-2 rounded-control px-3 py-2 text-left text-ui-md text-ui-fg no-underline transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50\"\n [routerLink]=\"item.routerLink\"\n [queryParams]=\"item.queryParams\"\n [fragment]=\"item.fragment\"\n [smzTooltip]=\"item.tooltip\"\n [ngClass]=\"item.styleClass\"\n (click)=\"activate(item, $event)\"\n >\n <ng-container [ngTemplateOutlet]=\"content\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </a>\n }\n @else if (item.url) {\n <a\n role=\"menuitem\"\n class=\"flex w-full cursor-pointer items-center gap-2 rounded-control px-3 py-2 text-left text-ui-md text-ui-fg no-underline transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50\"\n [href]=\"item.url\"\n [attr.target]=\"item.target\"\n [smzTooltip]=\"item.tooltip\"\n [ngClass]=\"item.styleClass\"\n (click)=\"activate(item, $event)\"\n >\n <ng-container [ngTemplateOutlet]=\"content\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </a>\n }\n @else {\n <button\n type=\"button\"\n role=\"menuitem\"\n class=\"flex w-full cursor-pointer items-center gap-2 rounded-control px-3 py-2 text-left text-ui-md text-ui-fg no-underline transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50\"\n [disabled]=\"item.disabled\"\n [smzTooltip]=\"item.tooltip\"\n [ngClass]=\"item.styleClass\"\n (click)=\"activate(item, $event)\"\n >\n <ng-container [ngTemplateOutlet]=\"content\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </button>\n }\n </ng-template>\n\n <ng-template #content let-item>\n @if (item.icon) {\n <i [class]=\"item.icon\" [ngClass]=\"item.iconClass\" aria-hidden=\"true\"></i>\n }\n @if (item.escape === false) {\n <span class=\"flex-1\" [ngClass]=\"item.labelStyleClass\" [innerHTML]=\"item.label\"></span>\n }\n @else {\n <span class=\"flex-1\" [ngClass]=\"item.labelStyleClass\">{{ item.label }}</span>\n }\n @if (item.badge) {\n <span class=\"rounded-full bg-ui-primary px-1.5 text-ui-xs text-ui-on-primary\" [ngClass]=\"item.badgeStyleClass\">{{ item.badge }}</span>\n }\n </ng-template>\n\n <ng-template #list>\n <div\n role=\"menu\"\n class=\"min-w-48 rounded-overlay border border-ui-line bg-ui-surface-2 p-1 font-ui text-ui-fg\"\n [class]=\"popup() ? 'shadow-overlay' : ''\"\n [ngClass]=\"styleClass()\"\n [ngStyle]=\"style()\"\n >\n @for (item of model(); track $index) {\n @if (item.visible !== false) {\n @if (item.separator) {\n <div role=\"separator\" class=\"my-1 h-px bg-ui-line\"></div>\n }\n @else if (item.items && item.items.length) {\n <div class=\"px-3 py-1.5 text-ui-xs font-medium text-ui-fg-muted\" [smzTooltip]=\"item.tooltip\">{{ item.label }}</div>\n @for (child of item.items; track $index) {\n @if (child.visible !== false) {\n @if (child.separator) {\n <div role=\"separator\" class=\"my-1 h-px bg-ui-line\"></div>\n }\n @else {\n <ng-container [ngTemplateOutlet]=\"row\" [ngTemplateOutletContext]=\"{ $implicit: child }\" />\n }\n }\n }\n }\n @else {\n <ng-container [ngTemplateOutlet]=\"row\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n }\n }\n }\n </div>\n </ng-template>\n\n @if (!popup()) {\n <ng-container [ngTemplateOutlet]=\"list\" />\n }\n `,\n})\nexport class SmzMenuListComponent implements OnDestroy {\n public readonly model = input<SmzUiMenuItem[] | null | undefined>([]);\n public readonly popup = input(false, { transform: booleanAttribute });\n public readonly style = input<Record<string, string | number | null> | null | undefined>(null);\n public readonly styleClass = input<string | null | undefined>('');\n public readonly autoZIndex = input(true, { transform: booleanAttribute });\n /** Aceitos por compatibilidade com o `p-menu`; sem efeito neste componente. */\n public readonly appendTo = input<unknown>(undefined);\n public readonly baseZIndex = input(0);\n\n public readonly shown = output<void>();\n public readonly hidden = output<void>();\n\n private readonly list = viewChild.required<TemplateRef<unknown>>('list');\n private readonly overlay = inject(Overlay);\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private overlayRef?: OverlayRef;\n private origin?: Element;\n\n public get visible(): boolean {\n return !!this.overlayRef;\n }\n\n public toggle(event: Event | null): void {\n if (this.overlayRef) this.hide();\n else this.show(event);\n }\n\n /** Abre o popup ancorado ao elemento do evento. */\n public show(event: Event | null, target?: Element): void {\n const anchor = target ?? (event?.currentTarget as Element | null) ?? (event?.target as Element | null) ?? this.host.nativeElement;\n this.open(anchor, anchor);\n }\n\n /** Abre o popup nas coordenadas da tela (uso tipico: menu de contexto). */\n public showAt(x: number, y: number): void {\n this.open({ x, y, width: 0, height: 0 }, undefined);\n }\n\n public hide(): void {\n if (!this.overlayRef) return;\n SmzZIndex.clear(this.overlayRef.hostElement);\n this.overlayRef.dispose();\n this.overlayRef = undefined;\n this.origin = undefined;\n this.hidden.emit();\n }\n\n public ngOnDestroy(): void {\n this.overlayRef?.dispose();\n this.overlayRef = undefined;\n }\n\n protected activate(item: SmzUiMenuItem, event: Event): void {\n if (item.disabled) {\n event.preventDefault();\n return;\n }\n item.command?.({ originalEvent: event, item });\n if (this.popup()) this.hide();\n }\n\n private open(anchor: MenuAnchor, origin: Element | undefined): void {\n if (this.overlayRef) this.hide();\n this.origin = origin;\n\n this.overlayRef = this.overlay.create({\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(anchor as Element)\n .withPositions([...POSITIONS])\n .withPush(true),\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n });\n\n if (this.autoZIndex()) SmzZIndex.set('menu', this.overlayRef.hostElement, 1000 + this.baseZIndex());\n\n merge(\n this.overlayRef.outsidePointerEvents().pipe(filter((outside) => !this.origin?.contains(outside.target as Node))),\n this.overlayRef.keydownEvents().pipe(filter((key) => key.key === 'Escape')),\n ).subscribe(() => this.hide());\n\n this.overlayRef.attach(new TemplatePortal(this.list(), this.viewContainer));\n this.shown.emit();\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, OnDestroy, effect, inject, input, viewChild } from '@angular/core';\nimport { booleanAttribute } from '@angular/core';\n\n/** Alvo que sabe qual elemento deve ser bloqueado (equivale ao `BlockableUI` do PrimeNG). */\nexport interface SmzBlockableUi {\n getBlockableElement(): HTMLElement;\n}\n\nexport type SmzBlockTarget = HTMLElement | SmzBlockableUi | null | undefined;\n\nfunction resolveElement(target: SmzBlockTarget): HTMLElement | null {\n if (!target) return null;\n if (target instanceof HTMLElement) return target;\n return typeof target.getBlockableElement === 'function' ? target.getBlockableElement() : null;\n}\n\n/**\n * Bloqueia a interacao com um elemento exibindo uma mascara por cima dele. Substitui o `p-blockUI` do PrimeNG.\n * Sem `target`, bloqueia o proprio pai do componente.\n *\n * <ui-block-ui [target]=\"elemento\" [blocked]=\"carregando\"><i class=\"fa-solid fa-lock\"></i></ui-block-ui>\n */\n@Component({\n selector: 'ui-block-ui',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'contents' },\n template: `\n <div\n #mask\n class=\"absolute inset-0 z-[1000] hidden items-center justify-center bg-ui-fg/30 text-ui-surface-1\"\n aria-hidden=\"true\"\n >\n <ng-content />\n </div>\n `,\n})\nexport class SmzBlockUiComponent implements OnDestroy {\n public readonly target = input<SmzBlockTarget | unknown>(null);\n public readonly blocked = input(false, { transform: booleanAttribute });\n\n private readonly mask = viewChild.required<ElementRef<HTMLElement>>('mask');\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private attachedTo: HTMLElement | null = null;\n private previousPosition = '';\n\n constructor() {\n effect(() => {\n const element = resolveElement(this.target() as SmzBlockTarget) ?? this.host.nativeElement.parentElement;\n if (this.blocked() && element) this.block(element);\n else this.unblock();\n });\n }\n\n public ngOnDestroy(): void {\n this.unblock();\n }\n\n private block(element: HTMLElement): void {\n if (this.attachedTo === element) return;\n this.unblock();\n\n this.previousPosition = element.style.position;\n if (getComputedStyle(element).position === 'static') element.style.position = 'relative';\n\n const mask = this.mask().nativeElement;\n mask.classList.remove('hidden');\n mask.classList.add('flex');\n element.appendChild(mask);\n this.attachedTo = element;\n }\n\n private unblock(): void {\n if (!this.attachedTo) return;\n\n const mask = this.mask().nativeElement;\n mask.classList.add('hidden');\n mask.classList.remove('flex');\n this.host.nativeElement.appendChild(mask);\n this.attachedTo.style.position = this.previousPosition;\n this.attachedTo = null;\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/** Barra de ferramentas simples (conteudo projetado). Substitui o `p-toolbar` do PrimeNG. */\n@Component({\n selector: 'ui-toolbar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'toolbar',\n class: 'flex flex-wrap items-center justify-between gap-2 rounded-control border border-ui-line bg-ui-surface-1 p-3 font-ui text-ui-fg',\n },\n template: '<ng-content />',\n})\nexport class SmzToolbarComponent {\n}\n","import { ConnectedPosition, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { TemplateRef, ViewContainerRef } from '@angular/core';\nimport { filter, merge, Observable, Subscription } from 'rxjs';\nimport { SmzZIndex } from './zindex';\n\nconst POSITIONS: ConnectedPosition[] = [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetY: 4 },\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', offsetY: -4 },\n];\n\nexport interface SmzAnchoredPanelOptions {\n /** O painel tem pelo menos a largura da ancora. */\n matchWidth?: boolean;\n /** Fecha ao clicar fora (padrao: true). */\n closeOnOutsideClick?: boolean;\n /** Chamado quando o painel e fechado por clique fora ou Escape. */\n onDismiss?: () => void;\n}\n\n/**\n * Painel suspenso ancorado a um elemento (CDK Overlay): base dos selects, datepicker, autocomplete etc.\n * Fecha com Escape ou clique fora (exceto na propria ancora).\n */\nexport class SmzAnchoredPanel {\n private overlayRef?: OverlayRef;\n private subscription?: Subscription;\n\n constructor(private readonly overlay: Overlay, private readonly viewContainer: ViewContainerRef) {\n }\n\n public get isOpen(): boolean {\n return !!this.overlayRef;\n }\n\n /** Elemento raiz do painel renderizado (para foco e medidas). */\n public get element(): HTMLElement | null {\n return this.overlayRef?.overlayElement ?? null;\n }\n\n public open(anchor: HTMLElement, template: TemplateRef<unknown>, options: SmzAnchoredPanelOptions = {}): void {\n if (this.overlayRef) return;\n\n this.overlayRef = this.overlay.create({\n positionStrategy: this.overlay.position().flexibleConnectedTo(anchor).withPositions(POSITIONS).withPush(true),\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n minWidth: options.matchWidth ? anchor.getBoundingClientRect().width : undefined,\n });\n\n SmzZIndex.set('overlay', this.overlayRef.hostElement, 1000);\n\n const dismiss = (): void => {\n this.close();\n options.onDismiss?.();\n };\n\n const streams: Array<Observable<unknown>> = [this.overlayRef.keydownEvents().pipe(filter((event) => event.key === 'Escape'))];\n if (options.closeOnOutsideClick !== false) {\n streams.push(\n this.overlayRef.outsidePointerEvents().pipe(filter((event) => !anchor.contains(event.target as Node))),\n );\n }\n this.subscription = merge(...streams).subscribe(dismiss);\n\n this.overlayRef.attach(new TemplatePortal(template, this.viewContainer));\n }\n\n public close(): void {\n this.subscription?.unsubscribe();\n this.subscription = undefined;\n if (!this.overlayRef) return;\n SmzZIndex.clear(this.overlayRef.hostElement);\n this.overlayRef.dispose();\n this.overlayRef = undefined;\n }\n\n public updatePosition(): void {\n this.overlayRef?.updatePosition();\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return, @typescript-eslint/explicit-module-boundary-types */\nimport { SmzObjectUtils } from './object-utils';\n\nexport type SmzFilterMode = 'contains' | 'startsWith' | 'endsWith' | 'equals' | 'notContains' | 'notEquals' | string;\n\n/** Configuracao de como ler label/valor de uma opcao (usada por select, multiselect, listbox, selectbutton, autocomplete). */\nexport interface SmzOptionConfig {\n optionLabel?: string | null;\n optionValue?: string | null;\n optionDisabled?: string | null;\n dataKey?: string | null;\n}\n\n/**\n * Texto da opcao. Sem `optionLabel`, opcoes-objeto com `label` usam esse campo (como o `p-select` do PrimeNG);\n * primitivos sao usados como estao.\n */\nexport function optionLabel(option: any, config: SmzOptionConfig): string {\n let value = option;\n if (config.optionLabel) value = SmzObjectUtils.resolveFieldData(option, config.optionLabel);\n else if (option !== null && typeof option === 'object' && option.label !== undefined) value = option.label;\n return value === null || value === undefined ? '' : String(value);\n}\n\n/**\n * Valor da opcao. Sem `optionValue` (e sem `optionLabel`), opcoes-objeto com `value` usam esse campo\n * (como o `p-select` do PrimeNG); caso contrario o proprio objeto e o valor.\n */\nexport function optionValue(option: any, config: SmzOptionConfig): any {\n if (config.optionValue) return SmzObjectUtils.resolveFieldData(option, config.optionValue);\n if (!config.optionLabel && option !== null && typeof option === 'object' && option.value !== undefined) return option.value;\n return option;\n}\n\nexport function optionDisabled(option: any, config: SmzOptionConfig): boolean {\n return config.optionDisabled ? !!SmzObjectUtils.resolveFieldData(option, config.optionDisabled) : false;\n}\n\n/** Igualdade de valores: por `dataKey` quando ha, senao comparacao profunda. */\nexport function sameValue(first: any, second: any, dataKey?: string | null): boolean {\n if (first === second) return true;\n if (first === null || first === undefined || second === null || second === undefined) return false;\n if (dataKey && typeof first === 'object' && typeof second === 'object') {\n return SmzObjectUtils.resolveFieldData(first, dataKey) === SmzObjectUtils.resolveFieldData(second, dataKey);\n }\n return SmzObjectUtils.deepEquals(first, second);\n}\n\nfunction normalize(text: string): string {\n return SmzObjectUtils.removeAccents(text).toLocaleLowerCase();\n}\n\n/** Filtra `options` por texto digitado, no modo informado (padrao: contains), ignorando acentos e caixa. */\nexport function filterOptions<T>(options: readonly T[], text: string, config: SmzOptionConfig & { filterBy?: string | null; mode?: SmzFilterMode }): T[] {\n const query = normalize(text.trim());\n if (!query) return [...options];\n\n const fields = (config.filterBy ?? config.optionLabel ?? '').split(',').map((entry) => entry.trim()).filter(Boolean);\n\n return options.filter((option) => {\n const candidates = fields.length > 0\n ? fields.map((field) => String(SmzObjectUtils.resolveFieldData(option, field) ?? ''))\n : [String(option ?? '')];\n\n return candidates.some((candidate) => {\n const target = normalize(candidate);\n switch (config.mode ?? 'contains') {\n case 'startsWith': return target.startsWith(query);\n case 'endsWith': return target.endsWith(query);\n case 'equals': return target === query;\n case 'notEquals': return target !== query;\n case 'notContains': return !target.includes(query);\n default: return target.includes(query);\n }\n });\n });\n}\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-unsafe-return, max-len */\n/* eslint-disable max-len -- classes Tailwind nos templates */\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-argument */\nimport { Overlay } from '@angular/cdk/overlay';\nimport { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SmzAnchoredPanel } from '../core/anchored-panel';\nimport { filterOptions, optionDisabled, optionLabel, optionValue, sameValue, SmzFilterMode, SmzOptionConfig } from '../core/option-utils';\nimport { SmzValueAccessor } from '../core/value-accessor';\nimport { smzUniqueId } from '../core/object-utils';\nimport { SmzInputTextDirective } from '../input/input.directives';\n\nexport interface SmzSelectChangeEvent {\n originalEvent?: Event;\n value: any;\n}\n\n/**\n * Lista suspensa de selecao unica. Substitui o `p-select` do PrimeNG.\n *\n * <ui-select [options]=\"paises\" optionLabel=\"name\" dataKey=\"id\" [formControl]=\"pais\" [filter]=\"true\" />\n *\n * Sem `optionValue` o valor do controle e o proprio objeto da opcao.\n */\n@Component({\n selector: 'ui-select',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, SmzInputTextDirective],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzSelectComponent), multi: true }],\n host: { class: 'block min-w-0' },\n template: `\n <button\n #trigger\n type=\"button\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n class=\"flex h-control w-full cursor-pointer items-center gap-2 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x text-left font-ui text-ui-md text-ui-fg transition-colors duration-ui focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50\"\n [ngClass]=\"styleClass()\"\n [id]=\"inputId() || null\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-controls]=\"open() ? listId : null\"\n [attr.aria-activedescendant]=\"open() && activeIndex() >= 0 ? listId + '-' + activeIndex() : null\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggle()\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur()\"\n >\n <span class=\"min-w-0 flex-1 truncate\" [class.text-ui-fg-subtle]=\"!hasValue()\">{{ displayLabel() }}</span>\n @if (showClear() && hasValue() && !isDisabled()) {\n <span\n role=\"button\"\n tabindex=\"-1\"\n aria-label=\"Limpar\"\n class=\"inline-flex h-5 w-5 items-center justify-center rounded-full text-ui-fg-muted hover:bg-ui-surface-3\"\n (click)=\"clear($event)\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" />\n </svg>\n </span>\n }\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4 shrink-0 text-ui-fg-muted\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M4 6l4 4 4-4\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </button>\n\n <ng-template #panel>\n <div class=\"flex max-h-72 flex-col overflow-hidden rounded-overlay border border-ui-line bg-ui-surface-2 font-ui text-ui-md text-ui-fg shadow-overlay\">\n @if (filter()) {\n <div class=\"border-b border-ui-line p-2\">\n <input\n #filterInput\n smzInputText\n size=\"sm\"\n type=\"text\"\n role=\"searchbox\"\n autocomplete=\"off\"\n [value]=\"filterText()\"\n [attr.placeholder]=\"filterPlaceholder() || null\"\n (input)=\"onFilter($event)\"\n (keydown)=\"onKeydown($event)\"\n />\n </div>\n }\n <ul role=\"listbox\" class=\"min-h-0 flex-1 overflow-auto p-1\" [id]=\"listId\">\n @for (option of visibleOptions(); track $index; let index = $index) {\n <li\n role=\"option\"\n class=\"cursor-pointer rounded-control px-3 py-2\"\n [id]=\"listId + '-' + index\"\n [attr.aria-selected]=\"isSelected(option)\"\n [attr.aria-disabled]=\"isOptionDisabled(option) || null\"\n [class]=\"optionClasses(option, index)\"\n (mouseenter)=\"activeIndex.set(index)\"\n (click)=\"select(option, $event)\"\n >\n {{ labelOf(option) }}\n </li>\n }\n @empty {\n <li class=\"px-3 py-2 text-ui-fg-muted\">{{ filterText() ? emptyFilterMessage() : emptyMessage() }}</li>\n }\n </ul>\n </div>\n </ng-template>\n `,\n})\nexport class SmzSelectComponent extends SmzValueAccessor<any> implements OnDestroy {\n public readonly options = input<readonly any[] | null | undefined>([]);\n public readonly optionLabel = input<string | null | undefined>(null);\n public readonly optionValue = input<string | null | undefined>(null);\n public readonly optionDisabled = input<string | null | undefined>(null);\n public readonly dataKey = input<string | null | undefined>(null);\n public readonly placeholder = input<string | null | undefined>('');\n public readonly filter = input(false, { transform: booleanAttribute });\n public readonly filterBy = input<string | null | undefined>(null);\n public readonly filterMatchMode = input<SmzFilterMode>('contains');\n public readonly filterPlaceholder = input<string | null | undefined>('');\n public readonly showClear = input(false, { transform: booleanAttribute });\n public readonly emptyMessage = input<string | null | undefined>('Nenhum resultado');\n public readonly emptyFilterMessage = input<string | null | undefined>('Nenhum resultado');\n public readonly styleClass = input<string | null | undefined>('');\n public readonly inputId = input<string | null | undefined>('');\n public readonly ariaLabel = input<string | null | undefined>('');\n /** Aceito por compatibilidade com o `p-select`; o painel sempre e anexado ao body pelo CDK. */\n public readonly appendTo = input<unknown>(undefined);\n\n public readonly changed = output<SmzSelectChangeEvent>();\n public readonly showed = output<void>();\n public readonly hidden = output<void>();\n\n protected readonly listId = smzUniqueId('smz-select-');\n protected readonly open = signal(false);\n protected readonly filterText = signal('');\n protected readonly activeIndex = signal(-1);\n\n protected readonly config = computed<SmzOptionConfig>(() => ({\n optionLabel: this.optionLabel(),\n optionValue: this.optionValue(),\n optionDisabled: this.optionDisabled(),\n dataKey: this.dataKey(),\n }));\n\n protected readonly visibleOptions = computed(() =>\n filterOptions(this.options() ?? [], this.filterText(), { ...this.config(), filterBy: this.filterBy(), mode: this.filterMatchMode() }),\n );\n\n protected readonly hasValue = computed(() => this.selectedOption() !== undefined);\n protected readonly selectedOption = computed(() => {\n const current = this.current();\n if (current === null || current === undefined) return undefined;\n return (this.options() ?? []).find((option) => sameValue(optionValue(option, this.config()), current, this.dataKey()));\n });\n protected readonly displayLabel = computed(() => {\n const selected = this.selectedOption();\n return selected === undefined ? (this.placeholder() ?? '') : optionLabel(selected, this.config());\n });\n\n private readonly overlay = inject(Overlay);\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly trigger = viewChild.required<ElementRef<HTMLButtonElement>>('trigger');\n private readonly panel = viewChild.required<TemplateRef<unknown>>('panel');\n private readonly filterInput = viewChild<ElementRef<HTMLInputElement>>('filterInput');\n private readonly anchored = new SmzAnchoredPanel(this.overlay, this.viewContainer);\n\n public ngOnDestroy(): void {\n this.anchored.close();\n }\n\n protected labelOf(option: any): string {\n return optionLabel(option, this.config());\n }\n\n protected isOptionDisabled(option: any): boolean {\n return optionDisabled(option, this.config());\n }\n\n protected isSelected(option: any): boolean {\n return sameValue(optionValue(option, this.config()), this.current(), this.dataKey());\n }\n\n protected optionClasses(option: any, index: number): string {\n if (this.isOptionDisabled(option)) return 'opacity-50 cursor-not-allowed';\n if (this.isSelected(option)) return 'bg-ui-primary/10 text-ui-primary';\n return this.activeIndex() === index ? 'bg-ui-surface-3' : '';\n }\n\n protected toggle(): void {\n if (this.open()) this.close();\n else this.openPanel();\n }\n\n protected onBlur(): void {\n if (!this.open()) this.touch();\n }\n\n protected select(option: any, event?: Event): void {\n if (this.isOptionDisabled(option)) return;\n const value = optionValue(option, this.config());\n this.commit(value);\n this.changed.emit({ originalEvent: event, value });\n this.close();\n this.trigger().nativeElement.focus();\n }\n\n protected clear(event: Event): void {\n event.stopPropagation();\n this.commit(null);\n this.changed.emit({ originalEvent: event, value: null });\n }\n\n protected onFilter(event: Event): void {\n this.filterText.set((event.target as HTMLInputElement).value);\n this.activeIndex.set(this.visibleOptions().length > 0 ? 0 : -1);\n this.anchored.updatePosition();\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const options = this.visibleOptions();\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (!this.open()) this.openPanel();\n else this.activeIndex.set(this.nextEnabled(this.activeIndex(), 1));\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (!this.open()) this.openPanel();\n else this.activeIndex.set(this.nextEnabled(this.activeIndex(), -1));\n break;\n case 'Home':\n if (this.open() && !this.filter()) { event.preventDefault(); this.activeIndex.set(this.nextEnabled(-1, 1)); }\n break;\n case 'End':\n if (this.open() && !this.filter()) { event.preventDefault(); this.activeIndex.set(this.nextEnabled(options.length, -1)); }\n break;\n case 'Enter':\n case ' ':\n if (event.key === ' ' && this.filter() && this.open()) break;\n event.preventDefault();\n if (!this.open()) this.openPanel();\n else if (this.activeIndex() >= 0 && options[this.activeIndex()] !== undefined) this.select(options[this.activeIndex()], event);\n break;\n case 'Escape':\n if (this.open()) { event.preventDefault(); this.close(); this.trigger().nativeElement.focus(); }\n break;\n case 'Tab':\n if (this.open()) this.close();\n break;\n default:\n if (!this.filter() && event.key.length === 1 && !event.ctrlKey && !event.metaKey) this.jumpToLetter(event.key);\n }\n }\n\n private openPanel(): void {\n if (this.isDisabled() || this.open()) return;\n\n this.filterText.set('');\n const selectedIndex = this.visibleOptions().findIndex((option) => this.isSelected(option));\n this.activeIndex.set(selectedIndex >= 0 ? selectedIndex : this.nextEnabled(-1, 1));\n\n this.anchored.open(this.trigger().nativeElement, this.panel(), {\n matchWidth: true,\n onDismiss: () => this.afterClose(),\n });\n this.open.set(true);\n this.showed.emit();\n if (this.filter()) setTimeout(() => this.filterInput()?.nativeElement.focus(), 0);\n }\n\n private close(): void {\n if (!this.open()) return;\n this.anchored.close();\n this.afterClose();\n }\n\n private afterClose(): void {\n this.open.set(false);\n this.filterText.set('');\n this.hidden.emit();\n this.touch();\n }\n\n private nextEnabled(from: number, step: 1 | -1): number {\n const options = this.visibleOptions();\n for (let index = from + step; index >= 0 && index < options.length; index += step) {\n if (!this.isOptionDisabled(options[index])) return index;\n }\n return from >= 0 && from < options.length ? from : -1;\n }\n\n private jumpToLetter(letter: string): void {\n const options = this.visibleOptions();\n const start = this.activeIndex() + 1;\n const lower = letter.toLocaleLowerCase();\n for (let offset = 0; offset < options.length; offset++) {\n const index = (start + offset) % options.length;\n if (this.labelOf(options[index]).toLocaleLowerCase().startsWith(lower) && !this.isOptionDisabled(options[index])) {\n this.activeIndex.set(index);\n if (!this.open()) this.select(options[index]);\n return;\n }\n }\n }\n}\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-unsafe-return, max-len */\n/* eslint-disable max-len -- classes Tailwind nos templates */\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-argument */\nimport { Overlay } from '@angular/cdk/overlay';\nimport { NgClass, NgStyle } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SmzAnchoredPanel } from '../core/anchored-panel';\nimport { smzUniqueId } from '../core/object-utils';\nimport { filterOptions, optionDisabled, optionLabel, optionValue, sameValue, SmzFilterMode, SmzOptionConfig } from '../core/option-utils';\nimport { SmzValueAccessor } from '../core/value-accessor';\nimport { SmzInputTextDirective } from '../input/input.directives';\n\nexport interface SmzMultiSelectChangeEvent {\n originalEvent?: Event;\n value: any[];\n itemValue?: any;\n}\n\n/**\n * Lista suspensa de selecao multipla. Substitui o `p-multiselect` do PrimeNG.\n *\n * <ui-multi-select [options]=\"itens\" optionLabel=\"name\" dataKey=\"id\" [formControl]=\"selecionados\" />\n */\n@Component({\n selector: 'ui-multi-select',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, NgStyle, SmzInputTextDirective],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzMultiSelectComponent), multi: true }],\n host: { class: 'block min-w-0' },\n template: `\n <button\n #trigger\n type=\"button\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n class=\"flex h-control w-full cursor-pointer items-center gap-2 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x text-left font-ui text-ui-md text-ui-fg transition-colors duration-ui focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50\"\n [ngClass]=\"styleClass()\"\n [id]=\"inputId() || null\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-controls]=\"open() ? listId : null\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggle()\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur()\"\n >\n <span class=\"min-w-0 flex-1 truncate\" [class.text-ui-fg-subtle]=\"selectedOptions().length === 0\">{{ displayLabel() }}</span>\n @if (showClear() && selectedOptions().length > 0 && !isDisabled()) {\n <span\n role=\"button\"\n tabindex=\"-1\"\n aria-label=\"Limpar\"\n class=\"inline-flex h-5 w-5 items-center justify-center rounded-full text-ui-fg-muted hover:bg-ui-surface-3\"\n (click)=\"clear($event)\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" />\n </svg>\n </span>\n }\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4 shrink-0 text-ui-fg-muted\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M4 6l4 4 4-4\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </button>\n\n <ng-template #panel>\n <div class=\"flex max-h-72 flex-col overflow-hidden rounded-overlay border border-ui-line bg-ui-surface-2 font-ui text-ui-md text-ui-fg shadow-overlay\" [ngStyle]=\"panelStyle()\">\n <div class=\"flex items-center gap-2 border-b border-ui-line p-2\">\n @if (showToggleAll()) {\n <button\n type=\"button\"\n role=\"checkbox\"\n class=\"inline-flex h-5 w-5 shrink-0 cursor-pointer items-center justify-center rounded border\"\n [class]=\"allSelected() ? 'border-ui-primary bg-ui-primary text-ui-on-primary' : 'border-ui-line-strong bg-ui-surface-1 text-transparent'\"\n [attr.aria-checked]=\"allSelected()\"\n aria-label=\"Selecionar todos\"\n (click)=\"toggleAll($event)\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-3.5 w-3.5\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M3 8.5l3.2 3L13 4.5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </button>\n }\n @if (filter()) {\n <input\n #filterInput\n smzInputText\n size=\"sm\"\n type=\"text\"\n role=\"searchbox\"\n autocomplete=\"off\"\n [value]=\"filterText()\"\n [attr.placeholder]=\"filterPlaceholder() || null\"\n (input)=\"onFilter($event)\"\n (keydown)=\"onKeydown($event)\"\n />\n }\n </div>\n <ul role=\"listbox\" aria-multiselectable=\"true\" class=\"min-h-0 flex-1 overflow-auto p-1\" [id]=\"listId\">\n @for (option of visibleOptions(); track $index; let index = $index) {\n <li\n role=\"option\"\n class=\"flex cursor-pointer items-center gap-2 rounded-control px-3 py-2\"\n [attr.aria-selected]=\"isSelected(option)\"\n [class]=\"optionRowClass(option, index)\"\n (mouseenter)=\"activeIndex.set(index)\"\n (click)=\"toggleOption(option, $event)\"\n >\n <span\n class=\"inline-flex h-4 w-4 shrink-0 items-center justify-center rounded border\"\n [class]=\"isSelected(option) ? 'border-ui-primary bg-ui-primary text-ui-on-primary' : 'border-ui-line-strong bg-ui-surface-1 text-transparent'\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M3 8.5l3.2 3L13 4.5\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span class=\"min-w-0 flex-1 truncate\">{{ labelOf(option) }}</span>\n </li>\n }\n @empty {\n <li class=\"px-3 py-2 text-ui-fg-muted\">{{ filterText() ? emptyFilterMessage() : emptyMessage() }}</li>\n }\n </ul>\n </div>\n </ng-template>\n `,\n})\nexport class SmzMultiSelectComponent extends SmzValueAccessor<any[]> implements OnDestroy {\n public readonly options = input<readonly any[] | null | undefined>([]);\n public readonly optionLabel = input<string | null | undefined>(null);\n public readonly optionValue = input<string | null | undefined>(null);\n public readonly optionDisabled = input<string | null | undefined>(null);\n public readonly dataKey = input<string | null | undefined>(null);\n public readonly placeholder = input<string | null | undefined>('');\n public readonly filter = input(false, { transform: booleanAttribute });\n public readonly filterBy = input<string | null | undefined>(null);\n public readonly filterMatchMode = input<SmzFilterMode>('contains');\n public readonly filterPlaceholder = input<string | null | undefined>('');\n public readonly showClear = input(false, { transform: booleanAttribute });\n public readonly showToggleAll = input(true, { transform: booleanAttribute });\n public readonly emptyMessage = input<string | null | undefined>('Nenhum resultado');\n public readonly emptyFilterMessage = input<string | null | undefined>('Nenhum resultado');\n public readonly maxSelectedLabels = input(3);\n /** Texto quando ha mais itens que `maxSelectedLabels`; `{0}` vira a quantidade. */\n public readonly selectedItemsLabel = input<string | null | undefined>('{0} itens selecionados');\n public readonly panelStyle = input<Record<string, string | number | null> | null | undefined>(null);\n public readonly styleClass = input<string | null | undefined>('');\n public readonly inputId = input<string | null | undefined>('');\n public readonly autofocusFilter = input(true, { transform: booleanAttribute });\n /** Aceitos por compatibilidade com o `p-multiselect`; sem efeito. */\n public readonly appendTo = input<unknown>(undefined);\n public readonly display = input<string | null | undefined>('comma');\n\n public readonly changed = output<SmzMultiSelectChangeEvent>();\n public readonly panelHide = output<void>();\n public readonly panelShow = output<void>();\n\n protected readonly listId = smzUniqueId('smz-multiselect-');\n protected readonly open = signal(false);\n protected readonly filterText = signal('');\n protected readonly activeIndex = signal(-1);\n\n protected readonly config = computed<SmzOptionConfig>(() => ({\n optionLabel: this.optionLabel(),\n optionValue: this.optionValue(),\n optionDisabled: this.optionDisabled(),\n dataKey: this.dataKey(),\n }));\n\n protected readonly visibleOptions = computed(() =>\n filterOptions(this.options() ?? [], this.filterText(), { ...this.config(), filterBy: this.filterBy(), mode: this.filterMatchMode() }),\n );\n\n protected readonly selectedValues = computed<any[]>(() => (Array.isArray(this.current()) ? (this.current() as any[]) : []));\n protected readonly selectedOptions = computed(() =>\n (this.options() ?? []).filter((option) => this.selectedValues().some((value) => sameValue(optionValue(option, this.config()), value, this.dataKey()))),\n );\n protected readonly allSelected = computed(() => {\n const enabled = this.visibleOptions().filter((option) => !optionDisabled(option, this.config()));\n return enabled.length > 0 && enabled.every((option) => this.isSelected(option));\n });\n protected readonly displayLabel = computed(() => {\n const selected = this.selectedOptions();\n if (selected.length === 0) return this.placeholder() ?? '';\n if (selected.length > this.maxSelectedLabels()) {\n return (this.selectedItemsLabel() ?? '{0}').replace('{0}', String(selected.length));\n }\n return selected.map((option) => optionLabel(option, this.config())).join(', ');\n });\n\n private readonly overlay = inject(Overlay);\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly trigger = viewChild.required<ElementRef<HTMLButtonElement>>('trigger');\n private readonly panel = viewChild.required<TemplateRef<unknown>>('panel');\n private readonly filterInput = viewChild<ElementRef<HTMLInputElement>>('filterInput');\n private readonly anchored = new SmzAnchoredPanel(this.overlay, this.viewContainer);\n\n public ngOnDestroy(): void {\n this.anchored.close();\n }\n\n protected labelOf(option: any): string {\n return optionLabel(option, this.config());\n }\n\n protected isSelected(option: any): boolean {\n const value = optionValue(option, this.config());\n return this.selectedValues().some((selected) => sameValue(value, selected, this.dataKey()));\n }\n\n protected optionRowClass(option: any, index: number): string {\n if (optionDisabled(option, this.config())) return 'opacity-50 cursor-not-allowed';\n if (this.activeIndex() === index) return 'bg-ui-surface-3';\n return this.selectedValues().length > 0 && this.isSelected(option) ? 'bg-ui-primary/10' : '';\n }\n\n protected toggle(): void {\n if (this.open()) this.close();\n else this.openPanel();\n }\n\n protected onBlur(): void {\n if (!this.open()) this.touch();\n }\n\n protected toggleOption(option: any, event: Event): void {\n if (optionDisabled(option, this.config())) return;\n const value = optionValue(option, this.config());\n const next = this.isSelected(option)\n ? this.selectedValues().filter((selected) => !sameValue(value, selected, this.dataKey()))\n : [...this.selectedValues(), value];\n this.commit(next);\n this.changed.emit({ originalEvent: event, value: next, itemValue: value });\n }\n\n protected toggleAll(event: Event): void {\n const enabled = this.visibleOptions().filter((option) => !optionDisabled(option, this.config()));\n const enabledValues = enabled.map((option) => optionValue(option, this.config()));\n const keep = this.selectedValues().filter((selected) => !enabledValues.some((value) => sameValue(value, selected, this.dataKey())));\n const next = this.allSelected() ? keep : [...keep, ...enabledValues];\n this.commit(next);\n this.changed.emit({ originalEvent: event, value: next });\n }\n\n protected clear(event: Event): void {\n event.stopPropagation();\n this.commit([]);\n this.changed.emit({ originalEvent: event, value: [] });\n }\n\n protected onFilter(event: Event): void {\n this.filterText.set((event.target as HTMLInputElement).value);\n this.activeIndex.set(this.visibleOptions().length > 0 ? 0 : -1);\n this.anchored.updatePosition();\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const options = this.visibleOptions();\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (!this.open()) this.openPanel();\n else this.activeIndex.set(Math.min(options.length - 1, this.activeIndex() + 1));\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (!this.open()) this.openPanel();\n else this.activeIndex.set(Math.max(0, this.activeIndex() - 1));\n break;\n case 'Enter':\n case ' ':\n if (event.key === ' ' && this.filter() && this.open()) break;\n event.preventDefault();\n if (!this.open()) this.openPanel();\n else if (options[this.activeIndex()] !== undefined) this.toggleOption(options[this.activeIndex()], event);\n break;\n case 'Escape':\n if (this.open()) { event.preventDefault(); this.close(); this.trigger().nativeElement.focus(); }\n break;\n case 'Tab':\n if (this.open()) this.close();\n break;\n default:\n break;\n }\n }\n\n private openPanel(): void {\n if (this.isDisabled() || this.open()) return;\n this.filterText.set('');\n this.activeIndex.set(this.visibleOptions().length > 0 ? 0 : -1);\n this.anchored.open(this.trigger().nativeElement, this.panel(), { matchWidth: true, onDismiss: () => this.afterClose() });\n this.open.set(true);\n this.panelShow.emit();\n if (this.filter() && this.autofocusFilter()) setTimeout(() => this.filterInput()?.nativeElement.focus(), 0);\n }\n\n private close(): void {\n if (!this.open()) return;\n this.anchored.close();\n this.afterClose();\n }\n\n private afterClose(): void {\n this.open.set(false);\n this.filterText.set('');\n this.panelHide.emit();\n this.touch();\n }\n}\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-unsafe-return, max-len */\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument */\nimport { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, booleanAttribute, computed, forwardRef, input, output } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { optionDisabled, optionLabel, optionValue, sameValue, SmzOptionConfig } from '../core/option-utils';\nimport { SmzValueAccessor } from '../core/value-accessor';\n\nexport interface SmzSelectButtonChangeEvent {\n originalEvent?: Event;\n value: any;\n}\n\n/**\n * Grupo de botoes de selecao unica ou multipla. Substitui o `p-selectbutton` do PrimeNG.\n *\n * <ui-select-button [options]=\"tipos\" optionLabel=\"label\" optionValue=\"value\" [(ngModel)]=\"tipo\" />\n */\n@Component({\n selector: 'ui-select-button',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzSelectButtonComponent), multi: true }],\n host: { class: 'inline-flex' },\n template: `\n <div role=\"group\" class=\"inline-flex gap-1 rounded-control bg-ui-surface-3 p-1\" [ngClass]=\"styleClass()\">\n @for (option of options(); track $index) {\n <button\n type=\"button\"\n class=\"inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-control px-control-x font-ui text-ui-md font-medium transition-colors duration-ui focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50\"\n [class]=\"buttonClasses(option)\"\n [attr.aria-pressed]=\"isSelected(option)\"\n [disabled]=\"isDisabled() || isOptionDisabled(option)\"\n (click)=\"toggle(option, $event)\"\n (blur)=\"touch()\"\n >\n @if (iconOf(option); as icon) {\n <i [class]=\"icon\" aria-hidden=\"true\"></i>\n }\n {{ labelOf(option) }}\n </button>\n }\n </div>\n `,\n})\nexport class SmzSelectButtonComponent extends SmzValueAccessor<any> {\n public readonly options = input<readonly any[] | null | undefined>([]);\n public readonly optionLabel = input<string | null | undefined>(null);\n public readonly optionValue = input<string | null | undefined>(null);\n public readonly optionDisabled = input<string | null | undefined>(null);\n public readonly dataKey = input<string | null | undefined>(null);\n public readonly multiple = input(false, { transform: booleanAttribute });\n public readonly allowEmpty = input(true, { transform: booleanAttribute });\n public readonly size = input<'small' | 'large' | null | undefined>(null);\n public readonly styleClass = input<string | null | undefined>('');\n /** Aceito por compatibilidade com o `p-selectbutton`; sem efeito. */\n public readonly appendTo = input<unknown>(undefined);\n\n public readonly changed = output<SmzSelectButtonChangeEvent>();\n\n /** Sem `optionLabel`/`optionValue`, opcoes-objeto com `label`/`value` sao lidas automaticamente (como no PrimeNG). */\n private readonly sample = computed<any>(() => (this.options() ?? [])[0]);\n protected readonly config = computed<SmzOptionConfig>(() => ({\n optionLabel: this.optionLabel() ?? (typeof this.sample() === 'object' && this.sample() !== null && 'label' in this.sample() ? 'label' : null),\n optionValue: this.optionValue() ?? (typeof this.sample() === 'object' && this.sample() !== null && 'value' in this.sample() ? 'value' : null),\n optionDisabled: this.optionDisabled(),\n dataKey: this.dataKey(),\n }));\n\n protected labelOf(option: any): string {\n return optionLabel(option, this.config());\n }\n\n protected iconOf(option: any): string | null {\n return option && typeof option === 'object' && typeof option.icon === 'string' ? option.icon : null;\n }\n\n protected isOptionDisabled(option: any): boolean {\n return optionDisabled(option, this.config());\n }\n\n protected isSelected(option: any): boolean {\n const value = optionValue(option, this.config());\n const current = this.current();\n return this.multiple()\n ? Array.isArray(current) && current.some((selected) => sameValue(value, selected, this.dataKey()))\n : sameValue(value, current, this.dataKey());\n }\n\n protected buttonClasses(option: any): string {\n const size = this.size() === 'small' ? 'h-[calc(var(--smz-control-h-sm)-0.5rem)] text-ui-sm' : this.size() === 'large' ? 'h-[calc(var(--smz-control-h-lg)-0.5rem)] text-ui-lg' : 'h-[calc(var(--smz-control-h)-0.5rem)]';\n const tone = this.isSelected(option) ? 'bg-ui-surface-1 text-ui-fg shadow-card' : 'text-ui-fg-muted hover:text-ui-fg';\n return `${size} ${tone}`;\n }\n\n protected toggle(option: any, event: Event): void {\n const value = optionValue(option, this.config());\n const selected = this.isSelected(option);\n\n if (this.multiple()) {\n const current = Array.isArray(this.current()) ? (this.current() as any[]) : [];\n const nextList = selected ? current.filter((entry) => !sameValue(value, entry, this.dataKey())) : [...current, value];\n if (nextList.length === 0 && !this.allowEmpty()) return;\n this.commit(nextList);\n this.changed.emit({ originalEvent: event, value: nextList });\n return;\n }\n\n if (selected && !this.allowEmpty()) return;\n const next = selected ? null : value;\n this.commit(next);\n this.changed.emit({ originalEvent: event, value: next });\n }\n}\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-unsafe-return, max-len */\n/* eslint-disable max-len -- classes Tailwind nos templates */\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument */\nimport { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n booleanAttribute,\n computed,\n contentChildren,\n forwardRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { filterOptions, optionDisabled, optionLabel, optionValue, sameValue, SmzFilterMode, SmzOptionConfig } from '../core/option-utils';\nimport { smzFindTemplate, SmzTemplateDirective } from '../core/template.directive';\nimport { SmzValueAccessor } from '../core/value-accessor';\nimport { SmzInputTextDirective } from '../input/input.directives';\n\nexport interface SmzListboxClickEvent {\n originalEvent: Event;\n option: any;\n value: any;\n}\n\nexport interface SmzListboxChangeEvent {\n originalEvent?: Event;\n value: any;\n}\n\n/**\n * Lista de selecao (unica ou multipla) sempre visivel. Substitui o `p-listbox` do PrimeNG.\n * Aceita os templates `header`, `item`, `footer` e `empty` via `smzTemplate`.\n *\n * <ui-listbox [options]=\"itens\" optionLabel=\"name\" dataKey=\"id\" [(ngModel)]=\"selecionado\">\n * <ng-template smzTemplate=\"item\" let-item>{{ item.name }}</ng-template>\n * </ui-listbox>\n */\n@Component({\n selector: 'ui-listbox',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, NgStyle, NgTemplateOutlet, SmzInputTextDirective],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzListboxComponent), multi: true }],\n host: { class: 'block min-w-0' },\n template: `\n <div class=\"flex flex-col overflow-hidden rounded-control border border-ui-line bg-ui-surface-1 font-ui text-ui-md text-ui-fg\" [ngClass]=\"styleClass()\" [ngStyle]=\"style()\">\n @if (headerTemplate(); as headerTpl) {\n <div class=\"border-b border-ui-line p-2\"><ng-container [ngTemplateOutlet]=\"headerTpl\" /></div>\n }\n @if (filter()) {\n <div class=\"border-b border-ui-line p-2\">\n <input smzInputText size=\"sm\" type=\"text\" role=\"searchbox\" autocomplete=\"off\" [value]=\"filterText()\" (input)=\"onFilter($event)\" />\n </div>\n }\n <ul role=\"listbox\" class=\"min-h-0 flex-1 overflow-auto p-1\" [attr.aria-multiselectable]=\"multiple()\" [ngStyle]=\"listStyle()\">\n @for (option of visibleOptions(); track $index; let index = $index) {\n <li\n role=\"option\"\n class=\"flex cursor-pointer items-center gap-2 rounded-control px-3 py-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus\"\n [attr.aria-selected]=\"isSelected(option)\"\n [attr.tabindex]=\"index === 0 ? 0 : -1\"\n [class]=\"rowClass(option)\"\n (click)=\"onItemClick(option, $event)\"\n (keydown.enter)=\"onItemClick(option, $event)\"\n (keydown.arrowdown)=\"focusSibling($event, 1)\"\n (keydown.arrowup)=\"focusSibling($event, -1)\"\n >\n @if (checkbox()) {\n <span\n class=\"inline-flex h-4 w-4 shrink-0 items-center justify-center rounded border\"\n [class]=\"isSelected(option) ? 'border-ui-primary bg-ui-primary text-ui-on-primary' : 'border-ui-line-strong bg-ui-surface-1 text-transparent'\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M3 8.5l3.2 3L13 4.5\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n }\n @if (itemTemplate(); as itemTpl) {\n <ng-container [ngTemplateOutlet]=\"itemTpl\" [ngTemplateOutletContext]=\"{ $implicit: option, index: index }\" />\n }\n @else {\n <span class=\"min-w-0 flex-1 truncate\">{{ labelOf(option) }}</span>\n }\n </li>\n }\n @empty {\n @if (emptyTemplate(); as emptyTpl) {\n <li><ng-container [ngTemplateOutlet]=\"emptyTpl\" /></li>\n }\n @else {\n <li class=\"px-3 py-2 text-ui-fg-muted\">{{ filterText() ? emptyFilterMessage() : emptyMessage() }}</li>\n }\n }\n </ul>\n @if (footerTemplate(); as footerTpl) {\n <div class=\"border-t border-ui-line p-2\"><ng-container [ngTemplateOutlet]=\"footerTpl\" /></div>\n }\n </div>\n `,\n})\nexport class SmzListboxComponent extends SmzValueAccessor<any> {\n public readonly options = input<readonly any[] | null | undefined>([]);\n public readonly optionLabel = input<string | null | undefined>(null);\n public readonly optionValue = input<string | null | undefined>(null);\n public readonly optionDisabled = input<string | null | undefined>(null);\n public readonly dataKey = input<string | null | undefined>(null);\n public readonly multiple = input(false, { transform: booleanAttribute });\n public readonly checkbox = input(false, { transform: booleanAttribute });\n public readonly filter = input(false, { transform: booleanAttribute });\n public readonly filterBy = input<string | null | undefined>(null);\n public readonly filterMatchMode = input<SmzFilterMode>('contains');\n /** Aceito por compatibilidade com o `p-listbox`; selecao multipla sempre alterna por clique. */\n public readonly metaKeySelection = input(false, { transform: booleanAttribute });\n public readonly readonly = input(false, { transform: booleanAttribute });\n public readonly emptyMessage = input<string | null | undefined>('Nenhum resultado');\n public readonly emptyFilterMessage = input<string | null | undefined>('Nenhum resultado');\n public readonly listStyle = input<Record<string, string | number | null> | null | undefined>(null);\n public readonly style = input<Record<string, string | number | null> | null | undefined>(null);\n public readonly styleClass = input<string | null | undefined>('');\n\n public readonly changed = output<SmzListboxChangeEvent>();\n public readonly clicked = output<SmzListboxClickEvent>();\n\n /** Elemento hospedeiro (compatibilidade com `Listbox.el` do PrimeNG). */\n public readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n protected readonly filterText = signal('');\n private readonly templates = contentChildren(SmzTemplateDirective);\n protected readonly headerTemplate = computed(() => smzFindTemplate(this.templates(), 'header'));\n protected readonly itemTemplate = computed(() => smzFindTemplate(this.templates(), 'item'));\n protected readonly footerTemplate = computed(() => smzFindTemplate(this.templates(), 'footer'));\n protected readonly emptyTemplate = computed(() => smzFindTemplate(this.templates(), 'empty'));\n\n protected readonly config = computed<SmzOptionConfig>(() => ({\n optionLabel: this.optionLabel(),\n optionValue: this.optionValue(),\n optionDisabled: this.optionDisabled(),\n dataKey: this.dataKey(),\n }));\n protected readonly visibleOptions = computed(() =>\n filterOptions(this.options() ?? [], this.filterText(), { ...this.config(), filterBy: this.filterBy(), mode: this.filterMatchMode() }),\n );\n\n protected labelOf(option: any): string {\n return optionLabel(option, this.config());\n }\n\n protected isSelected(option: any): boolean {\n const value = optionValue(option, this.config());\n const current = this.current();\n return this.multiple()\n ? Array.isArray(current) && current.some((selected) => sameValue(value, selected, this.dataKey()))\n : sameValue(value, current, this.dataKey());\n }\n\n protected rowClass(option: any): string {\n if (this.isDisabled() || optionDisabled(option, this.config())) return 'opacity-50 cursor-not-allowed';\n return this.isSelected(option) && !this.checkbox() ? 'bg-ui-primary/10 text-ui-primary' : 'hover:bg-ui-surface-3';\n }\n\n protected onFilter(event: Event): void {\n this.filterText.set((event.target as HTMLInputElement).value);\n }\n\n protected onItemClick(option: any, event: Event): void {\n if (this.isDisabled() || this.readonly() || optionDisabled(option, this.config())) return;\n\n const value = optionValue(option, this.config());\n const selected = this.isSelected(option);\n let next: any;\n\n if (this.multiple()) {\n const current = Array.isArray(this.current()) ? (this.current() as any[]) : [];\n next = selected ? current.filter((entry) => !sameValue(value, entry, this.dataKey())) : [...current, value];\n }\n else {\n next = selected ? null : value;\n }\n\n this.commit(next);\n this.changed.emit({ originalEvent: event, value: next });\n this.clicked.emit({ originalEvent: event, option, value });\n this.touch();\n }\n\n protected focusSibling(event: Event, step: 1 | -1): void {\n event.preventDefault();\n const row = event.currentTarget as HTMLElement;\n const sibling = (step === 1 ? row.nextElementSibling : row.previousElementSibling) as HTMLElement | null;\n sibling?.focus();\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n/** Campo com icone sobreposto ao input. Substitui o `p-iconfield` do PrimeNG. */\n@Component({\n selector: 'ui-icon-field',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'relative block [&>input]:w-full [&>input]:pl-9' },\n template: '<ng-content />',\n})\nexport class SmzIconFieldComponent {\n}\n\n/** Icone dentro de um `ui-icon-field`. Substitui o `p-inputicon` do PrimeNG. */\n@Component({\n selector: 'ui-input-icon',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'pointer-events-none absolute left-3 top-1/2 inline-flex -translate-y-1/2 items-center text-ui-fg-muted' },\n template: '<i [class]=\"styleClass()\" aria-hidden=\"true\"></i><ng-content />',\n})\nexport class SmzInputIconComponent {\n public readonly styleClass = input<string | null | undefined>('');\n}\n\n/** Agrupa input e complementos lado a lado. Substitui o `p-inputgroup` do PrimeNG. */\n@Component({\n selector: 'ui-input-group',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'flex items-stretch [&>*:not(:first-child)]:rounded-l-none [&>*:not(:last-child)]:rounded-r-none [&>*:not(:first-child)]:-ml-px' },\n template: '<ng-content />',\n})\nexport class SmzInputGroupComponent {\n}\n\n/** Complemento de um `ui-input-group`. Substitui o `p-inputgroupaddon` do PrimeNG. */\n@Component({\n selector: 'ui-input-group-addon',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'inline-flex items-center rounded-control border border-ui-line-strong bg-ui-surface-3 px-input-x-sm font-ui text-ui-md text-ui-fg-muted' },\n template: '<ng-content />',\n})\nexport class SmzInputGroupAddonComponent {\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Injectable, signal } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n/** Textos e calendario localizados usados pelos componentes do kit. Mesmas chaves do `Translation` do PrimeNG. */\nexport interface SmzTranslation {\n startsWith?: string;\n contains?: string;\n notContains?: string;\n endsWith?: string;\n equals?: string;\n notEquals?: string;\n noFilter?: string;\n lt?: string;\n lte?: string;\n gt?: string;\n gte?: string;\n is?: string;\n isNot?: string;\n before?: string;\n after?: string;\n dateIs?: string;\n dateIsNot?: string;\n dateBefore?: string;\n dateAfter?: string;\n clear?: string;\n apply?: string;\n matchAll?: string;\n matchAny?: string;\n addRule?: string;\n removeRule?: string;\n accept?: string;\n reject?: string;\n choose?: string;\n upload?: string;\n cancel?: string;\n close?: string;\n pending?: string;\n dayNames?: string[];\n dayNamesShort?: string[];\n dayNamesMin?: string[];\n monthNames?: string[];\n monthNamesShort?: string[];\n chooseYear?: string;\n chooseMonth?: string;\n chooseDate?: string;\n prevDecade?: string;\n nextDecade?: string;\n prevYear?: string;\n nextYear?: string;\n prevMonth?: string;\n nextMonth?: string;\n am?: string;\n pm?: string;\n today?: string;\n weekHeader?: string;\n firstDayOfWeek?: number;\n showMonthAfterYear?: boolean;\n dateFormat?: string;\n weak?: string;\n medium?: string;\n strong?: string;\n passwordPrompt?: string;\n emptyMessage?: string;\n emptyFilterMessage?: string;\n [key: string]: any;\n}\n\nconst DEFAULTS: SmzTranslation = {\n startsWith: 'Starts with',\n contains: 'Contains',\n notContains: 'Not contains',\n endsWith: 'Ends with',\n equals: 'Equals',\n notEquals: 'Not equals',\n noFilter: 'No Filter',\n lt: 'Less than',\n lte: 'Less than or equal to',\n gt: 'Greater than',\n gte: 'Greater than or equal to',\n is: 'Is',\n isNot: 'Is not',\n before: 'Before',\n after: 'After',\n dateIs: 'Date is',\n dateIsNot: 'Date is not',\n dateBefore: 'Date is before',\n dateAfter: 'Date is after',\n clear: 'Clear',\n apply: 'Apply',\n matchAll: 'Match All',\n matchAny: 'Match Any',\n addRule: 'Add Rule',\n removeRule: 'Remove Rule',\n accept: 'Yes',\n reject: 'No',\n choose: 'Choose',\n upload: 'Upload',\n cancel: 'Cancel',\n close: 'Close',\n pending: 'Pending',\n dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n chooseYear: 'Choose Year',\n chooseMonth: 'Choose Month',\n chooseDate: 'Choose Date',\n prevDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n prevYear: 'Previous Year',\n nextYear: 'Next Year',\n prevMonth: 'Previous Month',\n nextMonth: 'Next Month',\n am: 'am',\n pm: 'pm',\n today: 'Today',\n weekHeader: 'Wk',\n firstDayOfWeek: 0,\n dateFormat: 'mm/dd/yy',\n weak: 'Weak',\n medium: 'Medium',\n strong: 'Strong',\n passwordPrompt: 'Enter a password',\n emptyMessage: 'No results found',\n emptyFilterMessage: 'No results found',\n};\n\n/** Chaves de traducao usadas pelos componentes (mesmos valores do `TranslationKeys` do PrimeNG). */\nexport const SmzTranslationKeys = {\n STARTS_WITH: 'startsWith',\n CONTAINS: 'contains',\n NOT_CONTAINS: 'notContains',\n ENDS_WITH: 'endsWith',\n EQUALS: 'equals',\n NOT_EQUALS: 'notEquals',\n NO_FILTER: 'noFilter',\n LT: 'lt',\n LTE: 'lte',\n GT: 'gt',\n GTE: 'gte',\n IS: 'is',\n IS_NOT: 'isNot',\n BEFORE: 'before',\n AFTER: 'after',\n CLEAR: 'clear',\n APPLY: 'apply',\n MATCH_ALL: 'matchAll',\n MATCH_ANY: 'matchAny',\n ADD_RULE: 'addRule',\n REMOVE_RULE: 'removeRule',\n ACCEPT: 'accept',\n REJECT: 'reject',\n CHOOSE: 'choose',\n UPLOAD: 'upload',\n CANCEL: 'cancel',\n PENDING: 'pending',\n EMPTY_MESSAGE: 'emptyMessage',\n EMPTY_FILTER_MESSAGE: 'emptyFilterMessage',\n} as const;\n\n/**\n * Textos e nomes de calendario dos componentes do kit. O app (ou a core) chama `setTranslation` com o locale ativo.\n * Substitui `PrimeNG.setTranslation` / `getTranslation`.\n */\n@Injectable({ providedIn: 'root' })\nexport class SmzLocaleService {\n private readonly state = signal<SmzTranslation>({ ...DEFAULTS });\n\n /** Traducao atual (signal: componentes reagem a mudancas de idioma). */\n public readonly translation = this.state.asReadonly();\n\n /** Emite quando a traducao muda (para componentes que guardam rotulos em cache). */\n public readonly translationObserver = new Subject<SmzTranslation>();\n\n /** Modos de filtro oferecidos por tipo de coluna (`text`, `numeric`, `date`). */\n public filterMatchModeOptions: Record<string, string[]> = {\n text: ['startsWith', 'contains', 'notContains', 'endsWith', 'equals', 'notEquals'],\n numeric: ['equals', 'notEquals', 'lt', 'lte', 'gt', 'gte'],\n date: ['dateIs', 'dateIsNot', 'dateBefore', 'dateAfter'],\n };\n\n public setTranslation(translation: SmzTranslation | null | undefined): void {\n this.state.set({ ...DEFAULTS, ...(translation ?? {}) });\n this.translationObserver.next(this.state());\n }\n\n public getTranslation<T = string>(key: string): T {\n return this.state()[key] as T;\n }\n}\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-unsafe-return, max-len */\n/* eslint-disable max-len -- classes Tailwind nos templates */\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SmzValueAccessor } from '../core/value-accessor';\n\nexport interface SmzInputNumberInputEvent {\n originalEvent: Event;\n value: number | null;\n formattedValue: string;\n}\n\n/**\n * Campo numerico com formatacao por locale (decimal ou moeda). Substitui o `p-inputnumber` do PrimeNG.\n *\n * <ui-input-number [formControl]=\"preco\" mode=\"currency\" currency=\"BRL\" locale=\"pt-BR\" />\n *\n * O texto e reformatado ao sair do campo; enquanto digita, o valor numerico ja e propagado ao formulario.\n */\n@Component({\n selector: 'ui-input-number',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzInputNumberComponent), multi: true }],\n host: { class: 'flex min-w-0' },\n template: `\n <div class=\"relative flex w-full items-stretch\">\n <input\n #field\n type=\"text\"\n inputmode=\"decimal\"\n autocomplete=\"off\"\n class=\"h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50\"\n [class.pr-14]=\"showButtons()\"\n [attr.id]=\"inputId() || null\"\n [attr.placeholder]=\"placeholder() || null\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"current()\"\n role=\"spinbutton\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"readonly()\"\n [value]=\"text()\"\n (focus)=\"onFocus()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur($event)\"\n (keydown)=\"onKeydown($event)\"\n />\n @if (showClear() && current() !== null && !isDisabled()) {\n <button\n type=\"button\"\n tabindex=\"-1\"\n aria-label=\"Limpar\"\n class=\"absolute top-1/2 inline-flex h-6 w-6 -translate-y-1/2 cursor-pointer items-center justify-center rounded-full text-ui-fg-muted hover:bg-ui-surface-3\"\n [class]=\"showButtons() ? 'right-9' : 'right-2'\"\n (click)=\"clear()\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" />\n </svg>\n </button>\n }\n @if (showButtons()) {\n <div class=\"absolute inset-y-px right-px flex w-8 flex-col overflow-hidden rounded-r-control border-l border-ui-line-strong\">\n <button type=\"button\" tabindex=\"-1\" aria-label=\"Aumentar\" class=\"flex flex-1 cursor-pointer items-center justify-center bg-ui-surface-1 text-ui-fg-muted hover:bg-ui-surface-3 disabled:cursor-not-allowed disabled:opacity-50\" [disabled]=\"isDisabled()\" (click)=\"spin(1)\">\n <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" aria-hidden=\"true\"><path d=\"M4 10l4-4 4 4\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg>\n </button>\n <button type=\"button\" tabindex=\"-1\" aria-label=\"Diminuir\" class=\"flex flex-1 cursor-pointer items-center justify-center border-t border-ui-line-strong bg-ui-surface-1 text-ui-fg-muted hover:bg-ui-surface-3 disabled:cursor-not-allowed disabled:opacity-50\" [disabled]=\"isDisabled()\" (click)=\"spin(-1)\">\n <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" aria-hidden=\"true\"><path d=\"M4 6l4 4 4-4\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg>\n </button>\n </div>\n }\n </div>\n `,\n})\nexport class SmzInputNumberComponent extends SmzValueAccessor<number> {\n public readonly mode = input<'decimal' | 'currency' | string>('decimal');\n public readonly locale = input<string | null | undefined>(undefined);\n public readonly localeMatcher = input<string | null | undefined>(undefined);\n public readonly currency = input<string | null | undefined>(undefined);\n public readonly currencyDisplay = input<string | null | undefined>(undefined);\n public readonly useGrouping = input(true, { transform: booleanAttribute });\n public readonly minFractionDigits = input<number | null | undefined>(undefined);\n public readonly maxFractionDigits = input<number | null | undefined>(undefined);\n public readonly min = input<number | null | undefined>(undefined);\n public readonly max = input<number | null | undefined>(undefined);\n public readonly step = input(1);\n public readonly prefix = input<string | null | undefined>('');\n public readonly suffix = input<string | null | undefined>('');\n public readonly showButtons = input(false, { transform: booleanAttribute });\n public readonly showClear = input(false, { transform: booleanAttribute });\n public readonly allowEmpty = input(true, { transform: booleanAttribute });\n public readonly placeholder = input<string | null | undefined>('');\n public readonly readonly = input(false, { transform: booleanAttribute });\n public readonly inputId = input<string | null | undefined>('');\n\n public readonly inputed = output<SmzInputNumberInputEvent>();\n public readonly keyDown = output<KeyboardEvent>();\n public readonly blurred = output<Event>();\n public readonly focused = output<void>();\n\n private readonly field = viewChild.required<ElementRef<HTMLInputElement>>('field');\n private readonly editing = signal(false);\n private readonly typed = signal('');\n\n private readonly formatter = computed(() => {\n const isCurrency = this.mode() === 'currency';\n const options: Intl.NumberFormatOptions = {\n style: isCurrency ? 'currency' : 'decimal',\n useGrouping: this.useGrouping(),\n };\n if (isCurrency) {\n options.currency = this.currency() || 'BRL';\n if (this.currencyDisplay()) options.currencyDisplay = this.currencyDisplay() as Intl.NumberFormatOptions['currencyDisplay'];\n }\n if (this.minFractionDigits() != null) options.minimumFractionDigits = this.minFractionDigits() as number;\n if (this.maxFractionDigits() != null) options.maximumFractionDigits = this.maxFractionDigits() as number;\n if (options.minimumFractionDigits != null && options.maximumFractionDigits != null && options.minimumFractionDigits > options.maximumFractionDigits) {\n options.maximumFractionDigits = options.minimumFractionDigits;\n }\n return new Intl.NumberFormat(this.locale() || undefined, options);\n });\n\n private readonly decimalSeparator = computed(() =>\n new Intl.NumberFormat(this.locale() || undefined).formatToParts(1.1).find((part) => part.type === 'decimal')?.value ?? '.',\n );\n\n protected readonly text = computed(() => (this.editing() ? this.typed() : this.format(this.current())));\n\n public override writeValue(value: number | null): void {\n super.writeValue(typeof value === 'number' && !Number.isNaN(value) ? value : null);\n if (!this.editing()) this.typed.set('');\n }\n\n protected onFocus(): void {\n this.editing.set(true);\n this.typed.set(this.rawText(this.current()));\n this.focused.emit();\n setTimeout(() => this.field().nativeElement.select(), 0);\n }\n\n protected onInput(event: Event): void {\n const element = event.target as HTMLInputElement;\n const sanitized = this.sanitize(element.value);\n if (sanitized !== element.value) element.value = sanitized;\n this.typed.set(sanitized);\n\n const value = this.parse(sanitized);\n this.commit(value);\n this.inputed.emit({ originalEvent: event, value, formattedValue: this.format(value) });\n }\n\n protected onBlur(event: Event): void {\n const parsed = this.parse(this.typed());\n this.editing.set(false);\n\n if (parsed === null) {\n if (!this.allowEmpty()) this.commit(this.clamp(0));\n }\n else {\n this.commit(this.clamp(this.round(parsed)));\n }\n\n this.typed.set('');\n this.field().nativeElement.value = this.format(this.current());\n this.touch();\n this.blurred.emit(event);\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n this.keyDown.emit(event);\n if (event.defaultPrevented || this.readonly()) return;\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n this.spin(1);\n }\n else if (event.key === 'ArrowDown') {\n event.preventDefault();\n this.spin(-1);\n }\n }\n\n protected spin(direction: 1 | -1): void {\n if (this.isDisabled() || this.readonly()) return;\n const base = this.current() ?? 0;\n const next = this.clamp(this.round(base + direction * this.step()));\n this.commit(next);\n this.typed.set(this.rawText(next));\n if (!this.editing()) this.field().nativeElement.value = this.format(next);\n this.inputed.emit({ originalEvent: new Event('input'), value: next, formattedValue: this.format(next) });\n }\n\n protected clear(): void {\n this.commit(null);\n this.typed.set('');\n this.field().nativeElement.value = '';\n }\n\n private format(value: number | null): string {\n if (value === null || value === undefined || Number.isNaN(value)) return '';\n return `${this.prefix() ?? ''}${this.formatter().format(value)}${this.suffix() ?? ''}`;\n }\n\n /** Texto editavel: numero sem prefixo/sufixo/agrupamento, com o separador decimal do locale. */\n private rawText(value: number | null): string {\n if (value === null || value === undefined) return '';\n return String(value).replace('.', this.decimalSeparator());\n }\n\n private sanitize(text: string): string {\n const decimal = this.decimalSeparator();\n const allowed = new RegExp(`[^0-9\\\\-${decimal === '.' ? '\\\\.' : decimal}]`, 'g');\n let cleaned = text.replace(allowed, '');\n cleaned = cleaned.replace(/(?!^)-/g, '');\n const first = cleaned.indexOf(decimal);\n if (first >= 0) cleaned = cleaned.slice(0, first + 1) + cleaned.slice(first + 1).split(decimal).join('');\n return cleaned;\n }\n\n private parse(text: string): number | null {\n if (!text || text === '-' || text === this.decimalSeparator()) return null;\n const value = Number(text.replace(this.decimalSeparator(), '.'));\n return Number.isNaN(value) ? null : value;\n }\n\n private round(value: number): number {\n const digits = this.maxFractionDigits() ?? this.formatter().resolvedOptions().maximumFractionDigits ?? 3;\n const factor = Math.pow(10, digits);\n return Math.round((value + Number.EPSILON) * factor) / factor;\n }\n\n private clamp(value: number): number {\n const min = this.min();\n const max = this.max();\n if (min != null && value < min) return min;\n if (max != null && value > max) return max;\n return value;\n }\n}\n","/* eslint-disable quotes -- o formato usa aspas simples como delimitador literal */\nimport { SmzTranslation } from '../core/locale.service';\n\nconst pad = (value: number, length = 2): string => String(value).padStart(length, '0');\n\nconst escapeRegExp = (text: string): string => text.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\ntype Token = { kind: 'literal'; value: string } | { kind: 'field'; value: string };\n\n/** Quebra um formato estilo jQuery UI (`dd/mm/yy`) em tokens de campo e literais (texto entre aspas simples). */\nfunction tokenize(format: string): Token[] {\n const tokens: Token[] = [];\n const fields = ['yy', 'y', 'MM', 'M', 'mm', 'm', 'dd', 'd', 'DD', 'D', 'oo', 'o', '@', '!'];\n let index = 0;\n\n while (index < format.length) {\n if (format[index] === \"'\") {\n if (format[index + 1] === \"'\") {\n tokens.push({ kind: 'literal', value: \"'\" });\n index += 2;\n continue;\n }\n const end = format.indexOf(\"'\", index + 1);\n const stop = end === -1 ? format.length : end;\n tokens.push({ kind: 'literal', value: format.slice(index + 1, stop) });\n index = stop + 1;\n continue;\n }\n\n const field = fields.find((candidate) => format.startsWith(candidate, index));\n if (field) {\n tokens.push({ kind: 'field', value: field });\n index += field.length;\n }\n else {\n tokens.push({ kind: 'literal', value: format[index] });\n index += 1;\n }\n }\n return tokens;\n}\n\nfunction dayOfYear(date: Date): number {\n return Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000);\n}\n\n/** Formata uma data (so a parte de data) no formato estilo jQuery UI: d, dd, o, oo, D, DD, m, mm, M, MM, y, yy, @, !. */\nexport function smzFormatDate(date: Date, format: string, translation: SmzTranslation): string {\n return tokenize(format)\n .map((token) => {\n if (token.kind === 'literal') return token.value;\n switch (token.value) {\n case 'd': return String(date.getDate());\n case 'dd': return pad(date.getDate());\n case 'o': return String(dayOfYear(date));\n case 'oo': return pad(dayOfYear(date), 3);\n case 'D': return translation.dayNamesShort?.[date.getDay()] ?? '';\n case 'DD': return translation.dayNames?.[date.getDay()] ?? '';\n case 'm': return String(date.getMonth() + 1);\n case 'mm': return pad(date.getMonth() + 1);\n case 'M': return translation.monthNamesShort?.[date.getMonth()] ?? '';\n case 'MM': return translation.monthNames?.[date.getMonth()] ?? '';\n case 'y': return String(date.getFullYear()).slice(-2);\n case 'yy': return String(date.getFullYear());\n case '@': return String(date.getTime());\n case '!': return String(date.getTime() * 10000 + 621355968000000000);\n default: return '';\n }\n })\n .join('');\n}\n\n/** Interpreta um texto de data no formato dado; retorna `null` quando nao bate ou a data nao existe. */\nexport function smzParseDate(text: string, format: string, translation: SmzTranslation): Date | null {\n const tokens = tokenize(format);\n const groups: string[] = [];\n const names = (list?: string[]): string => (list ?? []).map(escapeRegExp).join('|');\n\n const pattern = tokens\n .map((token) => {\n if (token.kind === 'literal') return escapeRegExp(token.value);\n groups.push(token.value);\n switch (token.value) {\n case 'd': case 'm': case 'o': return '(\\\\d{1,2})';\n case 'dd': case 'mm': return '(\\\\d{2})';\n case 'oo': return '(\\\\d{3})';\n case 'y': return '(\\\\d{2})';\n case 'yy': return '(\\\\d{4})';\n case 'D': return `(${names(translation.dayNamesShort)})`;\n case 'DD': return `(${names(translation.dayNames)})`;\n case 'M': return `(${names(translation.monthNamesShort)})`;\n case 'MM': return `(${names(translation.monthNames)})`;\n case '@': case '!': return '(\\\\d+)';\n default: return '';\n }\n })\n .join('');\n\n const match = new RegExp(`^${pattern}$`, 'i').exec(text.trim());\n if (!match) return null;\n\n const now = new Date();\n let year = now.getFullYear();\n let month = 0;\n let day = 1;\n let dayOfYearValue = -1;\n\n for (let i = 0; i < groups.length; i++) {\n const raw = match[i + 1];\n switch (groups[i]) {\n case 'd': case 'dd': day = Number(raw); break;\n case 'o': case 'oo': dayOfYearValue = Number(raw); break;\n case 'm': case 'mm': month = Number(raw) - 1; break;\n case 'M': month = (translation.monthNamesShort ?? []).findIndex((name) => name.toLowerCase() === raw.toLowerCase()); break;\n case 'MM': month = (translation.monthNames ?? []).findIndex((name) => name.toLowerCase() === raw.toLowerCase()); break;\n case 'y': { const short = Number(raw); year = short <= (now.getFullYear() % 100) + 10 ? 2000 + short : 1900 + short; break; }\n case 'yy': year = Number(raw); break;\n case '@': return new Date(Number(raw));\n case '!': return new Date((Number(raw) - 621355968000000000) / 10000);\n default: break;\n }\n }\n\n if (month < 0 || month > 11) return null;\n if (dayOfYearValue > 0) {\n month = 0;\n day = dayOfYearValue;\n }\n\n const date = new Date(year, month, day);\n if (dayOfYearValue < 0 && (date.getFullYear() !== year || date.getMonth() !== month || date.getDate() !== day)) return null;\n return date;\n}\n\nexport const smzSameDay = (first: Date | null | undefined, second: Date | null | undefined): boolean =>\n !!first && !!second && first.getFullYear() === second.getFullYear() && first.getMonth() === second.getMonth() && first.getDate() === second.getDate();\n\nexport const smzStartOfDay = (date: Date): Date => new Date(date.getFullYear(), date.getMonth(), date.getDate());\n\nexport const smzTwoDigits = pad;\n\n/** Primeiro dia exibido na grade do mes: volta ate o `firstDayOfWeek`. */\nexport function smzCalendarStart(year: number, month: number, firstDayOfWeek: number): Date {\n const first = new Date(year, month, 1);\n const offset = (first.getDay() - firstDayOfWeek + 7) % 7;\n return new Date(year, month, 1 - offset);\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\nimport { Overlay } from '@angular/cdk/overlay';\nimport { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SmzAnchoredPanel } from '../core/anchored-panel';\nimport { SmzLocaleService } from '../core/locale.service';\nimport { SmzValueAccessor } from '../core/value-accessor';\nimport { smzCalendarStart, smzFormatDate, smzParseDate, smzSameDay, smzStartOfDay, smzTwoDigits } from './date-utils';\n\nexport type SmzDatePickerValue = Date | Date[] | null;\nexport type SmzDateSelectionMode = 'single' | 'multiple' | 'range';\ntype View = 'date' | 'month' | 'year';\n\ninterface DayCell {\n date: Date;\n label: number;\n inMonth: boolean;\n today: boolean;\n disabled: boolean;\n}\n\n/**\n * Seletor de data (e hora). Substitui o `p-datepicker` do PrimeNG.\n *\n * <ui-date-picker [formControl]=\"data\" dateFormat=\"dd/mm/yy\" [showTime]=\"true\" />\n *\n * Formato de texto no estilo jQuery UI (`dd/mm/yy`, `MM d, yy`...). Os nomes de mes e dia vem do `SmzLocaleService`.\n */\n@Component({\n selector: 'ui-date-picker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzDatePickerComponent), multi: true }],\n host: { class: 'block min-w-0' },\n template: `\n <div #anchor class=\"relative flex w-full items-stretch\" [ngClass]=\"styleClass()\">\n <input\n #field\n type=\"text\"\n autocomplete=\"off\"\n class=\"h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger\"\n [class.pr-10]=\"showIcon()\"\n [attr.id]=\"inputId() || null\"\n [attr.placeholder]=\"placeholder() || null\"\n [attr.aria-haspopup]=\"'dialog'\"\n [attr.aria-expanded]=\"open()\"\n [readOnly]=\"readonlyInput()\"\n [disabled]=\"isDisabled()\"\n [value]=\"text()\"\n (focus)=\"onFocus()\"\n (click)=\"onFieldClick()\"\n (input)=\"onTyping($event)\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur($event)\"\n />\n @if (showIcon()) {\n <button\n type=\"button\"\n aria-label=\"Abrir calendario\"\n class=\"absolute inset-y-0 right-0 inline-flex w-10 cursor-pointer items-center justify-center rounded-r-control text-ui-fg-muted hover:text-ui-fg disabled:cursor-not-allowed disabled:opacity-50\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggle()\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4\" fill=\"none\" aria-hidden=\"true\">\n <rect x=\"2\" y=\"3\" width=\"12\" height=\"11\" rx=\"2\" stroke=\"currentColor\" stroke-width=\"1.5\" />\n <path d=\"M2 6.5h12M5.5 1.5v3M10.5 1.5v3\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" />\n </svg>\n </button>\n }\n </div>\n\n <ng-template #panel>\n <div class=\"w-72 rounded-overlay border border-ui-line bg-ui-surface-2 p-3 font-ui text-ui-md text-ui-fg shadow-overlay\" role=\"dialog\" aria-label=\"Calendario\" (mousedown)=\"$event.preventDefault()\">\n @if (!timeOnly()) {\n <div class=\"mb-2 flex items-center justify-between gap-1\">\n <button type=\"button\" class=\"inline-flex h-8 w-8 cursor-pointer items-center justify-center rounded-full hover:bg-ui-surface-3\" [attr.aria-label]=\"translation().prevMonth\" (click)=\"shift(-1)\">\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4\" fill=\"none\" aria-hidden=\"true\"><path d=\"M10 4l-4 4 4 4\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg>\n </button>\n <div class=\"flex items-center gap-1 font-medium\">\n @if (view() === 'date') {\n <button type=\"button\" class=\"cursor-pointer rounded-control px-2 py-1 hover:bg-ui-surface-3\" (click)=\"view.set('month')\">{{ monthName() }}</button>\n }\n @if (view() !== 'year') {\n <button type=\"button\" class=\"cursor-pointer rounded-control px-2 py-1 hover:bg-ui-surface-3\" (click)=\"view.set('year')\">{{ viewYear() }}</button>\n }\n @else {\n <span class=\"px-2 py-1\">{{ decadeStart() }} - {{ decadeStart() + 9 }}</span>\n }\n </div>\n <button type=\"button\" class=\"inline-flex h-8 w-8 cursor-pointer items-center justify-center rounded-full hover:bg-ui-surface-3\" [attr.aria-label]=\"translation().nextMonth\" (click)=\"shift(1)\">\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4\" fill=\"none\" aria-hidden=\"true\"><path d=\"M6 4l4 4-4 4\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg>\n </button>\n </div>\n\n @if (view() === 'date') {\n <div class=\"grid grid-cols-7 gap-y-1 text-center\" role=\"grid\">\n @for (name of weekdayNames(); track $index) {\n <span class=\"py-1 text-ui-xs font-medium text-ui-fg-muted\">{{ name }}</span>\n }\n @for (cell of cells(); track cell.date.getTime()) {\n <button\n type=\"button\"\n class=\"mx-auto inline-flex h-8 w-8 cursor-pointer items-center justify-center rounded-full text-ui-sm transition-colors duration-ui disabled:cursor-not-allowed disabled:opacity-40\"\n [class]=\"dayClasses(cell)\"\n [disabled]=\"cell.disabled\"\n [attr.aria-selected]=\"isSelected(cell.date)\"\n (click)=\"pickDay(cell)\"\n >\n {{ cell.label }}\n </button>\n }\n </div>\n }\n @else if (view() === 'month') {\n <div class=\"grid grid-cols-3 gap-1\">\n @for (name of monthNamesShort(); track $index; let month = $index) {\n <button type=\"button\" class=\"cursor-pointer rounded-control px-2 py-3 text-ui-sm hover:bg-ui-surface-3\" [class]=\"month === viewMonth() ? 'bg-ui-primary/10 text-ui-primary' : ''\" (click)=\"pickMonth(month)\">{{ name }}</button>\n }\n </div>\n }\n @else {\n <div class=\"grid grid-cols-2 gap-1\">\n @for (year of decadeYears(); track year) {\n <button type=\"button\" class=\"cursor-pointer rounded-control px-2 py-3 text-ui-sm hover:bg-ui-surface-3\" [class]=\"year === viewYear() ? 'bg-ui-primary/10 text-ui-primary' : ''\" (click)=\"pickYear(year)\">{{ year }}</button>\n }\n </div>\n }\n }\n\n @if (showTime() || timeOnly()) {\n <div class=\"flex items-center justify-center gap-1\" [class]=\"timeOnly() ? '' : 'mt-3 border-t border-ui-line pt-3'\">\n <div class=\"flex flex-col items-center\">\n <button type=\"button\" class=\"h-6 w-8 cursor-pointer rounded hover:bg-ui-surface-3\" aria-label=\"Aumentar hora\" (click)=\"stepTime('h', 1)\">+</button>\n <span class=\"w-8 text-center text-ui-lg tabular-nums\">{{ displayHour() }}</span>\n <button type=\"button\" class=\"h-6 w-8 cursor-pointer rounded hover:bg-ui-surface-3\" aria-label=\"Diminuir hora\" (click)=\"stepTime('h', -1)\">-</button>\n </div>\n <span class=\"pb-0.5 text-ui-lg\">:</span>\n <div class=\"flex flex-col items-center\">\n <button type=\"button\" class=\"h-6 w-8 cursor-pointer rounded hover:bg-ui-surface-3\" aria-label=\"Aumentar minuto\" (click)=\"stepTime('m', 1)\">+</button>\n <span class=\"w-8 text-center text-ui-lg tabular-nums\">{{ twoDigits(minute()) }}</span>\n <button type=\"button\" class=\"h-6 w-8 cursor-pointer rounded hover:bg-ui-surface-3\" aria-label=\"Diminuir minuto\" (click)=\"stepTime('m', -1)\">-</button>\n </div>\n @if (showSeconds()) {\n <span class=\"pb-0.5 text-ui-lg\">:</span>\n <div class=\"flex flex-col items-center\">\n <button type=\"button\" class=\"h-6 w-8 cursor-pointer rounded hover:bg-ui-surface-3\" aria-label=\"Aumentar segundo\" (click)=\"stepTime('s', 1)\">+</button>\n <span class=\"w-8 text-center text-ui-lg tabular-nums\">{{ twoDigits(second()) }}</span>\n <button type=\"button\" class=\"h-6 w-8 cursor-pointer rounded hover:bg-ui-surface-3\" aria-label=\"Diminuir segundo\" (click)=\"stepTime('s', -1)\">-</button>\n </div>\n }\n @if (hourFormat() === '12') {\n <button type=\"button\" class=\"ml-2 h-8 w-10 cursor-pointer rounded-control border border-ui-line-strong text-ui-sm hover:bg-ui-surface-3\" (click)=\"stepTime('h', 12)\">{{ hour() >= 12 ? translation().pm : translation().am }}</button>\n }\n </div>\n }\n\n @if (showButtonBar()) {\n <div class=\"smz-datepicker-buttonbar mt-3 flex items-center justify-between border-t border-ui-line pt-2\">\n <button type=\"button\" class=\"cursor-pointer rounded-control px-3 py-1 text-ui-sm text-ui-primary hover:bg-ui-primary/10\" (click)=\"goToday()\">{{ translation().today }}</button>\n <button type=\"button\" class=\"cursor-pointer rounded-control px-3 py-1 text-ui-sm text-ui-primary hover:bg-ui-primary/10\" (click)=\"clearValue()\">{{ translation().clear }}</button>\n </div>\n }\n </div>\n </ng-template>\n `,\n})\nexport class SmzDatePickerComponent extends SmzValueAccessor<SmzDatePickerValue> implements OnDestroy {\n public readonly selectionMode = input<SmzDateSelectionMode>('single');\n public readonly dateFormat = input<string | null | undefined>(undefined);\n public readonly showTime = input(false, { transform: booleanAttribute });\n public readonly timeOnly = input(false, { transform: booleanAttribute });\n public readonly showSeconds = input(false, { transform: booleanAttribute });\n public readonly hourFormat = input<'12' | '24'>('24');\n public readonly minDate = input<Date | null | undefined>(null);\n public readonly maxDate = input<Date | null | undefined>(null);\n public readonly showButtonBar = input(false, { transform: booleanAttribute });\n public readonly showIcon = input(false, { transform: booleanAttribute });\n public readonly showOnFocus = input(true, { transform: booleanAttribute });\n public readonly keepInvalid = input(false, { transform: booleanAttribute });\n public readonly readonlyInput = input(false, { transform: booleanAttribute });\n public readonly placeholder = input<string | null | undefined>('');\n public readonly inputId = input<string | null | undefined>('');\n public readonly styleClass = input<string | null | undefined>('');\n /** Aceitos por compatibilidade com o `p-datepicker`; sem efeito. */\n public readonly appendTo = input<unknown>(undefined);\n public readonly touchUI = input(false, { transform: booleanAttribute });\n public readonly focusTrap = input(true, { transform: booleanAttribute });\n\n public readonly selected = output<Date>();\n public readonly cleared = output<void>();\n public readonly opened = output<void>();\n public readonly closed = output<void>();\n public readonly blurred = output<Event>();\n\n private readonly locale = inject(SmzLocaleService);\n protected readonly translation = this.locale.translation;\n protected readonly open = signal(false);\n protected readonly view = signal<View>('date');\n private readonly viewDate = signal<Date>(new Date());\n private readonly typed = signal<string | null>(null);\n protected readonly hour = signal(0);\n protected readonly minute = signal(0);\n protected readonly second = signal(0);\n\n protected readonly viewYear = computed(() => this.viewDate().getFullYear());\n protected readonly viewMonth = computed(() => this.viewDate().getMonth());\n protected readonly decadeStart = computed(() => Math.floor(this.viewYear() / 10) * 10);\n protected readonly decadeYears = computed(() => Array.from({ length: 10 }, (_, index) => this.decadeStart() + index));\n protected readonly monthName = computed(() => this.translation().monthNames?.[this.viewMonth()] ?? '');\n protected readonly monthNamesShort = computed(() => this.translation().monthNamesShort ?? []);\n protected readonly effectiveFormat = computed(() => this.dateFormat() ?? this.translation().dateFormat ?? 'dd/mm/yy');\n\n protected readonly weekdayNames = computed(() => {\n const names = this.translation().dayNamesMin ?? [];\n const first = this.translation().firstDayOfWeek ?? 0;\n return names.map((_, index) => names[(index + first) % names.length]);\n });\n\n protected readonly cells = computed<DayCell[]>(() => {\n const first = this.translation().firstDayOfWeek ?? 0;\n const start = smzCalendarStart(this.viewYear(), this.viewMonth(), first);\n const today = new Date();\n return Array.from({ length: 42 }, (_, index) => {\n const date = new Date(start.getFullYear(), start.getMonth(), start.getDate() + index);\n return { date, label: date.getDate(), inMonth: date.getMonth() === this.viewMonth(), today: smzSameDay(date, today), disabled: this.isOutOfRange(date) };\n });\n });\n\n protected readonly displayHour = computed(() => {\n if (this.hourFormat() === '24') return smzTwoDigits(this.hour());\n const value = this.hour() % 12;\n return smzTwoDigits(value === 0 ? 12 : value);\n });\n\n protected readonly text = computed(() => {\n const typed = this.typed();\n return typed !== null ? typed : this.formatValue(this.current());\n });\n\n private readonly overlay = inject(Overlay);\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly anchorRef = viewChild.required<ElementRef<HTMLElement>>('anchor');\n private readonly fieldRef = viewChild.required<ElementRef<HTMLInputElement>>('field');\n private readonly panel = viewChild.required<TemplateRef<unknown>>('panel');\n private readonly anchored = new SmzAnchoredPanel(this.overlay, this.viewContainer);\n\n /**\n * Aceita `Date`, string (ISO ou parseavel) e numero (timestamp), como o `p-datepicker`.\n * Valores invalidos viram `null` em vez de lancar. O modelo do formulario so muda quando o usuario escolhe uma data.\n */\n public override writeValue(value: SmzDatePickerValue | string | number): void {\n const coerced = coerceDateValue(value);\n super.writeValue(coerced);\n this.typed.set(null);\n this.syncViewTo(coerced);\n }\n\n public ngOnDestroy(): void {\n this.anchored.close();\n }\n\n protected twoDigits(value: number): string {\n return smzTwoDigits(value);\n }\n\n protected toggle(): void {\n if (this.open()) this.close();\n else this.openPanel();\n }\n\n protected onFocus(): void {\n if (this.showOnFocus()) this.openPanel();\n }\n\n protected onFieldClick(): void {\n this.openPanel();\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Enter') {\n this.commitTyped();\n this.close();\n }\n else if (event.key === 'Escape' || event.key === 'Tab') {\n this.close();\n }\n else if (event.key === 'ArrowDown' && !this.open()) {\n event.preventDefault();\n this.openPanel();\n }\n }\n\n protected onTyping(event: Event): void {\n this.typed.set((event.target as HTMLInputElement).value);\n }\n\n protected onBlur(event: Event): void {\n if (this.open()) return;\n this.commitTyped();\n this.touch();\n this.blurred.emit(event);\n }\n\n protected shift(direction: -1 | 1): void {\n const date = this.viewDate();\n if (this.view() === 'date') this.viewDate.set(new Date(date.getFullYear(), date.getMonth() + direction, 1));\n else if (this.view() === 'month') this.viewDate.set(new Date(date.getFullYear() + direction, date.getMonth(), 1));\n else this.viewDate.set(new Date(date.getFullYear() + direction * 10, date.getMonth(), 1));\n this.anchored.updatePosition();\n }\n\n protected pickMonth(month: number): void {\n this.viewDate.set(new Date(this.viewYear(), month, 1));\n this.view.set('date');\n }\n\n protected pickYear(year: number): void {\n this.viewDate.set(new Date(year, this.viewMonth(), 1));\n this.view.set('month');\n }\n\n protected isSelected(date: Date): boolean {\n const value = this.current();\n if (Array.isArray(value)) return value.some((entry) => smzSameDay(entry, date));\n return smzSameDay(value, date);\n }\n\n protected isInRange(date: Date): boolean {\n const value = this.current();\n if (this.selectionMode() !== 'range' || !Array.isArray(value) || !value[0] || !value[1]) return false;\n const day = smzStartOfDay(date).getTime();\n return day > smzStartOfDay(value[0]).getTime() && day < smzStartOfDay(value[1]).getTime();\n }\n\n protected dayClasses(cell: DayCell): string {\n if (this.isSelected(cell.date)) return 'bg-ui-primary text-ui-on-primary';\n if (this.isInRange(cell.date)) return 'bg-ui-primary/10 text-ui-primary';\n if (cell.today) return 'border border-ui-primary text-ui-primary hover:bg-ui-surface-3';\n return cell.inMonth ? 'hover:bg-ui-surface-3' : 'text-ui-fg-subtle hover:bg-ui-surface-3';\n }\n\n protected pickDay(cell: DayCell): void {\n const date = this.withTime(cell.date);\n const mode = this.selectionMode();\n const current = this.current();\n\n if (mode === 'multiple') {\n const list = Array.isArray(current) ? current : [];\n const exists = list.some((entry) => smzSameDay(entry, date));\n this.commit(exists ? list.filter((entry) => !smzSameDay(entry, date)) : [...list, date]);\n }\n else if (mode === 'range') {\n const range = Array.isArray(current) ? current : [];\n if (range.length === 1 || (range.length === 2 && range[1] !== null)) {\n if (range.length === 1 && range[0]) {\n const [start, end] = range[0].getTime() <= date.getTime() ? [range[0], date] : [date, range[0]];\n this.commit([start, end]);\n }\n else {\n this.commit([date]);\n }\n }\n else {\n this.commit([date]);\n }\n }\n else {\n this.commit(date);\n }\n\n this.typed.set(null);\n this.selected.emit(date);\n if (!cell.inMonth) this.viewDate.set(new Date(date.getFullYear(), date.getMonth(), 1));\n\n const done = mode === 'single' ? !this.showTime() : mode === 'range' ? Array.isArray(this.current()) && (this.current() as Date[]).length === 2 : false;\n if (done) this.close();\n }\n\n protected goToday(): void {\n const today = new Date();\n this.pickDay({ date: smzStartOfDay(today), label: today.getDate(), inMonth: true, today: true, disabled: false });\n this.viewDate.set(new Date(today.getFullYear(), today.getMonth(), 1));\n if (this.selectionMode() === 'single') this.close();\n }\n\n protected clearValue(): void {\n this.commit(null);\n this.typed.set(null);\n this.cleared.emit();\n this.close();\n }\n\n protected stepTime(unit: 'h' | 'm' | 's', delta: number): void {\n if (unit === 'h') this.hour.set((this.hour() + delta + 24) % 24);\n if (unit === 'm') this.minute.set((this.minute() + delta + 60) % 60);\n if (unit === 's') this.second.set((this.second() + delta + 60) % 60);\n\n const value = this.current();\n const base = Array.isArray(value) ? value[value.length - 1] : value;\n if (base) {\n const updated = this.withTime(base);\n this.commit(Array.isArray(value) ? [...value.slice(0, -1), updated] : updated);\n this.typed.set(null);\n }\n else if (this.timeOnly()) {\n this.commit(this.withTime(new Date()));\n }\n }\n\n private openPanel(): void {\n if (this.isDisabled() || this.readonlyInput() || this.open()) return;\n this.view.set('date');\n this.syncViewTo(this.current());\n this.anchored.open(this.anchorRef().nativeElement, this.panel(), {\n onDismiss: () => this.afterClose(),\n });\n this.open.set(true);\n this.opened.emit();\n }\n\n private close(): void {\n if (!this.open()) return;\n this.anchored.close();\n this.afterClose();\n }\n\n private afterClose(): void {\n this.open.set(false);\n this.commitTyped();\n this.closed.emit();\n this.touch();\n }\n\n private syncViewTo(value: SmzDatePickerValue): void {\n const base = Array.isArray(value) ? value[value.length - 1] ?? null : value;\n const reference = base ?? new Date();\n this.viewDate.set(new Date(reference.getFullYear(), reference.getMonth(), 1));\n this.hour.set(reference.getHours());\n this.minute.set(reference.getMinutes());\n this.second.set(this.showSeconds() ? reference.getSeconds() : 0);\n }\n\n private withTime(date: Date): Date {\n if (!this.showTime() && !this.timeOnly()) return smzStartOfDay(date);\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), this.hour(), this.minute(), this.showSeconds() ? this.second() : 0);\n }\n\n private isOutOfRange(date: Date): boolean {\n const min = this.minDate();\n const max = this.maxDate();\n const day = smzStartOfDay(date).getTime();\n return (!!min && day < smzStartOfDay(min).getTime()) || (!!max && day > smzStartOfDay(max).getTime());\n }\n\n private formatSingle(date: Date): string {\n const translation = this.translation();\n const dateText = this.timeOnly() ? '' : smzFormatDate(date, this.effectiveFormat(), translation);\n if (!this.showTime() && !this.timeOnly()) return dateText;\n\n let hours = date.getHours();\n let suffix = '';\n if (this.hourFormat() === '12') {\n suffix = ` ${hours >= 12 ? translation.pm : translation.am}`;\n hours = hours % 12 === 0 ? 12 : hours % 12;\n }\n const time = `${smzTwoDigits(hours)}:${smzTwoDigits(date.getMinutes())}${this.showSeconds() ? ':' + smzTwoDigits(date.getSeconds()) : ''}${suffix}`;\n return dateText ? `${dateText} ${time}` : time;\n }\n\n private formatValue(value: SmzDatePickerValue): string {\n if (!value) return '';\n if (!Array.isArray(value)) return this.formatSingle(value);\n if (this.selectionMode() === 'range') return value.filter(Boolean).map((entry) => this.formatSingle(entry)).join(' - ');\n return value.map((entry) => this.formatSingle(entry)).join(', ');\n }\n\n private parseSingle(text: string): Date | null {\n let rest = text.trim();\n let hours = 0;\n let minutes = 0;\n let seconds = 0;\n\n if (this.showTime() || this.timeOnly()) {\n const match = /(\\d{1,2}):(\\d{2})(?::(\\d{2}))?\\s*(am|pm)?$/i.exec(rest);\n if (match) {\n hours = Number(match[1]);\n minutes = Number(match[2]);\n seconds = match[3] ? Number(match[3]) : 0;\n if (match[4]) hours = (hours % 12) + (match[4].toLowerCase() === 'pm' ? 12 : 0);\n rest = rest.slice(0, match.index).trim();\n }\n else if (this.timeOnly()) {\n return null;\n }\n }\n\n const base = this.timeOnly() ? new Date() : smzParseDate(rest, this.effectiveFormat(), this.translation());\n if (!base) return null;\n const date = new Date(base.getFullYear(), base.getMonth(), base.getDate(), hours, minutes, seconds);\n return this.isOutOfRange(date) ? null : date;\n }\n\n /** Interpreta o texto digitado; se invalido, descarta (ou mantem, com `keepInvalid`). */\n private commitTyped(): void {\n const text = this.typed();\n if (text === null) return;\n\n const mode = this.selectionMode();\n if (text.trim() === '') {\n this.commit(null);\n this.typed.set(null);\n return;\n }\n\n let parsed: SmzDatePickerValue = null;\n if (mode === 'single') {\n parsed = this.parseSingle(text);\n }\n else {\n const separator = mode === 'range' ? ' - ' : ',';\n const parts = text.split(separator).map((entry) => this.parseSingle(entry));\n parsed = parts.every((entry) => entry !== null) ? (parts as Date[]) : null;\n }\n\n if (parsed !== null) {\n this.commit(parsed);\n this.typed.set(null);\n }\n else if (!this.keepInvalid()) {\n this.typed.set(null);\n }\n }\n}\n\nfunction toDate(value: unknown): Date | null {\n if (value instanceof Date) return Number.isNaN(value.getTime()) ? null : value;\n if (typeof value === 'string' || typeof value === 'number') {\n if (value === '') return null;\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? null : date;\n }\n return null;\n}\n\nfunction coerceDateValue(value: unknown): SmzDatePickerValue {\n if (Array.isArray(value)) {\n const dates = value.map(toDate).filter((date): date is Date => date !== null);\n return dates.length > 0 ? dates : null;\n }\n return toDate(value);\n}\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-unsafe-return, max-len */\n/* eslint-disable max-len -- classes Tailwind nos templates */\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument */\nimport { Overlay } from '@angular/cdk/overlay';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n booleanAttribute,\n computed,\n contentChildren,\n effect,\n forwardRef,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SmzAnchoredPanel } from '../core/anchored-panel';\nimport { optionLabel } from '../core/option-utils';\nimport { smzFindTemplate, SmzTemplateDirective } from '../core/template.directive';\nimport { SmzValueAccessor } from '../core/value-accessor';\n\nexport interface SmzAutoCompleteCompleteEvent {\n originalEvent?: Event;\n query: string;\n}\n\nexport interface SmzAutoCompleteSelectEvent {\n originalEvent?: Event;\n value: any;\n}\n\n/**\n * Campo de texto com sugestoes. Substitui o `p-autocomplete` do PrimeNG.\n * O componente nao busca: ao digitar emite `completeMethod` e o consumidor atualiza `suggestions`.\n *\n * <ui-auto-complete [(ngModel)]=\"texto\" [suggestions]=\"sugestoes\" (completeMethod)=\"buscar($event)\" [dropdown]=\"true\" />\n */\n@Component({\n selector: 'ui-auto-complete',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, NgTemplateOutlet],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzAutoCompleteComponent), multi: true }],\n host: { class: 'block min-w-0' },\n template: `\n <div #anchor class=\"relative flex w-full items-stretch\" [ngClass]=\"styleClass()\">\n <input\n #field\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n aria-autocomplete=\"list\"\n class=\"h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger\"\n [class]=\"dropdown() ? 'pr-10' : ''\"\n [attr.id]=\"inputId() || null\"\n [attr.placeholder]=\"placeholder() || null\"\n [attr.aria-expanded]=\"open()\"\n [disabled]=\"isDisabled()\"\n [value]=\"text()\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeydown($event)\"\n (focus)=\"focused.emit()\"\n (blur)=\"onBlur($event)\"\n />\n @if (showClear() && text() && !isDisabled()) {\n <button type=\"button\" tabindex=\"-1\" aria-label=\"Limpar\" class=\"absolute top-1/2 inline-flex h-6 w-6 -translate-y-1/2 cursor-pointer items-center justify-center rounded-full text-ui-fg-muted hover:bg-ui-surface-3\" [class]=\"dropdown() ? 'right-11' : 'right-2'\" (click)=\"clear()\">\n <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" aria-hidden=\"true\"><path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" /></svg>\n </button>\n }\n @if (dropdown()) {\n <button type=\"button\" tabindex=\"-1\" aria-label=\"Mostrar sugestoes\" class=\"absolute inset-y-0 right-0 inline-flex w-10 cursor-pointer items-center justify-center rounded-r-control text-ui-fg-muted hover:text-ui-fg disabled:cursor-not-allowed disabled:opacity-50\" [disabled]=\"isDisabled()\" (mousedown)=\"$event.preventDefault()\" (click)=\"toggleDropdown()\">\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4\" fill=\"none\" aria-hidden=\"true\"><path d=\"M4 6l4 4 4-4\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg>\n </button>\n }\n </div>\n\n <ng-template #panel>\n <div class=\"max-h-72 overflow-auto rounded-overlay border border-ui-line bg-ui-surface-2 font-ui text-ui-md text-ui-fg shadow-overlay\" (mousedown)=\"$event.preventDefault()\">\n @if (headerTemplate(); as headerTpl) {\n <ng-container [ngTemplateOutlet]=\"headerTpl\" />\n }\n <ul role=\"listbox\" class=\"p-1\">\n @for (item of suggestions(); track $index; let index = $index) {\n <li\n role=\"option\"\n class=\"cursor-pointer rounded-control px-3 py-2\"\n [class]=\"activeIndex() === index ? 'bg-ui-surface-3' : ''\"\n [attr.aria-selected]=\"activeIndex() === index\"\n (mouseenter)=\"activeIndex.set(index)\"\n (click)=\"select(item, $event)\"\n >\n @if (itemTemplate(); as itemTpl) {\n <ng-container [ngTemplateOutlet]=\"itemTpl\" [ngTemplateOutletContext]=\"{ $implicit: item, index: index }\" />\n }\n @else {\n {{ labelOf(item) }}\n }\n </li>\n }\n @empty {\n <li class=\"px-3 py-2 text-ui-fg-muted\">{{ emptyMessage() }}</li>\n }\n </ul>\n </div>\n </ng-template>\n `,\n})\nexport class SmzAutoCompleteComponent extends SmzValueAccessor<any> implements OnDestroy {\n public readonly suggestions = input<readonly any[] | null | undefined>([]);\n public readonly field = input<string | null | undefined>(null);\n public readonly dropdown = input(false, { transform: booleanAttribute });\n public readonly emptyMessage = input<string | null | undefined>('');\n public readonly minLength = input(1);\n public readonly delay = input(300);\n public readonly forceSelection = input(false, { transform: booleanAttribute });\n public readonly showClear = input(false, { transform: booleanAttribute });\n public readonly placeholder = input<string | null | undefined>('');\n public readonly inputId = input<string | null | undefined>('');\n public readonly styleClass = input<string | null | undefined>('');\n /** Aceito por compatibilidade com o `p-autocomplete`; sem efeito. */\n public readonly appendTo = input<unknown>(undefined);\n\n public readonly completeMethod = output<SmzAutoCompleteCompleteEvent>();\n public readonly selectedItem = output<SmzAutoCompleteSelectEvent>();\n public readonly cleared = output<void>();\n public readonly blurred = output<Event>();\n public readonly focused = output<void>();\n\n protected readonly open = signal(false);\n protected readonly activeIndex = signal(-1);\n private readonly typed = signal<string | null>(null);\n private searching = false;\n private timer?: ReturnType<typeof setTimeout>;\n\n private readonly templates = contentChildren(SmzTemplateDirective);\n protected readonly headerTemplate = computed(() => smzFindTemplate(this.templates(), 'header'));\n protected readonly itemTemplate = computed(() => smzFindTemplate(this.templates(), 'item'));\n protected readonly text = computed(() => {\n const typed = this.typed();\n if (typed !== null) return typed;\n const value = this.current();\n return value === null || value === undefined ? '' : this.labelOf(value);\n });\n\n private readonly overlay = inject(Overlay);\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly anchorRef = viewChild.required<ElementRef<HTMLElement>>('anchor');\n private readonly fieldRef = viewChild.required<ElementRef<HTMLInputElement>>('field');\n private readonly panel = viewChild.required<TemplateRef<unknown>>('panel');\n private readonly anchored = new SmzAnchoredPanel(this.overlay, this.viewContainer);\n\n constructor() {\n super();\n // Quando o consumidor entrega novas sugestoes depois de uma busca, mostra o painel.\n effect(() => {\n const list = this.suggestions() ?? [];\n if (!this.searching) return;\n this.searching = false;\n this.activeIndex.set(list.length > 0 ? 0 : -1);\n if (list.length > 0 || this.emptyMessage()) this.openPanel();\n else this.closePanel();\n });\n }\n\n public override writeValue(value: any): void {\n super.writeValue(value);\n this.typed.set(null);\n }\n\n public ngOnDestroy(): void {\n clearTimeout(this.timer);\n this.anchored.close();\n }\n\n protected labelOf(item: any): string {\n return optionLabel(item, { optionLabel: this.field() });\n }\n\n protected onInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.typed.set(value);\n this.commit(value === '' ? null : value);\n this.scheduleSearch(value, event);\n }\n\n protected onBlur(event: Event): void {\n if (this.forceSelection() && this.typed() !== null) {\n this.commit(null);\n this.typed.set(null);\n }\n this.closePanel();\n this.touch();\n this.blurred.emit(event);\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const list = this.suggestions() ?? [];\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (!this.open()) this.triggerSearch(this.text(), event);\n else this.activeIndex.set(Math.min(list.length - 1, this.activeIndex() + 1));\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.activeIndex.set(Math.max(0, this.activeIndex() - 1));\n break;\n case 'Enter':\n if (this.open() && list[this.activeIndex()] !== undefined) {\n event.preventDefault();\n this.select(list[this.activeIndex()], event);\n }\n break;\n case 'Escape':\n case 'Tab':\n this.closePanel();\n break;\n default:\n break;\n }\n }\n\n protected select(item: any, event: Event): void {\n this.commit(item);\n this.typed.set(null);\n this.closePanel();\n this.selectedItem.emit({ originalEvent: event, value: item });\n this.fieldRef().nativeElement.focus();\n }\n\n protected clear(): void {\n this.commit(null);\n this.typed.set('');\n this.closePanel();\n this.cleared.emit();\n this.fieldRef().nativeElement.focus();\n }\n\n protected toggleDropdown(): void {\n if (this.open()) {\n this.closePanel();\n return;\n }\n this.fieldRef().nativeElement.focus();\n this.triggerSearch('', new Event('click'));\n }\n\n private scheduleSearch(query: string, event: Event): void {\n clearTimeout(this.timer);\n if (query.length < this.minLength()) {\n this.closePanel();\n return;\n }\n this.timer = setTimeout(() => this.triggerSearch(query, event), this.delay());\n }\n\n private triggerSearch(query: string, event: Event): void {\n this.searching = true;\n this.completeMethod.emit({ originalEvent: event, query });\n }\n\n private openPanel(): void {\n if (!this.open()) {\n this.anchored.open(this.anchorRef().nativeElement, this.panel(), { matchWidth: true, onDismiss: () => this.open.set(false) });\n this.open.set(true);\n }\n else {\n this.anchored.updatePosition();\n }\n }\n\n private closePanel(): void {\n if (!this.open()) return;\n this.anchored.close();\n this.open.set(false);\n }\n}\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-unsafe-return, max-len */\n/* eslint-disable max-len -- classes Tailwind nos templates */\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SmzValueAccessor } from '../core/value-accessor';\n\ninterface MaskSlot {\n /** Posicao do caractere dentro do texto formatado. */\n position: number;\n test: RegExp;\n}\n\ninterface ParsedMask {\n /** Caractere literal por posicao (`null` onde ha slot). */\n literals: Array<string | null>;\n slots: MaskSlot[];\n /** Quantidade de slots obrigatorios (os demais, depois de `?`, sao opcionais). */\n required: number;\n}\n\n/**\n * Campo com mascara de entrada. Substitui o `p-inputmask` do PrimeNG.\n * Na mascara: `9` = digito, `a` = letra (ou `characterPattern`), `*` = letra ou digito; demais caracteres sao literais.\n *\n * <ui-input-mask mask=\"(99) 99999-9999\" [formControl]=\"telefone\" [unmask]=\"true\" />\n */\n@Component({\n selector: 'ui-input-mask',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzInputMaskComponent), multi: true }],\n host: { class: 'flex min-w-0' },\n template: `\n <input\n #field\n [attr.type]=\"type()\"\n class=\"h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger\"\n [attr.id]=\"inputId() || null\"\n [attr.placeholder]=\"placeholder() || null\"\n [attr.maxlength]=\"parsed().literals.length\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"readonly()\"\n [value]=\"display()\"\n (focus)=\"onFocus()\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur($event)\"\n />\n `,\n})\nexport class SmzInputMaskComponent extends SmzValueAccessor<string> {\n public readonly mask = input<string | null | undefined>('');\n public readonly slotChar = input('_');\n public readonly characterPattern = input<string | null | undefined>('[A-Za-z]');\n public readonly unmask = input(false, { transform: booleanAttribute });\n public readonly autoClear = input(true, { transform: booleanAttribute });\n public readonly placeholder = input<string | null | undefined>('');\n public readonly readonly = input(false, { transform: booleanAttribute });\n public readonly inputId = input<string | null | undefined>('');\n /** Tipo do `<input>` nativo (`text`, `tel`, `password`...). */\n public readonly type = input<string>('text');\n\n public readonly inputed = output<Event>();\n public readonly blurred = output<Event>();\n public readonly completed = output<void>();\n\n private readonly field = viewChild.required<ElementRef<HTMLInputElement>>('field');\n /** Caracteres dos slots preenchidos, em ordem. */\n private readonly entered = signal<string[]>([]);\n private readonly focusedState = signal(false);\n\n protected readonly parsed = computed<ParsedMask>(() => {\n const literals: Array<string | null> = [];\n const slots: MaskSlot[] = [];\n let required = -1;\n const letters = new RegExp(`^${this.characterPattern() || '[A-Za-z]'}$`);\n\n for (const symbol of this.mask() ?? '') {\n if (symbol === '?') {\n required = slots.length;\n continue;\n }\n if (symbol === '9') slots.push({ position: literals.length, test: /^[0-9]$/ });\n else if (symbol === 'a') slots.push({ position: literals.length, test: letters });\n else if (symbol === '*') slots.push({ position: literals.length, test: /^[A-Za-z0-9]$/ });\n literals.push(symbol === '9' || symbol === 'a' || symbol === '*' ? null : symbol);\n }\n return { literals, slots, required: required < 0 ? slots.length : required };\n });\n\n protected readonly display = computed(() => {\n const { literals } = this.parsed();\n const entered = this.entered();\n if (entered.length === 0 && !this.focusedState()) return '';\n\n const required = this.parsed().required;\n let slotIndex = 0;\n let text = '';\n for (const literal of literals) {\n if (literal !== null) {\n text += literal;\n continue;\n }\n // Slots opcionais so aparecem depois de preenchidos.\n if (slotIndex >= required && slotIndex >= entered.length) break;\n text += entered[slotIndex++] ?? this.slotChar();\n }\n return text;\n });\n\n public override writeValue(value: string | null): void {\n super.writeValue(value);\n this.entered.set(this.unmask() ? this.fitToSlots(value ?? '') : this.fitToSlots(value ?? ''));\n }\n\n protected onFocus(): void {\n this.focusedState.set(true);\n // So reposiciona o cursor se o usuario nao selecionou texto (ex.: selecionar tudo para substituir).\n setTimeout(() => {\n const element = this.field().nativeElement;\n if (element.selectionStart === element.selectionEnd) this.moveCaret(this.entered().length);\n }, 0);\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (this.readonly()) return;\n\n if (event.key === 'Backspace' || event.key === 'Delete') {\n event.preventDefault();\n const element = this.field().nativeElement;\n const selectionStart = element.selectionStart ?? 0;\n const selectionEnd = element.selectionEnd ?? selectionStart;\n const slots = this.parsed().slots;\n const next = [...this.entered()];\n\n let focusSlot: number;\n if (selectionEnd > selectionStart) {\n const first = slots.findIndex((slot) => slot.position >= selectionStart);\n const last = slots.reduce((found, slot, index) => (slot.position < selectionEnd ? index : found), -1);\n if (first >= 0 && last >= first) next.splice(first, last - first + 1);\n focusSlot = Math.max(first, 0);\n }\n else if (event.key === 'Backspace') {\n const slotIndex = slots.reduce((found, slot, index) => (slot.position < selectionStart ? index : found), -1);\n if (slotIndex >= 0 && slotIndex < next.length) next.splice(slotIndex, 1);\n focusSlot = Math.max(slotIndex, 0);\n }\n else {\n const slotIndex = slots.findIndex((slot) => slot.position >= selectionStart);\n if (slotIndex >= 0 && slotIndex < next.length) next.splice(slotIndex, 1);\n focusSlot = Math.max(slotIndex, 0);\n }\n\n this.apply(next);\n setTimeout(() => this.moveCaret(focusSlot));\n }\n }\n\n protected onInput(event: Event): void {\n const element = event.target as HTMLInputElement;\n const entered = this.fitToSlots(element.value);\n this.apply(entered);\n const caretSlot = entered.length;\n element.value = this.display();\n this.moveCaret(caretSlot);\n this.inputed.emit(event);\n }\n\n protected onBlur(event: Event): void {\n this.focusedState.set(false);\n if (this.entered().length < this.parsed().required && this.autoClear()) {\n this.entered.set([]);\n this.commit(null);\n }\n this.field().nativeElement.value = this.display();\n this.touch();\n this.blurred.emit(event);\n }\n\n /** Redistribui os caracteres de `text` nos slots, descartando o que nao cabe ou nao combina. */\n private fitToSlots(text: string): string[] {\n const { literals, slots } = this.parsed();\n const result: string[] = [];\n // Texto ja formatado: pula os literais da mascara na mesma posicao.\n const looksFormatted = text.length === literals.length && literals.every((literal, index) => literal === null || text[index] === literal);\n\n for (let index = 0; index < text.length && result.length < slots.length; index++) {\n const char = text[index];\n if (looksFormatted && literals[index] !== null) continue;\n if (char === this.slotChar()) continue;\n const slot = slots[result.length];\n if (slot.test.test(char)) result.push(char);\n }\n return result;\n }\n\n private apply(entered: string[]): void {\n this.entered.set(entered);\n if (entered.length === 0) {\n this.commit(null);\n return;\n }\n\n const complete = entered.length >= this.parsed().required;\n this.commit(this.unmask() ? entered.join('') : this.display());\n if (complete) this.completed.emit();\n }\n\n private moveCaret(slotIndex: number): void {\n const { literals, slots } = this.parsed();\n const position = slotIndex >= slots.length ? literals.length : slots[slotIndex].position;\n this.field().nativeElement.setSelectionRange(position, position);\n }\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\nimport { ChangeDetectionStrategy, Component, booleanAttribute, computed, forwardRef, inject, input, signal } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SmzLocaleService } from '../core/locale.service';\nimport { SmzValueAccessor } from '../core/value-accessor';\n\nconst DEFAULT_MEDIUM = '^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{6,})';\nconst DEFAULT_STRONG = '^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.{8,})';\n\n/**\n * Campo de senha com alternancia de visibilidade e medidor de forca. Substitui o `p-password` do PrimeNG.\n *\n * <ui-password [formControl]=\"senha\" [toggleMask]=\"true\" [feedback]=\"true\" />\n */\n@Component({\n selector: 'ui-password',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzPasswordComponent), multi: true }],\n host: { class: 'block min-w-0' },\n template: `\n <div class=\"relative flex w-full items-stretch\">\n <input\n [type]=\"visible() ? 'text' : 'password'\"\n autocomplete=\"off\"\n class=\"h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger\"\n [class.pr-10]=\"toggleMask()\"\n [attr.id]=\"inputId() || null\"\n [attr.placeholder]=\"placeholder() || null\"\n [disabled]=\"isDisabled()\"\n [value]=\"current() ?? ''\"\n (input)=\"onInput($event)\"\n (blur)=\"touch()\"\n />\n @if (toggleMask()) {\n <button\n type=\"button\"\n class=\"absolute inset-y-0 right-0 inline-flex w-10 cursor-pointer items-center justify-center rounded-r-control text-ui-fg-muted hover:text-ui-fg disabled:cursor-not-allowed disabled:opacity-50\"\n [attr.aria-label]=\"visible() ? 'Ocultar senha' : 'Mostrar senha'\"\n [disabled]=\"isDisabled()\"\n (click)=\"visible.set(!visible())\"\n >\n @if (visible()) {\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M1.5 8s2.5-4.5 6.5-4.5S14.5 8 14.5 8 12 12.5 8 12.5 1.5 8 1.5 8z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linejoin=\"round\" />\n <circle cx=\"8\" cy=\"8\" r=\"2\" stroke=\"currentColor\" stroke-width=\"1.5\" />\n </svg>\n }\n @else {\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M2 2l12 12M6.3 4.2A6.6 6.6 0 0 1 8 3.5c4 0 6.5 4.5 6.5 4.5a11 11 0 0 1-2 2.5M9.7 11.8A6.6 6.6 0 0 1 8 12.5C4 12.5 1.5 8 1.5 8a11 11 0 0 1 2.3-2.7\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n }\n </button>\n }\n </div>\n @if (feedback() && !isDisabled()) {\n <div class=\"mt-2\" aria-live=\"polite\">\n <div class=\"h-1 w-full overflow-hidden rounded-full bg-ui-surface-3\">\n <div class=\"h-full rounded-full transition-all duration-ui\" [class]=\"meterClass()\" [style.width.%]=\"meterWidth()\"></div>\n </div>\n <div class=\"mt-1 text-ui-xs text-ui-fg-muted\">{{ meterLabel() }}</div>\n </div>\n }\n `,\n})\nexport class SmzPasswordComponent extends SmzValueAccessor<string> {\n public readonly toggleMask = input(false, { transform: booleanAttribute });\n public readonly feedback = input(true, { transform: booleanAttribute });\n public readonly promptLabel = input<string | null | undefined>(undefined);\n public readonly weakLabel = input<string | null | undefined>(undefined);\n public readonly mediumLabel = input<string | null | undefined>(undefined);\n public readonly strongLabel = input<string | null | undefined>(undefined);\n public readonly mediumRegex = input<string | null | undefined>(DEFAULT_MEDIUM);\n public readonly strongRegex = input<string | null | undefined>(DEFAULT_STRONG);\n public readonly placeholder = input<string | null | undefined>('');\n public readonly inputId = input<string | null | undefined>('');\n\n private readonly locale = inject(SmzLocaleService);\n protected readonly visible = signal(false);\n\n private readonly strength = computed<0 | 1 | 2 | 3>(() => {\n const value = this.current() ?? '';\n if (!value) return 0;\n if (new RegExp(this.strongRegex() || DEFAULT_STRONG).test(value)) return 3;\n if (new RegExp(this.mediumRegex() || DEFAULT_MEDIUM).test(value)) return 2;\n return 1;\n });\n\n protected readonly meterWidth = computed(() => [0, 33, 66, 100][this.strength()]);\n protected readonly meterClass = computed(() => ['bg-transparent', 'bg-ui-danger', 'bg-ui-warning', 'bg-ui-success'][this.strength()]);\n protected readonly meterLabel = computed(() => {\n const t = this.locale.translation();\n return [\n this.promptLabel() || t.passwordPrompt,\n this.weakLabel() || t.weak,\n this.mediumLabel() || t.medium,\n this.strongLabel() || t.strong,\n ][this.strength()];\n });\n\n protected onInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.commit(value === '' ? null : value);\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, forwardRef, input, output } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SmzValueAccessor } from '../core/value-accessor';\n\n/**\n * Seletor de cor (amostra com o seletor nativo do navegador). Substitui o `p-colorpicker` do PrimeNG.\n * O valor e a cor em hexadecimal **sem** o `#` (mesmo formato do PrimeNG), por exemplo `ff0000`.\n *\n * <ui-color-picker [formControl]=\"cor\" />\n */\n@Component({\n selector: 'ui-color-picker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzColorPickerComponent), multi: true }],\n host: { class: 'inline-flex' },\n template: `\n <input\n type=\"color\"\n class=\"h-control w-12 cursor-pointer rounded-control border border-ui-line-strong bg-ui-surface-1 p-1 focus:outline-none focus:ring-2 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50\"\n [attr.id]=\"inputId() || null\"\n [disabled]=\"isDisabled()\"\n [value]=\"hex()\"\n (input)=\"onInput($event)\"\n (blur)=\"touch()\"\n />\n `,\n})\nexport class SmzColorPickerComponent extends SmzValueAccessor<string> {\n public readonly inputId = input<string | null | undefined>('');\n /** Aceito por compatibilidade com o `p-colorpicker`; sem efeito. */\n public readonly appendTo = input<unknown>(undefined);\n /** Emitido quando o usuario escolhe uma cor (equivale ao `onChange` do `p-colorpicker`). */\n public readonly changed = output<{ originalEvent: Event; value: string }>();\n\n protected readonly hex = computed(() => {\n const raw = (this.current() ?? '').replace('#', '');\n return /^[0-9a-fA-F]{6}$/.test(raw) ? `#${raw.toLowerCase()}` : '#000000';\n });\n\n protected onInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value.replace('#', '');\n this.commit(value);\n this.changed.emit({ originalEvent: event, value });\n }\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, booleanAttribute, computed, contentChildren, effect, inject, input, model, signal } from '@angular/core';\nimport { smzFindTemplate, SmzTemplateDirective } from '../core/template.directive';\n\nexport type SmzTabValue = string | number;\n\n/**\n * Abas. Substituem o `p-tabs` / `p-tablist` / `p-tab` / `p-tabpanels` / `p-tabpanel` do PrimeNG.\n *\n * <ui-tabs [(value)]=\"aba\">\n * <ui-tab-list><ui-tab [value]=\"0\">Um</ui-tab><ui-tab [value]=\"1\">Dois</ui-tab></ui-tab-list>\n * <ui-tab-panels><ui-tab-panel [value]=\"0\">...</ui-tab-panel><ui-tab-panel [value]=\"1\">...</ui-tab-panel></ui-tab-panels>\n * </ui-tabs>\n *\n * Com `lazy`, o conteudo so e criado quando o painel e aberto pela primeira vez (use `<ng-template smzTemplate=\"content\">`).\n */\n@Component({\n selector: 'ui-tabs',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'block font-ui text-ui-fg' },\n template: '<ng-content />',\n})\nexport class SmzTabsComponent {\n public readonly value = model<SmzTabValue | null>(0);\n public readonly lazy = input(false, { transform: booleanAttribute });\n /** Aceito por compatibilidade com o `p-tabs`; sem efeito. */\n public readonly scrollable = input(false, { transform: booleanAttribute });\n\n public select(value: SmzTabValue): void {\n if (this.value() !== value) this.value.set(value);\n }\n}\n\n@Component({\n selector: 'ui-tab-list',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { role: 'tablist', class: 'flex flex-wrap border-b border-ui-line' },\n template: '<ng-content />',\n})\nexport class SmzTabListComponent {\n}\n\n@Component({\n selector: 'ui-tab',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'tab',\n '[attr.aria-selected]': 'active()',\n '[attr.aria-disabled]': 'disabled() || null',\n '[attr.tabindex]': 'disabled() ? -1 : 0',\n '[class]': 'classes()',\n '(click)': 'activate()',\n '(keydown.enter)': 'activate()',\n '(keydown.space)': 'activate($event)',\n },\n template: '<ng-content />',\n})\nexport class SmzTabComponent {\n public readonly value = input.required<SmzTabValue>();\n public readonly disabled = input(false, { transform: booleanAttribute });\n\n private readonly tabs = inject(SmzTabsComponent);\n protected readonly active = computed(() => this.tabs.value() === this.value());\n protected readonly classes = computed(\n () =>\n 'inline-flex -mb-px items-center gap-2 border-b-2 px-4 py-3 text-ui-md font-medium transition-colors duration-ui focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ui-focus ' +\n (this.disabled() ? 'cursor-not-allowed opacity-50 ' : 'cursor-pointer ') +\n (this.active() ? 'border-ui-primary text-ui-primary' : 'border-transparent text-ui-fg-muted hover:text-ui-fg'),\n );\n\n protected activate(event?: Event): void {\n event?.preventDefault();\n if (!this.disabled()) this.tabs.select(this.value());\n }\n}\n\n@Component({\n selector: 'ui-tab-panels',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'block pt-4' },\n template: '<ng-content />',\n})\nexport class SmzTabPanelsComponent {\n}\n\n@Component({\n selector: 'ui-tab-panel',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet],\n host: { role: 'tabpanel', '[class.hidden]': '!active()' },\n template: `\n @if (!tabs.lazy() || visited()) {\n @if (contentTemplate(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n }\n @else {\n <ng-content />\n }\n }\n `,\n})\nexport class SmzTabPanelComponent {\n public readonly value = input.required<SmzTabValue>();\n\n protected readonly tabs = inject(SmzTabsComponent);\n protected readonly active = computed(() => this.tabs.value() === this.value());\n protected readonly visited = signal(false);\n private readonly templates = contentChildren(SmzTemplateDirective);\n protected readonly contentTemplate = computed(() => smzFindTemplate(this.templates(), 'content'));\n\n constructor() {\n // Lazy: o painel passa a existir na primeira vez que fica ativo e permanece criado depois.\n effect(() => {\n if (this.active()) this.visited.set(true);\n });\n }\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\nimport { ChangeDetectionStrategy, Component, booleanAttribute, computed, inject, input, model, output } from '@angular/core';\n\nexport type SmzAccordionValue = string | number;\n\n/**\n * Acordeao. Substitui o `p-accordion` / `p-accordion-panel` / `p-accordion-header` / `p-accordion-content` do PrimeNG.\n *\n * <ui-accordion [multiple]=\"true\">\n * <ui-accordion-panel [value]=\"1\"><ui-accordion-header>Titulo</ui-accordion-header><ui-accordion-content>...</ui-accordion-content></ui-accordion-panel>\n * </ui-accordion>\n */\n@Component({\n selector: 'ui-accordion',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'block overflow-hidden rounded-control border border-ui-line font-ui text-ui-fg' },\n template: '<ng-content />',\n})\nexport class SmzAccordionComponent {\n public readonly value = model<SmzAccordionValue | SmzAccordionValue[] | null>(null);\n public readonly multiple = input(false, { transform: booleanAttribute });\n /** Um painel foi aberto (equivale ao `onOpen` do `p-accordion`). */\n public readonly opened = output<{ value: SmzAccordionValue }>();\n /** Um painel foi fechado (equivale ao `onClose`). */\n public readonly closed = output<{ value: SmzAccordionValue }>();\n /** Aceito por compatibilidade com o `p-accordion`; sem efeito. */\n public readonly transitionOptions = input<string | null | undefined>(null);\n\n public isOpen(value: SmzAccordionValue): boolean {\n const current = this.value();\n return Array.isArray(current) ? current.includes(value) : current === value;\n }\n\n public toggle(value: SmzAccordionValue): void {\n const open = this.isOpen(value);\n (open ? this.closed : this.opened).emit({ value });\n if (this.multiple()) {\n const current = Array.isArray(this.value()) ? (this.value() as SmzAccordionValue[]) : this.value() === null ? [] : [this.value() as SmzAccordionValue];\n this.value.set(open ? current.filter((entry) => entry !== value) : [...current, value]);\n }\n else {\n this.value.set(open ? null : value);\n }\n }\n}\n\n@Component({\n selector: 'ui-accordion-panel',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'block border-b border-ui-line last:border-b-0' },\n template: '<ng-content />',\n})\nexport class SmzAccordionPanelComponent {\n public readonly value = input.required<SmzAccordionValue>();\n\n private readonly accordion = inject(SmzAccordionComponent);\n public readonly open = computed(() => this.accordion.isOpen(this.value()));\n\n public toggle(): void {\n this.accordion.toggle(this.value());\n }\n}\n\n@Component({\n selector: 'ui-accordion-header',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'button',\n tabindex: '0',\n '[attr.aria-expanded]': 'panel.open()',\n class: 'flex w-full cursor-pointer items-center justify-between gap-2 bg-ui-surface-1 px-4 py-3 text-ui-md font-medium transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ui-focus',\n '(click)': 'panel.toggle()',\n '(keydown.enter)': 'panel.toggle()',\n '(keydown.space)': 'panel.toggle(); $event.preventDefault()',\n },\n template: `\n <span class=\"min-w-0 flex-1\"><ng-content /></span>\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4 shrink-0 text-ui-fg-muted transition-transform duration-ui\" [class.rotate-180]=\"panel.open()\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M4 6l4 4 4-4\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n `,\n})\nexport class SmzAccordionHeaderComponent {\n protected readonly panel = inject(SmzAccordionPanelComponent);\n}\n\n@Component({\n selector: 'ui-accordion-content',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { role: 'region', '[class.hidden]': '!panel.open()', class: 'block px-4 py-3' },\n template: '<ng-content />',\n})\nexport class SmzAccordionContentComponent {\n protected readonly panel = inject(SmzAccordionPanelComponent);\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment */\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, contentChildren, input } from '@angular/core';\nimport { smzFindTemplate, SmzTemplateDirective } from '../core/template.directive';\n\nexport type SmzTimelineAlign = 'left' | 'right' | 'alternate' | 'top' | 'bottom';\n\n/**\n * Linha do tempo. Substitui o `p-timeline` do PrimeNG.\n * Templates (via `smzTemplate`): `marker`, `content` e `opposite`, todos com o evento como `$implicit`.\n *\n * <ui-timeline [value]=\"eventos\" align=\"alternate\">\n * <ng-template smzTemplate=\"content\" let-event>{{ event.titulo }}</ng-template>\n * </ui-timeline>\n */\n@Component({\n selector: 'ui-timeline',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, NgTemplateOutlet],\n host: { class: 'block font-ui text-ui-fg' },\n template: `\n <div class=\"flex\" [class]=\"horizontal() ? 'flex-row' : 'flex-col'\" [ngClass]=\"styleClass()\">\n @for (event of value() ?? []; track $index; let index = $index; let last = $last) {\n <div class=\"flex min-w-0 flex-1\" [class]=\"horizontal() ? 'flex-col' : (rowReverse(index) ? 'flex-row-reverse' : 'flex-row')\">\n <div class=\"flex-1\" [class]=\"oppositeClass(index)\">\n @if (oppositeTemplate(); as opposite) {\n <ng-container [ngTemplateOutlet]=\"opposite\" [ngTemplateOutletContext]=\"{ $implicit: event, index: index }\" />\n }\n </div>\n <div class=\"flex items-center\" [class]=\"horizontal() ? 'flex-row' : 'flex-col'\">\n @if (markerTemplate(); as marker) {\n <ng-container [ngTemplateOutlet]=\"marker\" [ngTemplateOutletContext]=\"{ $implicit: event, index: index }\" />\n }\n @else {\n <span class=\"block h-4 w-4 shrink-0 rounded-full border-2 border-ui-primary bg-ui-surface-1\"></span>\n }\n @if (!last) {\n <span class=\"bg-ui-line\" [class]=\"horizontal() ? 'h-0.5 w-full min-w-8 flex-1' : 'min-h-8 w-0.5 flex-1'\"></span>\n }\n </div>\n <div class=\"flex-1 pb-4\" [class]=\"contentClass(index)\">\n @if (contentTemplate(); as content) {\n <ng-container [ngTemplateOutlet]=\"content\" [ngTemplateOutletContext]=\"{ $implicit: event, index: index }\" />\n }\n </div>\n </div>\n }\n </div>\n `,\n})\nexport class SmzUiTimelineComponent {\n public readonly value = input<readonly any[] | null | undefined>([]);\n public readonly align = input<SmzTimelineAlign | string | null | undefined>('left');\n public readonly layout = input<'vertical' | 'horizontal'>('vertical');\n public readonly styleClass = input<string | null | undefined>('');\n\n private readonly templates = contentChildren(SmzTemplateDirective);\n protected readonly markerTemplate = computed(() => smzFindTemplate(this.templates(), 'marker'));\n protected readonly contentTemplate = computed(() => smzFindTemplate(this.templates(), 'content'));\n protected readonly oppositeTemplate = computed(() => smzFindTemplate(this.templates(), 'opposite'));\n protected readonly horizontal = computed(() => this.layout() === 'horizontal' || this.align() === 'top' || this.align() === 'bottom');\n\n protected rowReverse(index: number): boolean {\n const align = this.align();\n return align === 'right' || (align === 'alternate' && index % 2 === 1);\n }\n\n protected oppositeClass(index: number): string {\n // Em `left`/`right` o lado oposto fica sem largura, como no PrimeNG, a menos que haja template de oposto.\n const align = this.align();\n if ((align === 'left' || align === 'right') && !this.oppositeTemplate()) return 'flex-[0_0_0px] p-0';\n return this.rowReverse(index) ? 'pl-4 text-left' : 'pr-4 text-right';\n }\n\n protected contentClass(index: number): string {\n return this.rowReverse(index) ? 'pr-4 text-right' : 'pl-4';\n }\n}\n","import { Directive, ElementRef, OnDestroy, booleanAttribute, inject, input } from '@angular/core';\n\n/**\n * Alterna classes de um elemento alvo ao clicar no hospedeiro (menus e paineis). Substitui o `pStyleClass` do PrimeNG.\n * O alvo vem de `smzStyleClass`: `@next`, `@prev`, `@parent`, `@grandparent` ou um seletor CSS.\n *\n * <button smzStyleClass=\"@next\" enterFromClass=\"hidden\" enterActiveClass=\"animate-scalein\" leaveToClass=\"hidden\" leaveActiveClass=\"animate-fadeout\" [hideOnOutsideClick]=\"true\"></button>\n *\n * As classes `*ActiveClass` sao removidas ao fim da animacao (evento `animationend`).\n */\n@Directive({\n selector: '[smzStyleClass]',\n host: { '(click)': 'onClick($event)' },\n})\nexport class SmzStyleClassDirective implements OnDestroy {\n public readonly selector = input<string>('', { alias: 'smzStyleClass' });\n public readonly enterFromClass = input<string>('');\n public readonly enterActiveClass = input<string>('');\n public readonly enterToClass = input<string>('');\n public readonly leaveFromClass = input<string>('');\n public readonly leaveActiveClass = input<string>('');\n public readonly leaveToClass = input<string>('');\n public readonly hideOnOutsideClick = input(false, { transform: booleanAttribute });\n public readonly toggleClass = input<string>('');\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private documentListener?: (event: MouseEvent) => void;\n\n public ngOnDestroy(): void {\n this.unbindOutsideClick();\n }\n\n protected onClick(event: Event): void {\n const target = this.resolveTarget();\n if (!target) return;\n\n if (this.toggleClass()) {\n target.classList.toggle(this.toggleClass());\n return;\n }\n\n if (target.offsetParent === null) this.enter(target);\n else this.leave(target);\n event.stopPropagation();\n }\n\n private resolveTarget(): HTMLElement | null {\n const selector = this.selector();\n const host = this.host.nativeElement;\n switch (selector) {\n case '@next': return host.nextElementSibling as HTMLElement | null;\n case '@prev': return host.previousElementSibling as HTMLElement | null;\n case '@parent': return host.parentElement;\n case '@grandparent': return host.parentElement?.parentElement ?? null;\n default: return selector ? document.querySelector<HTMLElement>(selector) : null;\n }\n }\n\n private classes(value: string): string[] {\n return value.split(/\\s+/).filter(Boolean);\n }\n\n private apply(target: HTMLElement, remove: string, add: string[]): void {\n target.classList.remove(...this.classes(remove));\n if (add.length) target.classList.add(...add);\n }\n\n private enter(target: HTMLElement): void {\n const active = this.classes(this.enterActiveClass());\n this.apply(target, this.enterFromClass(), [...active, ...this.classes(this.enterToClass())]);\n this.afterAnimation(target, active);\n if (this.hideOnOutsideClick()) this.bindOutsideClick(target);\n }\n\n private leave(target: HTMLElement): void {\n const active = this.classes(this.leaveActiveClass());\n this.apply(target, this.leaveFromClass(), active);\n this.afterAnimation(target, active, () => target.classList.add(...this.classes(this.leaveToClass())));\n this.unbindOutsideClick();\n }\n\n private afterAnimation(target: HTMLElement, active: string[], done?: () => void): void {\n const finish = (): void => {\n target.classList.remove(...active);\n done?.();\n };\n if (active.length === 0) {\n finish();\n return;\n }\n const handle = setTimeout(finish, 500);\n target.addEventListener('animationend', () => {\n clearTimeout(handle);\n finish();\n }, { once: true });\n }\n\n private bindOutsideClick(target: HTMLElement): void {\n this.unbindOutsideClick();\n this.documentListener = (event: MouseEvent): void => {\n const node = event.target as Node;\n if (this.host.nativeElement.contains(node) || target.contains(node)) return;\n if (target.offsetParent !== null) this.leave(target);\n };\n document.addEventListener('click', this.documentListener, true);\n }\n\n private unbindOutsideClick(): void {\n if (this.documentListener) document.removeEventListener('click', this.documentListener, true);\n this.documentListener = undefined;\n }\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\nimport { NgClass } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ChangeDetectionStrategy, Component, booleanAttribute, computed, input, model, output } from '@angular/core';\nimport { SmzSelectComponent } from '../select/select.component';\n\nexport interface SmzPageEvent {\n first: number;\n rows: number;\n page: number;\n pageCount: number;\n}\n\n\n/**\n * Paginador. Substitui o `p-paginator` do PrimeNG.\n * O template do relatorio aceita `{currentPage}`, `{totalPages}`, `{rows}`, `{first}`, `{last}` e `{totalRecords}`.\n *\n * <ui-paginator [first]=\"primeiro\" [rows]=\"10\" [totalRecords]=\"120\" (pageChanged)=\"mudou($event)\" />\n */\n@Component({\n selector: 'ui-paginator',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, FormsModule, SmzSelectComponent],\n host: { class: 'block' },\n template: `\n @if (visible()) {\n <nav class=\"smz-paginator flex flex-wrap items-center justify-center gap-1 py-2 font-ui text-ui-sm text-ui-fg\" aria-label=\"Paginacao\" [ngClass]=\"styleClass()\">\n @if (showCurrentPageReport()) {\n <span class=\"mr-2 text-ui-fg-muted\">{{ report() }}</span>\n }\n <button type=\"button\" class=\"inline-flex h-control-lg min-w-control-lg cursor-pointer items-center justify-center rounded-full px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent\" aria-label=\"Primeira pagina\" [disabled]=\"isFirst()\" (click)=\"goTo(0)\">\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4\" fill=\"none\" aria-hidden=\"true\"><path d=\"M8 4L4 8l4 4M12 4L8 8l4 4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg>\n </button>\n <button type=\"button\" class=\"inline-flex h-control-lg min-w-control-lg cursor-pointer items-center justify-center rounded-full px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent\" aria-label=\"Pagina anterior\" [disabled]=\"isFirst()\" (click)=\"goTo(page() - 1)\">\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4\" fill=\"none\" aria-hidden=\"true\"><path d=\"M10 4L6 8l4 4\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg>\n </button>\n @if (showPageLinks() && totalRecords() > 0) {\n @for (link of links(); track link) {\n <button\n type=\"button\"\n class=\"inline-flex h-control-lg min-w-control-lg cursor-pointer items-center justify-center rounded-full px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent\"\n [class]=\"link === page() + 1 ? 'smz-paginator-page-selected bg-ui-primary/10 font-medium text-ui-primary' : ''\"\n [attr.aria-current]=\"link === page() + 1 ? 'page' : null\"\n (click)=\"goTo(link - 1)\"\n >\n {{ link }}\n </button>\n }\n }\n <button type=\"button\" class=\"inline-flex h-control-lg min-w-control-lg cursor-pointer items-center justify-center rounded-full px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent\" aria-label=\"Proxima pagina\" [disabled]=\"isLast()\" (click)=\"goTo(page() + 1)\">\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4\" fill=\"none\" aria-hidden=\"true\"><path d=\"M6 4l4 4-4 4\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg>\n </button>\n <button type=\"button\" class=\"inline-flex h-control-lg min-w-control-lg cursor-pointer items-center justify-center rounded-full px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent\" aria-label=\"Ultima pagina\" [disabled]=\"isLast()\" (click)=\"goTo(pageCount() - 1)\">\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4\" fill=\"none\" aria-hidden=\"true\"><path d=\"M4 4l4 4-4 4M8 4l4 4-4 4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg>\n </button>\n @if (rowsPerPageOptions() && rowsPerPageOptions()!.length > 0) {\n <ui-select class=\"smz-paginator-rpp ml-2 w-24\" [options]=\"rowsPerPageOptions()\" [ngModel]=\"rows()\" (changed)=\"changeRows($event.value)\" />\n }\n </nav>\n }\n `,\n})\nexport class SmzPaginatorComponent {\n public readonly first = model(0);\n public readonly rows = model(10);\n public readonly totalRecords = input(0);\n public readonly pageLinkSize = input(5);\n public readonly rowsPerPageOptions = input<number[] | null | undefined>(null);\n public readonly showCurrentPageReport = input(false, { transform: booleanAttribute });\n public readonly currentPageReportTemplate = input<string | null | undefined>('{currentPage} / {totalPages}');\n public readonly alwaysShow = input(true, { transform: booleanAttribute });\n public readonly showPageLinks = input(true, { transform: booleanAttribute });\n public readonly styleClass = input<string | null | undefined>('');\n /** Aceitos por compatibilidade com o `p-paginator`; sem efeito. */\n public readonly dropdownAppendTo = input<unknown>(undefined);\n public readonly showFirstLastIcon = input(true, { transform: booleanAttribute });\n\n public readonly pageChanged = output<SmzPageEvent>();\n\n protected readonly pageCount = computed(() => Math.max(1, Math.ceil(this.totalRecords() / Math.max(1, this.rows()))));\n protected readonly page = computed(() => Math.floor(this.first() / Math.max(1, this.rows())));\n protected readonly isFirst = computed(() => this.page() === 0);\n protected readonly isLast = computed(() => this.page() >= this.pageCount() - 1);\n protected readonly visible = computed(() => this.alwaysShow() || this.pageCount() > 1);\n\n protected readonly links = computed(() => {\n if (this.totalRecords() <= 0) return [];\n const size = Math.min(this.pageLinkSize(), this.pageCount());\n const start = Math.max(0, Math.min(this.page() - Math.floor(size / 2), this.pageCount() - size));\n return Array.from({ length: size }, (_, index) => start + index + 1);\n });\n\n protected readonly report = computed(() => {\n const total = this.totalRecords();\n const first = total === 0 ? 0 : this.first() + 1;\n const last = Math.min(this.first() + this.rows(), total);\n return (this.currentPageReportTemplate() ?? '')\n .replace('{currentPage}', String(this.page() + 1))\n .replace('{totalPages}', String(this.pageCount()))\n .replace('{rows}', String(this.rows()))\n .replace('{first}', String(first))\n .replace('{last}', String(last))\n .replace('{totalRecords}', String(total));\n });\n\n /** Vai para a pagina (base 0) e emite `pageChanged`. */\n public goTo(page: number): void {\n const target = Math.max(0, Math.min(page, this.pageCount() - 1));\n if (target === this.page()) return;\n this.first.set(target * this.rows());\n this.pageChanged.emit({ first: this.first(), rows: this.rows(), page: target, pageCount: this.pageCount() });\n }\n\n protected changeRows(rows: number): void {\n if (!rows || rows === this.rows()) return;\n this.rows.set(rows);\n this.first.set(0);\n this.pageChanged.emit({ first: 0, rows, page: 0, pageCount: this.pageCount() });\n }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-return */\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/explicit-module-boundary-types */\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n TemplateRef,\n booleanAttribute,\n computed,\n contentChild,\n contentChildren,\n inject,\n input,\n model,\n signal,\n} from '@angular/core';\nimport { SmzObjectUtils } from '../core/object-utils';\nimport { smzFindTemplate, SmzTemplateDirective } from '../core/template.directive';\nimport { SmzPaginatorComponent } from '../paginator/paginator.component';\n\nexport type SmzDataViewLayout = 'list' | 'grid';\n\n/**\n * Colecao de itens em lista ou grade, com filtro e paginacao. Substitui o `p-dataview` do PrimeNG.\n * Templates: `header`, `list`, `grid`, `empty` e `footer`, declarados por referencia (`<ng-template let-items #list>`)\n * ou por `smzTemplate`. Os de `list` e `grid` recebem a pagina atual como `$implicit`.\n */\n@Component({\n selector: 'ui-data-view',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, NgTemplateOutlet, SmzPaginatorComponent],\n host: { class: 'block font-ui text-ui-fg' },\n template: `\n <div [ngClass]=\"styleClass()\">\n @if (headerTemplate(); as headerTpl) {\n <div class=\"mb-3\"><ng-container [ngTemplateOutlet]=\"headerTpl\" /></div>\n }\n @if (pageItems().length > 0) {\n @if (layout() === 'grid' && gridTemplate()) {\n <ng-container [ngTemplateOutlet]=\"gridTemplate()!\" [ngTemplateOutletContext]=\"{ $implicit: pageItems() }\" />\n }\n @else if (listTemplate()) {\n <ng-container [ngTemplateOutlet]=\"listTemplate()!\" [ngTemplateOutletContext]=\"{ $implicit: pageItems() }\" />\n }\n }\n @else if (emptyTemplate(); as emptyTpl) {\n <ng-container [ngTemplateOutlet]=\"emptyTpl\" />\n }\n @if (paginator()) {\n <ui-paginator [first]=\"first()\" [rows]=\"rows()\" [totalRecords]=\"filtered().length\" [alwaysShow]=\"false\" (pageChanged)=\"onPage($event.first)\" />\n }\n @if (footerTemplate(); as footerTpl) {\n <div class=\"mt-3\"><ng-container [ngTemplateOutlet]=\"footerTpl\" /></div>\n }\n </div>\n `,\n})\nexport class SmzDataViewComponent {\n public readonly value = input<readonly any[] | null | undefined>([]);\n public readonly layout = input<SmzDataViewLayout | string | null | undefined>('list');\n public readonly paginator = input(false, { transform: booleanAttribute });\n public readonly rows = input(10);\n public readonly first = model(0);\n public readonly filterBy = input<string | null | undefined>(null);\n public readonly styleClass = input<string | null | undefined>('');\n /** Aceito por compatibilidade com o `p-dataview`; o container da grade e definido no template do consumidor. */\n public readonly gridStyleClass = input<string | null | undefined>('');\n\n /** Elemento hospedeiro (compatibilidade com `DataView.el` do PrimeNG). */\n public readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n private readonly query = signal('');\n private readonly templates = contentChildren(SmzTemplateDirective);\n private readonly refHeader = contentChild<TemplateRef<unknown>>('header');\n private readonly refList = contentChild<TemplateRef<unknown>>('list');\n private readonly refGrid = contentChild<TemplateRef<unknown>>('grid');\n private readonly refEmpty = contentChild<TemplateRef<unknown>>('empty');\n private readonly refFooter = contentChild<TemplateRef<unknown>>('footer');\n\n protected readonly headerTemplate = computed(() => this.refHeader() ?? smzFindTemplate(this.templates(), 'header'));\n protected readonly listTemplate = computed(() => this.refList() ?? smzFindTemplate(this.templates(), 'list'));\n protected readonly gridTemplate = computed(() => this.refGrid() ?? smzFindTemplate(this.templates(), 'grid'));\n protected readonly emptyTemplate = computed(() => this.refEmpty() ?? smzFindTemplate(this.templates(), 'empty'));\n protected readonly footerTemplate = computed(() => this.refFooter() ?? smzFindTemplate(this.templates(), 'footer'));\n\n protected readonly filtered = computed(() => {\n const items = this.value() ?? [];\n const query = this.query().trim().toLocaleLowerCase();\n const fields = (this.filterBy() ?? '').split(',').map((field) => field.trim()).filter(Boolean);\n if (!query || fields.length === 0) return items;\n return items.filter((item) => fields.some((field) => String(SmzObjectUtils.resolveFieldData(item, field) ?? '').toLocaleLowerCase().includes(query)));\n });\n\n protected readonly pageItems = computed(() => {\n const items = this.filtered();\n return this.paginator() ? items.slice(this.first(), this.first() + this.rows()) : items;\n });\n\n /** Filtra os itens por texto nos campos de `filterBy` e volta para a primeira pagina. */\n public filter(value: string): void {\n this.query.set(value ?? '');\n this.first.set(0);\n }\n\n protected onPage(first: number): void {\n this.first.set(first);\n }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-return */\n/* eslint-disable max-len -- classes Tailwind nos templates */\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/explicit-module-boundary-types */\nimport { CdkDrag, CdkDropList, CdkDropListGroup, CdkDragDrop } from '@angular/cdk/drag-drop';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, booleanAttribute, computed, contentChildren, input, output, signal } from '@angular/core';\nimport { SmzObjectUtils } from '../core/object-utils';\nimport { smzFindTemplate, SmzTemplateDirective } from '../core/template.directive';\n\nexport interface SmzPickListMoveEvent {\n items: any[];\n}\n\ntype Side = 'source' | 'target';\n\n/**\n * Duas listas de transferencia de itens. Substitui o `p-picklist` do PrimeNG.\n * `source` e `target` sao arrays do consumidor: o componente os altera in-place e emite o que foi movido.\n * Template `item` (via `smzTemplate`) recebe o item como `$implicit`.\n */\n@Component({\n selector: 'ui-pick-list',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CdkDropListGroup, CdkDropList, CdkDrag, NgTemplateOutlet],\n host: { class: 'block font-ui text-ui-md text-ui-fg' },\n template: `\n <div class=\"flex flex-wrap items-stretch gap-3\" cdkDropListGroup [class]=\"responsive() ? 'flex-col md:flex-row' : 'flex-row'\">\n <div class=\"flex min-w-0 flex-1 flex-col rounded-control border border-ui-line bg-ui-surface-1\">\n <div class=\"border-b border-ui-line bg-ui-surface-3 px-3 py-2 font-medium\">{{ sourceHeader() }}</div>\n <div class=\"border-b border-ui-line p-2\">\n <input class=\"h-control-sm w-full rounded-control border border-ui-line-strong bg-ui-surface-1 px-control-x-sm text-ui-sm focus:outline-none focus:ring-2 focus:ring-ui-focus\" type=\"text\" [placeholder]=\"sourceFilterPlaceholder() ?? ''\" (input)=\"sourceQuery.set($any($event.target).value)\" />\n </div>\n <ul class=\"min-h-40 flex-1 overflow-auto p-1\" cdkDropList [cdkDropListData]=\"sourceView()\" [cdkDropListDisabled]=\"!dragdrop()\" (cdkDropListDropped)=\"dropped($event, 'source')\" [style]=\"listStyle()\" role=\"listbox\" aria-multiselectable=\"true\">\n @for (item of sourceView(); track $index) {\n <li cdkDrag [cdkDragData]=\"item\" role=\"option\" class=\"cursor-pointer rounded-control px-3 py-2\" [class]=\"rowClass('source', item)\" [attr.aria-selected]=\"isSelected('source', item)\" (click)=\"toggle('source', item)\" (dblclick)=\"moveOne('source', item)\">\n @if (itemTemplate(); as tpl) { <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" /> } @else { {{ label(item) }} }\n </li>\n }\n </ul>\n </div>\n\n <div class=\"flex items-center justify-center gap-2\" [class]=\"responsive() ? 'flex-row md:flex-col' : 'flex-col'\">\n <button type=\"button\" class=\"h-8 w-10 cursor-pointer rounded-control border border-ui-line-strong text-ui-fg hover:bg-ui-surface-3 disabled:cursor-not-allowed disabled:opacity-40\" aria-label=\"Mover selecionados para o destino\" [disabled]=\"selectedSource().length === 0\" (click)=\"moveSelected('source')\">&rsaquo;</button>\n <button type=\"button\" class=\"h-8 w-10 cursor-pointer rounded-control border border-ui-line-strong text-ui-fg hover:bg-ui-surface-3 disabled:cursor-not-allowed disabled:opacity-40\" aria-label=\"Mover todos para o destino\" [disabled]=\"source().length === 0\" (click)=\"moveAll('source')\">&raquo;</button>\n <button type=\"button\" class=\"h-8 w-10 cursor-pointer rounded-control border border-ui-line-strong text-ui-fg hover:bg-ui-surface-3 disabled:cursor-not-allowed disabled:opacity-40\" aria-label=\"Mover selecionados para a origem\" [disabled]=\"selectedTarget().length === 0\" (click)=\"moveSelected('target')\">&lsaquo;</button>\n <button type=\"button\" class=\"h-8 w-10 cursor-pointer rounded-control border border-ui-line-strong text-ui-fg hover:bg-ui-surface-3 disabled:cursor-not-allowed disabled:opacity-40\" aria-label=\"Mover todos para a origem\" [disabled]=\"target().length === 0\" (click)=\"moveAll('target')\">&laquo;</button>\n </div>\n\n <div class=\"flex min-w-0 flex-1 flex-col rounded-control border border-ui-line bg-ui-surface-1\">\n <div class=\"border-b border-ui-line bg-ui-surface-3 px-3 py-2 font-medium\">{{ targetHeader() }}</div>\n <div class=\"border-b border-ui-line p-2\">\n <input class=\"h-control-sm w-full rounded-control border border-ui-line-strong bg-ui-surface-1 px-control-x-sm text-ui-sm focus:outline-none focus:ring-2 focus:ring-ui-focus\" type=\"text\" [placeholder]=\"targetFilterPlaceholder() ?? ''\" (input)=\"targetQuery.set($any($event.target).value)\" />\n </div>\n <ul class=\"min-h-40 flex-1 overflow-auto p-1\" cdkDropList [cdkDropListData]=\"targetView()\" [cdkDropListDisabled]=\"!dragdrop()\" (cdkDropListDropped)=\"dropped($event, 'target')\" [style]=\"listStyle()\" role=\"listbox\" aria-multiselectable=\"true\">\n @for (item of targetView(); track $index) {\n <li cdkDrag [cdkDragData]=\"item\" role=\"option\" class=\"cursor-pointer rounded-control px-3 py-2\" [class]=\"rowClass('target', item)\" [attr.aria-selected]=\"isSelected('target', item)\" (click)=\"toggle('target', item)\" (dblclick)=\"moveOne('target', item)\">\n @if (itemTemplate(); as tpl) { <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" /> } @else { {{ label(item) }} }\n </li>\n }\n </ul>\n </div>\n </div>\n `,\n})\nexport class SmzPickListComponent {\n public readonly source = input<any[]>([]);\n public readonly target = input<any[]>([]);\n public readonly sourceHeader = input<string | null | undefined>('');\n public readonly targetHeader = input<string | null | undefined>('');\n public readonly sourceFilterPlaceholder = input<string | null | undefined>('');\n public readonly targetFilterPlaceholder = input<string | null | undefined>('');\n public readonly filterBy = input<string | null | undefined>(null);\n public readonly dragdrop = input(false, { transform: booleanAttribute });\n public readonly responsive = input(false, { transform: booleanAttribute });\n public readonly listStyle = input<Record<string, string | number | null> | null | undefined>(null);\n /** Aceitos por compatibilidade com o `p-picklist`; sem efeito (nao ha botoes de reordenacao). */\n public readonly showSourceControls = input(true, { transform: booleanAttribute });\n public readonly showTargetControls = input(true, { transform: booleanAttribute });\n\n public readonly movedToTarget = output<SmzPickListMoveEvent>();\n public readonly movedToSource = output<SmzPickListMoveEvent>();\n public readonly movedAllToTarget = output<SmzPickListMoveEvent>();\n public readonly movedAllToSource = output<SmzPickListMoveEvent>();\n\n protected readonly sourceQuery = signal('');\n protected readonly targetQuery = signal('');\n /** Incrementado a cada alteracao in-place dos arrays do consumidor. */\n private readonly tick = signal(0);\n private readonly selection = signal<{ source: any[]; target: any[] }>({ source: [], target: [] });\n\n private readonly templates = contentChildren(SmzTemplateDirective);\n protected readonly itemTemplate = computed(() => smzFindTemplate(this.templates(), 'item'));\n protected readonly selectedSource = computed(() => this.selection().source);\n protected readonly selectedTarget = computed(() => this.selection().target);\n\n protected readonly sourceView = computed(() => (this.tick(), this.filtered(this.source(), this.sourceQuery())));\n protected readonly targetView = computed(() => (this.tick(), this.filtered(this.target(), this.targetQuery())));\n\n protected label(item: any): string {\n const field = this.filterBy();\n const value = field ? SmzObjectUtils.resolveFieldData(item, field) : item;\n return value === null || value === undefined ? '' : String(value);\n }\n\n protected isSelected(side: Side, item: any): boolean {\n return this.selection()[side].includes(item);\n }\n\n protected rowClass(side: Side, item: any): string {\n return this.isSelected(side, item) ? 'bg-ui-primary/10 text-ui-primary' : 'hover:bg-ui-surface-3';\n }\n\n protected toggle(side: Side, item: any): void {\n const current = this.selection()[side];\n const next = current.includes(item) ? current.filter((entry) => entry !== item) : [...current, item];\n this.selection.update((state) => ({ ...state, [side]: next }));\n }\n\n protected moveOne(side: Side, item: any): void {\n this.transfer(side, [item], false);\n }\n\n protected moveSelected(side: Side): void {\n this.transfer(side, [...this.selection()[side]], false);\n }\n\n protected moveAll(side: Side): void {\n this.transfer(side, [...(side === 'source' ? this.source() : this.target())], true);\n }\n\n protected dropped(event: CdkDragDrop<any[]>, side: Side): void {\n const from: Side = event.previousContainer === event.container ? side : side === 'source' ? 'target' : 'source';\n if (event.previousContainer === event.container) return;\n this.transfer(from, [event.item.data], false);\n }\n\n private transfer(from: Side, items: any[], all: boolean): void {\n if (items.length === 0) return;\n const origin = from === 'source' ? this.source() : this.target();\n const destination = from === 'source' ? this.target() : this.source();\n\n for (const item of items) {\n const index = origin.indexOf(item);\n if (index >= 0) origin.splice(index, 1);\n destination.push(item);\n }\n\n this.selection.update((state) => ({ ...state, [from]: [] }));\n this.tick.update((value) => value + 1);\n\n const payload = { items };\n if (from === 'source') (all ? this.movedAllToTarget : this.movedToTarget).emit(payload);\n else (all ? this.movedAllToSource : this.movedToSource).emit(payload);\n }\n\n private filtered(items: any[], query: string): any[] {\n const text = query.trim().toLocaleLowerCase();\n if (!text) return [...items];\n return items.filter((item) => this.label(item).toLocaleLowerCase().includes(text));\n }\n}\n","/* eslint-disable eqeqeq, max-len -- semantica de comparacao frouxa herdada do filtro original (ex.: 1 == \"1\") */\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-argument, @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/typedef */\nimport { Injectable } from '@angular/core';\nimport { SmzObjectUtils } from './object-utils';\n\nexport type SmzFilterFunction = (value: any, filter: any, filterLocale?: string) => boolean;\n\nconst isEmptyFilter = (filter: any): boolean => filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '');\nconst normalize = (value: any, locale?: string): string => SmzObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(locale);\n\n/**\n * Funcoes de filtro por modo (`contains`, `equals`, `dateIs`...) usadas pela tabela. Substitui o `FilterService` do PrimeNG.\n * Modos proprios podem ser adicionados com `register`.\n */\n@Injectable({ providedIn: 'root' })\nexport class SmzFilterService {\n public filters: Record<string, SmzFilterFunction> = {\n startsWith: (value, filter, locale) => {\n if (isEmptyFilter(filter)) return true;\n if (value === undefined || value === null) return false;\n return normalize(value, locale).slice(0, normalize(filter, locale).length) === normalize(filter, locale);\n },\n contains: (value, filter, locale) => {\n if (isEmptyFilter(filter)) return true;\n if (value === undefined || value === null) return false;\n return normalize(value, locale).indexOf(normalize(filter, locale)) !== -1;\n },\n notContains: (value, filter, locale) => {\n if (isEmptyFilter(filter)) return true;\n if (value === undefined || value === null) return true;\n return normalize(value, locale).indexOf(normalize(filter, locale)) === -1;\n },\n endsWith: (value, filter, locale) => {\n if (isEmptyFilter(filter)) return true;\n if (value === undefined || value === null) return false;\n const filterValue = normalize(filter, locale);\n const stringValue = normalize(value, locale);\n return stringValue.indexOf(filterValue, stringValue.length - filterValue.length) !== -1;\n },\n equals: (value, filter, locale) => {\n if (isEmptyFilter(filter)) return true;\n if (value === undefined || value === null) return false;\n if (value.getTime && filter.getTime) return value.getTime() === filter.getTime();\n if (value == filter) return true;\n return normalize(value, locale) == normalize(filter, locale);\n },\n notEquals: (value, filter, locale) => {\n if (isEmptyFilter(filter)) return false;\n if (value === undefined || value === null) return true;\n if (value.getTime && filter.getTime) return value.getTime() !== filter.getTime();\n if (value == filter) return false;\n return normalize(value, locale) != normalize(filter, locale);\n },\n in: (value, filter) => {\n if (filter === undefined || filter === null || filter.length === 0) return true;\n for (const entry of filter) {\n if (SmzObjectUtils.equals(value, entry)) return true;\n }\n return false;\n },\n between: (value, filter) => {\n if (filter == null || filter[0] == null || filter[1] == null) return true;\n if (value === undefined || value === null) return false;\n if (value.getTime) return filter[0].getTime() <= value.getTime() && value.getTime() <= filter[1].getTime();\n return filter[0] <= value && value <= filter[1];\n },\n lt: (value, filter) => {\n if (filter === undefined || filter === null) return true;\n if (value === undefined || value === null) return false;\n if (value.getTime && filter.getTime) return value.getTime() < filter.getTime();\n return value < filter;\n },\n lte: (value, filter) => {\n if (filter === undefined || filter === null) return true;\n if (value === undefined || value === null) return false;\n if (value.getTime && filter.getTime) return value.getTime() <= filter.getTime();\n return value <= filter;\n },\n gt: (value, filter) => {\n if (filter === undefined || filter === null) return true;\n if (value === undefined || value === null) return false;\n if (value.getTime && filter.getTime) return value.getTime() > filter.getTime();\n return value > filter;\n },\n gte: (value, filter) => {\n if (filter === undefined || filter === null) return true;\n if (value === undefined || value === null) return false;\n if (value.getTime && filter.getTime) return value.getTime() >= filter.getTime();\n return value >= filter;\n },\n is: (value, filter, locale) => this.filters['equals'](value, filter, locale),\n isNot: (value, filter, locale) => this.filters['notEquals'](value, filter, locale),\n before: (value, filter) => this.filters['lt'](value, filter),\n after: (value, filter) => this.filters['gt'](value, filter),\n dateIs: (value, filter) => {\n if (filter === undefined || filter === null) return true;\n if (value === undefined || value === null) return false;\n return value.toDateString() === filter.toDateString();\n },\n dateIsNot: (value, filter) => {\n if (filter === undefined || filter === null) return true;\n if (value === undefined || value === null) return false;\n return value.toDateString() !== filter.toDateString();\n },\n dateBefore: (value, filter) => {\n if (filter === undefined || filter === null) return true;\n if (value === undefined || value === null) return false;\n return value.getTime() < filter.getTime();\n },\n dateAfter: (value, filter) => {\n if (filter === undefined || filter === null) return true;\n if (value === undefined || value === null) return false;\n return value.getTime() > filter.getTime();\n },\n };\n\n /** Filtra `data` mantendo os itens em que algum dos `fields` satisfaz o modo. */\n public filter(data: any[], fields: any[], value: any, matchMode: string, locale?: string): any[] {\n const result: any[] = [];\n if (!data) return result;\n\n for (const item of data) {\n for (const field of fields) {\n const fieldValue = SmzObjectUtils.resolveFieldData(item, field);\n if (this.filters[matchMode](fieldValue, value, locale)) {\n result.push(item);\n break;\n }\n }\n }\n return result;\n }\n\n /** Registra (ou sobrescreve) um modo de filtro. */\n public register(rule: string, fn: SmzFilterFunction): void {\n this.filters[rule] = fn;\n }\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-return, @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/typedef, no-underscore-dangle */\nimport { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n booleanAttribute,\n computed,\n contentChildren,\n inject,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { ElementRef } from '@angular/core';\nimport { smzFindTemplate, SmzTemplateDirective } from '../core/template.directive';\nimport { SmzMenuListComponent } from '../menu/menu.component';\nimport { SmzUiTreeNode } from '../types/tree-node';\n\nexport type SmzTreeSelectionMode = 'single' | 'multiple' | 'checkbox' | null;\n\nexport interface SmzTreeNodeEvent {\n originalEvent: Event;\n node: SmzUiTreeNode;\n}\n\nexport interface SmzTreeDropEvent {\n originalEvent: Event;\n dragNode: SmzUiTreeNode;\n dropNode: SmzUiTreeNode | null;\n /** Posicao (base 0) de `dropNode` na sua lista; `undefined` ao soltar fora de qualquer no. */\n index?: number;\n /** Com `validateDrop`, o consumidor chama `accept()` para efetivar a movimentacao. */\n accept?: () => void;\n}\n\ninterface TreeRow {\n node: SmzUiTreeNode;\n level: number;\n siblings: SmzUiTreeNode[];\n index: number;\n parent: SmzUiTreeNode | null;\n}\n\ntype DropPosition = -1 | 0 | 1;\n\n/**\n * Arvore de nos com selecao, expansao, filtro e arrastar e soltar. Substitui o `p-tree` do PrimeNG.\n * Templates por tipo de no: `<ng-template smzTemplate=\"tipo\" let-node>` (o tipo e `node.type`; `default` vale para os demais).\n * Tambem aceita `header`, `footer` e `empty`.\n *\n * <ui-tree [value]=\"nos\" selectionMode=\"single\" [(selection)]=\"selecionado\" />\n */\n@Component({\n selector: 'ui-tree',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, NgStyle, NgTemplateOutlet],\n host: { class: 'relative block font-ui text-ui-md text-ui-fg' },\n template: `\n <div class=\"relative rounded-control border border-ui-line bg-ui-surface-1 p-2\" [class]=\"scrollHeight() === 'flex' ? 'flex h-full flex-col' : ''\" [ngClass]=\"styleClass()\" [ngStyle]=\"style()\">\n @if (loading()) {\n <div class=\"absolute inset-0 z-10 flex items-center justify-center rounded-control bg-ui-surface-1/70\" aria-hidden=\"true\">\n <i [class]=\"loadingIcon() + ' animate-spin text-ui-xl'\"></i>\n </div>\n }\n @if (headerTemplate(); as headerTpl) {\n <div class=\"mb-2\"><ng-container [ngTemplateOutlet]=\"headerTpl\" /></div>\n }\n @if (filter()) {\n <div class=\"mb-2\">\n <input type=\"text\" class=\"h-control-sm w-full rounded-control border border-ui-line-strong bg-ui-surface-1 px-control-x-sm text-ui-sm focus:outline-none focus:ring-2 focus:ring-ui-focus\" [placeholder]=\"filterPlaceholder() ?? ''\" (input)=\"_filter($any($event.target).value)\" />\n </div>\n }\n <ul role=\"tree\" class=\"min-h-0 flex-1 overflow-auto\" [style.max-height]=\"scrollHeight() && scrollHeight() !== 'flex' ? scrollHeight() : null\" (dragover)=\"onRootDragOver($event)\" (drop)=\"onRootDrop($event)\">\n @for (row of rows(); track row.node) {\n <li\n role=\"treeitem\"\n class=\"list-none\"\n [attr.aria-level]=\"row.level + 1\"\n [attr.aria-expanded]=\"isLeaf(row.node) ? null : !!row.node.expanded\"\n [attr.aria-selected]=\"selectionMode() ? isSelected(row.node) : null\"\n >\n <div\n class=\"group relative flex items-center gap-1 rounded-control py-1 pr-2 outline-none transition-colors duration-ui focus-visible:ring-2 focus-visible:ring-ui-focus\"\n [class]=\"rowClasses(row)\"\n [style.padding-left.rem]=\"0.25 + row.level * 1.25\"\n tabindex=\"0\"\n [attr.draggable]=\"isDraggable(row.node) ? 'true' : null\"\n (click)=\"onNodeClick($event, row.node)\"\n (dblclick)=\"nodeDblClick.emit({ originalEvent: $event, node: row.node })\"\n (contextmenu)=\"onContextMenu($event, row.node)\"\n (keydown)=\"onKeydown($event, row)\"\n (dragstart)=\"onDragStart($event, row)\"\n (dragend)=\"onDragEnd()\"\n (dragover)=\"onDragOver($event, row)\"\n (dragleave)=\"onDragLeave()\"\n (drop)=\"onDrop($event, row)\"\n >\n @if (dropHover()?.key === row.node && dropHover()?.position === -1) {\n <span class=\"pointer-events-none absolute inset-x-0 top-0 h-0.5 bg-ui-primary\"></span>\n }\n @if (dropHover()?.key === row.node && dropHover()?.position === 1) {\n <span class=\"pointer-events-none absolute inset-x-0 bottom-0 h-0.5 bg-ui-primary\"></span>\n }\n <button\n type=\"button\"\n tabindex=\"-1\"\n class=\"inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-full text-ui-fg-muted hover:bg-ui-surface-3\"\n [class.invisible]=\"isLeaf(row.node)\"\n [attr.aria-label]=\"row.node.expanded ? 'Recolher' : 'Expandir'\"\n (click)=\"toggle($event, row.node)\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-3.5 w-3.5 transition-transform duration-ui\" [class.rotate-90]=\"row.node.expanded\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M6 4l4 4-4 4\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </button>\n @if (selectionMode() === 'checkbox') {\n <span\n class=\"inline-flex h-4 w-4 shrink-0 items-center justify-center rounded border\"\n [class]=\"isSelected(row.node) ? 'border-ui-primary bg-ui-primary text-ui-on-primary' : row.node.partialSelected ? 'border-ui-primary bg-ui-primary/20 text-ui-primary' : 'border-ui-line-strong bg-ui-surface-1 text-transparent'\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" aria-hidden=\"true\">\n @if (row.node.partialSelected && !isSelected(row.node)) {\n <path d=\"M4 8h8\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" />\n }\n @else {\n <path d=\"M3 8.5l3.2 3L13 4.5\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n }\n </svg>\n </span>\n }\n @if (iconOf(row.node); as icon) {\n <i [class]=\"icon\" aria-hidden=\"true\"></i>\n }\n <div class=\"min-w-0 flex-1\" [ngClass]=\"row.node.styleClass\">\n @if (templateFor(row.node); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"{ $implicit: row.node }\" />\n }\n @else {\n <span class=\"truncate\">{{ row.node.label }}</span>\n }\n </div>\n </div>\n </li>\n }\n @empty {\n @if (emptyTemplate(); as emptyTpl) {\n <li class=\"list-none\"><ng-container [ngTemplateOutlet]=\"emptyTpl\" /></li>\n }\n @else if (emptyMessage()) {\n <li class=\"list-none px-2 py-1 text-ui-fg-muted\">{{ emptyMessage() }}</li>\n }\n }\n </ul>\n @if (footerTemplate(); as footerTpl) {\n <div class=\"mt-2\"><ng-container [ngTemplateOutlet]=\"footerTpl\" /></div>\n }\n </div>\n `,\n})\nexport class SmzUiTreeComponent {\n public readonly value = input<SmzUiTreeNode[] | null | undefined>([]);\n public readonly selectionMode = input<SmzTreeSelectionMode | string | null | undefined>(null);\n public readonly selection = model<any>(null);\n public readonly metaKeySelection = input(false, { transform: booleanAttribute });\n public readonly propagateSelectionUp = input(true, { transform: booleanAttribute });\n public readonly propagateSelectionDown = input(true, { transform: booleanAttribute });\n public readonly loading = input(false, { transform: booleanAttribute });\n public readonly loadingIcon = input<string>('fa-solid fa-spinner');\n public readonly filter = input(false, { transform: booleanAttribute });\n public readonly filterMode = input<'lenient' | 'strict' | string>('lenient');\n public readonly filterPlaceholder = input<string | null | undefined>('');\n public readonly filterBy = input<string>('label');\n public readonly emptyMessage = input<string | null | undefined>('');\n public readonly draggableNodes = input(false, { transform: booleanAttribute });\n public readonly droppableNodes = input(false, { transform: booleanAttribute });\n public readonly validateDrop = input(false, { transform: booleanAttribute });\n public readonly scrollHeight = input<string | null | undefined>(null);\n public readonly style = input<Record<string, string | number | null> | null | undefined>(null);\n public readonly styleClass = input<string | null | undefined>('');\n /** Menu de contexto exibido no clique direito de um no (o consumidor atualiza o modelo em `nodeContextMenuSelect`). */\n public readonly contextMenu = input<SmzMenuListComponent | null | undefined>(null);\n /** Templates fornecidos por outro componente (ex.: `ui-tree-select`), usados no lugar dos filhos de conteudo. */\n public readonly templateOverride = input<readonly SmzTemplateDirective[] | null | undefined>(null);\n /** Aceitos por compatibilidade com o `p-tree`; sem efeito. */\n public readonly layout = input<string | null | undefined>('vertical');\n public readonly virtualScroll = input(false, { transform: booleanAttribute });\n\n public readonly nodeSelect = output<SmzTreeNodeEvent>();\n public readonly nodeUnselect = output<SmzTreeNodeEvent>();\n public readonly nodeExpand = output<SmzTreeNodeEvent>();\n public readonly nodeCollapse = output<SmzTreeNodeEvent>();\n public readonly nodeContextMenuSelect = output<SmzTreeNodeEvent>();\n public readonly nodeDblClick = output<SmzTreeNodeEvent>();\n public readonly nodeDrop = output<SmzTreeDropEvent>();\n public readonly filtered = output<{ filter: string; filteredValue: SmzUiTreeNode[] }>();\n\n /** Elemento hospedeiro (compatibilidade com `Tree.el` do PrimeNG). */\n public readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** Incrementado a cada mutacao in-place (expansao, selecao propagada, drop) para recalcular as linhas. */\n private readonly tick = signal(0);\n private readonly query = signal('');\n protected readonly dropHover = signal<{ key: SmzUiTreeNode; position: DropPosition } | null>(null);\n private dragged: TreeRow | null = null;\n\n private readonly templates = contentChildren(SmzTemplateDirective);\n private readonly allTemplates = computed(() => this.templateOverride() ?? this.templates());\n protected readonly headerTemplate = computed(() => smzFindTemplate(this.allTemplates(), 'header'));\n protected readonly footerTemplate = computed(() => smzFindTemplate(this.allTemplates(), 'footer'));\n protected readonly emptyTemplate = computed(() => smzFindTemplate(this.allTemplates(), 'empty'));\n\n protected readonly rows = computed<TreeRow[]>(() => {\n this.tick();\n const text = this.query().trim().toLocaleLowerCase();\n const matches = text ? this.matchingNodes(this.value() ?? [], text) : null;\n const rows: TreeRow[] = [];\n\n const lenient = this.filterMode() !== 'strict';\n const walk = (nodes: SmzUiTreeNode[], level: number, parent: SmzUiTreeNode | null, forceShow: boolean): void => {\n nodes.forEach((node, index) => {\n node.parent = parent ?? undefined;\n const kind = matches?.get(node);\n if (matches && !forceShow && !kind) return;\n\n rows.push({ node, level, siblings: nodes, index, parent });\n if (!node.children?.length) return;\n\n // Com filtro, abre os nos que levam as combinacoes; sem filtro, respeita `expanded`.\n const open = matches ? true : node.expanded;\n if (open) walk(node.children, level + 1, node, forceShow || (lenient && kind === 'self'));\n });\n };\n walk(this.value() ?? [], 0, null, false);\n return rows;\n });\n\n /** Filtra os nos por texto no campo `filterBy` (modo `lenient` mantem os filhos de um no que combina). */\n public _filter(value: string): void {\n this.query.set(value ?? '');\n const filteredValue = (this.rows() ?? []).map((row) => row.node);\n this.filtered.emit({ filter: value, filteredValue });\n }\n\n protected isLeaf(node: SmzUiTreeNode): boolean {\n return node.leaf === false ? false : !(node.children && node.children.length > 0);\n }\n\n protected iconOf(node: SmzUiTreeNode): string | null {\n if (node.expanded && node.children?.length && node.expandedIcon) return node.expandedIcon;\n if (!node.expanded && node.children?.length && node.collapsedIcon) return node.collapsedIcon;\n return node.icon ?? null;\n }\n\n protected templateFor(node: SmzUiTreeNode): TemplateRef<unknown> | undefined {\n const templates = this.allTemplates();\n return smzFindTemplate(templates, node.type ?? 'default') ?? smzFindTemplate(templates, 'default');\n }\n\n protected isSelected(node: SmzUiTreeNode): boolean {\n this.tick();\n return this.indexInSelection(node) >= 0;\n }\n\n protected isDraggable(node: SmzUiTreeNode): boolean {\n return this.draggableNodes() && node.draggable !== false;\n }\n\n protected rowClasses(row: TreeRow): string {\n const selected = this.isSelected(row.node) && this.selectionMode() !== 'checkbox';\n const hover = this.dropHover();\n const dropTarget = hover?.key === row.node && hover.position === 0;\n return [\n this.selectionMode() ? 'cursor-pointer' : '',\n selected ? 'bg-ui-primary/10 text-ui-primary' : 'hover:bg-ui-surface-3',\n dropTarget ? 'ring-2 ring-ui-primary' : '',\n ].join(' ');\n }\n\n protected toggle(event: Event, node: SmzUiTreeNode): void {\n event.stopPropagation();\n if (node.expanded) this.collapse(event, node);\n else this.expand(event, node);\n }\n\n private expand(event: Event, node: SmzUiTreeNode): void {\n node.expanded = true;\n this.tick.update((value) => value + 1);\n this.nodeExpand.emit({ originalEvent: event, node });\n }\n\n private collapse(event: Event, node: SmzUiTreeNode): void {\n node.expanded = false;\n this.tick.update((value) => value + 1);\n this.nodeCollapse.emit({ originalEvent: event, node });\n }\n\n protected onNodeClick(event: Event, node: SmzUiTreeNode): void {\n const mode = this.selectionMode();\n if (!mode || node.selectable === false) return;\n\n const index = this.indexInSelection(node);\n const selected = index >= 0;\n\n if (mode === 'checkbox') {\n if (selected) {\n if (this.propagateSelectionDown()) this.propagateDown(node, false);\n else this.setSelection(this.listSelection().filter((_, i) => i !== index));\n if (this.propagateSelectionUp() && node.parent) this.propagateUp(node.parent, false);\n this.nodeUnselect.emit({ originalEvent: event, node });\n }\n else {\n if (this.propagateSelectionDown()) this.propagateDown(node, true);\n else this.setSelection([...this.listSelection(), node]);\n if (this.propagateSelectionUp() && node.parent) this.propagateUp(node.parent, true);\n this.nodeSelect.emit({ originalEvent: event, node });\n }\n }\n else if (mode === 'single') {\n this.selection.set(selected ? null : node);\n if (selected) this.nodeUnselect.emit({ originalEvent: event, node });\n else this.nodeSelect.emit({ originalEvent: event, node });\n }\n else {\n this.setSelection(selected ? this.listSelection().filter((_, i) => i !== index) : [...this.listSelection(), node]);\n if (selected) this.nodeUnselect.emit({ originalEvent: event, node });\n else this.nodeSelect.emit({ originalEvent: event, node });\n }\n this.tick.update((value) => value + 1);\n }\n\n protected onContextMenu(event: MouseEvent, node: SmzUiTreeNode): void {\n const menu = this.contextMenu();\n if (!menu) return;\n event.preventDefault();\n this.nodeContextMenuSelect.emit({ originalEvent: event, node });\n setTimeout(() => menu.showAt(event.clientX, event.clientY), 0);\n }\n\n protected onKeydown(event: KeyboardEvent, row: TreeRow): void {\n const node = row.node;\n switch (event.key) {\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.onNodeClick(event, node);\n break;\n case 'ArrowRight':\n event.preventDefault();\n if (!this.isLeaf(node) && !node.expanded) this.expand(event, node);\n break;\n case 'ArrowLeft':\n event.preventDefault();\n if (!this.isLeaf(node) && node.expanded) this.collapse(event, node);\n break;\n case 'ArrowDown':\n case 'ArrowUp': {\n event.preventDefault();\n const rows = Array.from(this.el.nativeElement.querySelectorAll<HTMLElement>('[role=\"treeitem\"] > div'));\n const current = rows.indexOf(event.currentTarget as HTMLElement);\n rows[current + (event.key === 'ArrowDown' ? 1 : -1)]?.focus();\n break;\n }\n default:\n break;\n }\n }\n\n // ----- selecao -----\n\n private listSelection(): any[] {\n const current = this.selection();\n return Array.isArray(current) ? current : current ? [current] : [];\n }\n\n private setSelection(list: any[]): void {\n this.selection.set(list);\n }\n\n private indexInSelection(node: SmzUiTreeNode): number {\n const current = this.selection();\n if (current === null || current === undefined) return -1;\n if (Array.isArray(current)) return current.findIndex((entry) => this.sameNode(entry, node));\n return this.sameNode(current, node) ? 0 : -1;\n }\n\n private sameNode(first: any, second: any): boolean {\n if (first === second) return true;\n return !!first && !!second && first.key !== undefined && first.key !== null && first.key === second.key;\n }\n\n private propagateDown(node: SmzUiTreeNode, select: boolean): void {\n const index = this.indexInSelection(node);\n if (select && index === -1) this.setSelection([...this.listSelection(), node]);\n else if (!select && index > -1) this.setSelection(this.listSelection().filter((_, i) => i !== index));\n node.partialSelected = false;\n for (const child of node.children ?? []) this.propagateDown(child, select);\n }\n\n private propagateUp(node: SmzUiTreeNode, select: boolean): void {\n if (node.children?.length) {\n let selectedCount = 0;\n let childPartial = false;\n for (const child of node.children) {\n if (this.indexInSelection(child) >= 0) selectedCount++;\n else if (child.partialSelected) childPartial = true;\n }\n\n if (select && selectedCount === node.children.length) {\n if (this.indexInSelection(node) === -1) this.setSelection([...this.listSelection(), node]);\n node.partialSelected = false;\n }\n else {\n if (!select) {\n const index = this.indexInSelection(node);\n if (index >= 0) this.setSelection(this.listSelection().filter((_, i) => i !== index));\n }\n node.partialSelected = childPartial || (selectedCount > 0 && selectedCount !== node.children.length);\n }\n }\n if (node.parent) this.propagateUp(node.parent, select);\n }\n\n // ----- filtro -----\n\n /** Mapa no -> motivo (`self` combina; `child` tem descendente que combina). */\n private matchingNodes(nodes: SmzUiTreeNode[], text: string): Map<SmzUiTreeNode, 'self' | 'child'> {\n const result = new Map<SmzUiTreeNode, 'self' | 'child'>();\n const visit = (node: SmzUiTreeNode): boolean => {\n const own = String(node[this.filterBy()] ?? '').toLocaleLowerCase().includes(text);\n let childMatch = false;\n for (const child of node.children ?? []) childMatch = visit(child) || childMatch;\n if (own) result.set(node, 'self');\n else if (childMatch) result.set(node, 'child');\n return own || childMatch;\n };\n nodes.forEach(visit);\n return result;\n }\n\n // ----- arrastar e soltar -----\n\n protected onDragStart(event: DragEvent, row: TreeRow): void {\n if (!this.isDraggable(row.node)) {\n event.preventDefault();\n return;\n }\n event.dataTransfer?.setData('text', 'data');\n if (event.dataTransfer) event.dataTransfer.effectAllowed = 'all';\n this.dragged = row;\n }\n\n protected onDragEnd(): void {\n this.dragged = null;\n this.dropHover.set(null);\n }\n\n private allowDrop(target: SmzUiTreeNode | null): boolean {\n const drag = this.dragged?.node;\n if (!drag) return false;\n if (!target) return true;\n if (drag === target) return false;\n let parent = target.parent;\n while (parent) {\n if (parent === drag) return false;\n parent = parent.parent;\n }\n return true;\n }\n\n private positionOf(event: DragEvent, element: HTMLElement): DropPosition {\n const rect = element.getBoundingClientRect();\n const y = event.clientY - rect.top;\n if (y < rect.height * 0.25) return -1;\n if (y > rect.height * 0.75) return 1;\n return 0;\n }\n\n protected onDragOver(event: DragEvent, row: TreeRow): void {\n if (!this.droppableNodes()) return;\n event.preventDefault();\n event.stopPropagation();\n\n if (!this.allowDrop(row.node)) {\n if (event.dataTransfer) event.dataTransfer.dropEffect = 'none';\n this.dropHover.set(null);\n return;\n }\n if (event.dataTransfer) event.dataTransfer.dropEffect = 'copy';\n let position = this.positionOf(event, event.currentTarget as HTMLElement);\n if (position === 0 && row.node.droppable === false) position = 1;\n this.dropHover.set({ key: row.node, position });\n }\n\n protected onDragLeave(): void {\n this.dropHover.set(null);\n }\n\n protected onDrop(event: DragEvent, row: TreeRow): void {\n if (!this.droppableNodes() || !this.dragged) return;\n event.preventDefault();\n event.stopPropagation();\n\n const hover = this.dropHover();\n const position = hover?.key === row.node ? hover.position : this.positionOf(event, event.currentTarget as HTMLElement);\n this.dropHover.set(null);\n if (!this.allowDrop(row.node) || (position === 0 && row.node.droppable === false)) return;\n\n const drag = this.dragged;\n const apply = (): void => {\n const dragIndex = drag.siblings.indexOf(drag.node);\n const subNodes = row.parent ? (row.parent.children ??= []) : (this.value() ?? []);\n const target = row.siblings === subNodes ? row.index : subNodes.indexOf(row.node);\n const dropIndex = drag.siblings === subNodes ? (dragIndex > target ? target : target - 1) : target;\n drag.siblings.splice(dragIndex, 1);\n\n if (position < 0) {\n subNodes.splice(dropIndex, 0, drag.node);\n drag.node.parent = row.parent ?? undefined;\n }\n else if (position > 0) {\n subNodes.splice(dropIndex + 1, 0, drag.node);\n drag.node.parent = row.parent ?? undefined;\n }\n else {\n row.node.children = row.node.children ?? [];\n row.node.children.push(drag.node);\n drag.node.parent = row.node;\n }\n this.dragged = null;\n this.tick.update((value) => value + 1);\n };\n\n if (this.validateDrop()) {\n this.nodeDrop.emit({ originalEvent: event, dragNode: drag.node, dropNode: row.node, index: row.index, accept: apply });\n }\n else {\n apply();\n this.nodeDrop.emit({ originalEvent: event, dragNode: drag.node, dropNode: row.node, index: row.index });\n }\n }\n\n protected onRootDragOver(event: DragEvent): void {\n if (this.droppableNodes() && this.dragged && (event.target as HTMLElement).tagName === 'UL') event.preventDefault();\n }\n\n protected onRootDrop(event: DragEvent): void {\n if (!this.droppableNodes() || !this.dragged || (event.target as HTMLElement).tagName !== 'UL') return;\n event.preventDefault();\n const drag = this.dragged;\n const roots = this.value() ?? [];\n const apply = (): void => {\n drag.siblings.splice(drag.siblings.indexOf(drag.node), 1);\n roots.push(drag.node);\n drag.node.parent = undefined;\n this.dragged = null;\n this.tick.update((value) => value + 1);\n };\n if (this.validateDrop()) this.nodeDrop.emit({ originalEvent: event, dragNode: drag.node, dropNode: null, index: drag.index, accept: apply });\n else {\n apply();\n this.nodeDrop.emit({ originalEvent: event, dragNode: drag.node, dropNode: null, index: drag.index });\n }\n }\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\n/* eslint-disable @typescript-eslint/no-unsafe-return, @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/explicit-module-boundary-types */\nimport { Overlay } from '@angular/cdk/overlay';\nimport { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n booleanAttribute,\n computed,\n contentChildren,\n forwardRef,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SmzAnchoredPanel } from '../core/anchored-panel';\nimport { SmzTemplateDirective } from '../core/template.directive';\nimport { SmzValueAccessor } from '../core/value-accessor';\nimport { SmzUiTreeComponent } from '../tree/tree.component';\nimport { SmzUiTreeNode } from '../types/tree-node';\n\n/**\n * Selecao de no de arvore em lista suspensa. Substitui o `p-treeselect` do PrimeNG.\n * O valor e o proprio no (modo `single`) ou a lista de nos (`multiple` e `checkbox`).\n * Aceita os mesmos templates por tipo de no do `ui-tree`.\n */\n@Component({\n selector: 'ui-tree-select',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, SmzUiTreeComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzTreeSelectComponent), multi: true }],\n host: { class: 'block min-w-0' },\n template: `\n <button\n #trigger\n type=\"button\"\n role=\"combobox\"\n aria-haspopup=\"tree\"\n class=\"flex h-control w-full cursor-pointer items-center gap-2 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x text-left font-ui text-ui-md text-ui-fg transition-colors duration-ui focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50\"\n [ngClass]=\"[containerStyleClass() ?? '', styleClass() ?? '']\"\n [attr.aria-expanded]=\"open()\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggle()\"\n (keydown.escape)=\"close()\"\n (blur)=\"onBlur()\"\n >\n <span class=\"min-w-0 flex-1 truncate\" [class.text-ui-fg-subtle]=\"selectedNodes().length === 0\">{{ label() }}</span>\n @if (showClear() && selectedNodes().length > 0 && !isDisabled()) {\n <span role=\"button\" tabindex=\"-1\" aria-label=\"Limpar\" class=\"inline-flex h-5 w-5 items-center justify-center rounded-full text-ui-fg-muted hover:bg-ui-surface-3\" (click)=\"clear($event)\">\n <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" aria-hidden=\"true\"><path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" /></svg>\n </span>\n }\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4 shrink-0 text-ui-fg-muted\" fill=\"none\" aria-hidden=\"true\"><path d=\"M4 6l4 4 4-4\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg>\n </button>\n\n <ng-template #panel>\n <div class=\"max-h-80 overflow-auto rounded-overlay border border-ui-line bg-ui-surface-2 p-1 font-ui text-ui-md text-ui-fg shadow-overlay\">\n @if (filter()) {\n <div class=\"p-1\">\n <input type=\"text\" class=\"h-control-sm w-full rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x-sm text-ui-sm focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus\" [placeholder]=\"filterPlaceholder() ?? ''\" (input)=\"tree._filter($any($event.target).value)\" />\n </div>\n }\n <ui-tree\n #tree\n [value]=\"options()\"\n [selectionMode]=\"selectionMode()\"\n [selection]=\"current()\"\n (selectionChange)=\"onSelection($event)\"\n [emptyMessage]=\"emptyMessage()\"\n [templateOverride]=\"templates()\"\n [scrollHeight]=\"scrollHeight()\"\n class=\"[&>div]:border-0 [&>div]:p-0\"\n />\n </div>\n </ng-template>\n `,\n})\nexport class SmzTreeSelectComponent extends SmzValueAccessor<any> implements OnDestroy {\n public readonly options = input<SmzUiTreeNode[] | null | undefined>([]);\n public readonly selectionMode = input<'single' | 'multiple' | 'checkbox' | string>('single');\n public readonly placeholder = input<string | null | undefined>('');\n public readonly filter = input(false, { transform: booleanAttribute });\n public readonly filterPlaceholder = input<string | null | undefined>('');\n public readonly emptyMessage = input<string | null | undefined>('');\n public readonly showClear = input(false, { transform: booleanAttribute });\n public readonly scrollHeight = input<string | null | undefined>(null);\n public readonly styleClass = input<string | null | undefined>('');\n public readonly containerStyleClass = input<string | null | undefined>('');\n /** Aceitos por compatibilidade com o `p-treeselect`; sem efeito. */\n public readonly appendTo = input<unknown>(undefined);\n public readonly display = input<string | null | undefined>('comma');\n public readonly filterInputAutoFocus = input(false, { transform: booleanAttribute });\n\n protected readonly templates = contentChildren(SmzTemplateDirective);\n protected readonly open = signal(false);\n\n protected readonly selectedNodes = computed<SmzUiTreeNode[]>(() => {\n const value = this.current();\n return Array.isArray(value) ? value : value ? [value] : [];\n });\n protected readonly label = computed(() => {\n const nodes = this.selectedNodes();\n return nodes.length === 0 ? (this.placeholder() ?? '') : nodes.map((node) => node.label ?? '').join(', ');\n });\n\n private readonly overlay = inject(Overlay);\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly trigger = viewChild.required<ElementRef<HTMLButtonElement>>('trigger');\n private readonly panel = viewChild.required<TemplateRef<unknown>>('panel');\n private readonly anchored = new SmzAnchoredPanel(this.overlay, this.viewContainer);\n\n public ngOnDestroy(): void {\n this.anchored.close();\n }\n\n protected toggle(): void {\n if (this.open()) this.close();\n else this.openPanel();\n }\n\n protected onBlur(): void {\n if (!this.open()) this.touch();\n }\n\n protected onSelection(selection: any): void {\n this.commit(selection);\n if (this.selectionMode() === 'single') this.close();\n }\n\n protected clear(event: Event): void {\n event.stopPropagation();\n this.commit(this.selectionMode() === 'single' ? null : []);\n }\n\n private openPanel(): void {\n if (this.isDisabled() || this.open()) return;\n this.anchored.open(this.trigger().nativeElement, this.panel(), { matchWidth: true, onDismiss: () => { this.open.set(false); this.touch(); } });\n this.open.set(true);\n }\n\n protected close(): void {\n if (!this.open()) return;\n this.anchored.close();\n this.open.set(false);\n this.touch();\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, inject } from '@angular/core';\n\n/** Paleta no formato Tailwind (`500`, `600`...) em hexadecimal. */\nexport type SmzPalette = Partial<Record<0 | 50 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | 950, string>>;\n\nconst hexToChannels = (hex: string): string => {\n const value = hex.replace('#', '');\n const full = value.length === 3 ? value.split('').map((c) => c + c).join('') : value;\n const n = parseInt(full, 16);\n return `${Math.floor(n / 65536) % 256} ${Math.floor(n / 256) % 256} ${n % 256}`;\n};\n\n/**\n * Altera tokens do tema em tempo de execucao (cores sao canais RGB em `--smz-color-*`).\n * O tema base vem do CSS (themes/*.css); este servico apenas sobrescreve variaveis no `<html>`.\n */\n@Injectable({ providedIn: 'root' })\nexport class SmzThemeService {\n private readonly root = inject(DOCUMENT).documentElement;\n\n /** Sobrescreve cores: `{ primary: '#6366f1' }` -> `--smz-color-primary`. Aceita hexadecimal ou canais (\"99 102 241\"). */\n public setColors(colors: Record<string, string>): void {\n for (const [name, value] of Object.entries(colors)) {\n this.root.style.setProperty(`--smz-color-${name}`, value.startsWith('#') ? hexToChannels(value) : value);\n }\n }\n\n /** Define a cor primaria a partir de uma paleta; escolhe os tons por modo claro/escuro. */\n public setPrimaryPalette(palette: SmzPalette, dark: boolean = this.isDark()): void {\n const pick = (light: keyof SmzPalette, night: keyof SmzPalette): string => (dark ? palette[night] : palette[light]) ?? palette[500] ?? '#2563eb';\n this.setColors({\n primary: pick(500, 400),\n 'primary-hover': pick(600, 300),\n 'primary-active': pick(700, 200),\n focus: pick(500, 400),\n 'on-primary': dark ? '#0f172a' : '#ffffff',\n });\n }\n\n /** Remove todas as sobrescritas feitas por este servico (volta ao tema do CSS). */\n public reset(): void {\n const style = this.root.style;\n for (let i = style.length - 1; i >= 0; i--) {\n const prop = style.item(i);\n if (prop.startsWith('--smz-')) style.removeProperty(prop);\n }\n }\n\n public isDark(): boolean {\n return this.root.classList.contains('app-dark') || this.root.getAttribute('data-smz-mode') === 'dark';\n }\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, contentChildren, input } from '@angular/core';\nimport { SmzTemplateDirective, smzFindTemplate } from '../core/template.directive';\n\n/**\n * Card. Substitui o `p-card` do PrimeNG.\n * O conteudo padrao vai no corpo; `header`, `title`, `subtitle` e `footer` podem ser strings ou templates.\n *\n * <ui-card header=\"Titulo\" subheader=\"Sub\">conteudo<ng-template smzTemplate=\"footer\">...</ng-template></ui-card>\n */\n@Component({\n selector: 'ui-card',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet],\n host: { class: 'p-card flex flex-col overflow-hidden rounded-card bg-ui-surface-1 font-ui text-ui-md text-ui-fg shadow-card' },\n template: `\n @if (headerTemplate(); as tpl) {\n <div class=\"p-card-header\"><ng-container [ngTemplateOutlet]=\"tpl\" /></div>\n }\n <div class=\"p-card-body flex flex-1 flex-col gap-2 p-5\">\n @if (titleTemplate() || header()) {\n <div class=\"p-card-title text-ui-xl font-semibold\">\n @if (titleTemplate(); as tpl) { <ng-container [ngTemplateOutlet]=\"tpl\" /> } @else { {{ header() }} }\n </div>\n }\n @if (subtitleTemplate() || subheader()) {\n <div class=\"p-card-subtitle text-ui-fg-muted\">\n @if (subtitleTemplate(); as tpl) { <ng-container [ngTemplateOutlet]=\"tpl\" /> } @else { {{ subheader() }} }\n </div>\n }\n <div class=\"p-card-content flex-1\"><ng-content /></div>\n @if (footerTemplate(); as tpl) {\n <div class=\"p-card-footer\"><ng-container [ngTemplateOutlet]=\"tpl\" /></div>\n }\n </div>\n `,\n})\nexport class SmzCardComponent {\n /** Titulo em texto (equivale ao slot `title`). */\n public readonly header = input<string | null | undefined>('');\n /** Subtitulo em texto (equivale ao slot `subtitle`). */\n public readonly subheader = input<string | null | undefined>('');\n\n private readonly templates = contentChildren(SmzTemplateDirective);\n protected readonly headerTemplate = computed(() => smzFindTemplate(this.templates(), 'header'));\n protected readonly titleTemplate = computed(() => smzFindTemplate(this.templates(), 'title'));\n protected readonly subtitleTemplate = computed(() => smzFindTemplate(this.templates(), 'subtitle'));\n protected readonly footerTemplate = computed(() => smzFindTemplate(this.templates(), 'footer'));\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, booleanAttribute, computed, contentChildren, input, model, output } from '@angular/core';\nimport { SmzTemplateDirective, smzFindTemplate } from '../core/template.directive';\n\n/**\n * Painel com cabecalho, recolhimento opcional e rodape. Substitui o `p-panel` do PrimeNG.\n *\n * <ui-panel header=\"Filtros\" [toggleable]=\"true\" [(collapsed)]=\"fechado\">conteudo</ui-panel>\n */\n@Component({\n selector: 'ui-panel',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet],\n host: { class: 'p-panel block overflow-hidden rounded-card border border-ui-line bg-ui-surface-1 font-ui text-ui-md text-ui-fg' },\n template: `\n @if (hasHeader()) {\n <div class=\"p-panel-header flex items-center justify-between gap-2 border-b border-ui-line bg-ui-surface-1 px-4 py-3\">\n <div class=\"min-w-0 flex-1 font-semibold\">\n @if (headerTemplate(); as tpl) { <ng-container [ngTemplateOutlet]=\"tpl\" /> } @else { {{ header() }} }\n </div>\n <div class=\"flex items-center gap-1\">\n @if (iconsTemplate(); as tpl) { <ng-container [ngTemplateOutlet]=\"tpl\" /> }\n @if (toggleable()) {\n <button type=\"button\" class=\"inline-flex h-8 w-8 items-center justify-center rounded-full text-ui-fg-muted transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus\" [attr.aria-expanded]=\"!collapsed()\" [attr.aria-label]=\"collapsed() ? 'Expandir' : 'Recolher'\" (click)=\"toggle($event)\">\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4 transition-transform duration-ui\" [class.rotate-180]=\"!collapsed()\" fill=\"none\" aria-hidden=\"true\"><path d=\"M4 6l4 4 4-4\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg>\n </button>\n }\n </div>\n </div>\n }\n @if (!collapsed()) {\n <div class=\"p-panel-content p-4\"><ng-content /></div>\n @if (footerTemplate(); as tpl) {\n <div class=\"p-panel-footer border-t border-ui-line px-4 py-3\"><ng-container [ngTemplateOutlet]=\"tpl\" /></div>\n }\n }\n `,\n})\nexport class SmzPanelComponent {\n public readonly header = input<string | null | undefined>('');\n public readonly toggleable = input(false, { transform: booleanAttribute });\n public readonly collapsed = model(false);\n /** Antes de alternar (cancelavel nao: apenas notifica). */\n public readonly beforeToggle = output<{ originalEvent: Event; collapsed: boolean }>();\n public readonly afterToggle = output<{ originalEvent: Event; collapsed: boolean }>();\n\n private readonly templates = contentChildren(SmzTemplateDirective);\n protected readonly headerTemplate = computed(() => smzFindTemplate(this.templates(), 'header'));\n protected readonly iconsTemplate = computed(() => smzFindTemplate(this.templates(), 'icons'));\n protected readonly footerTemplate = computed(() => smzFindTemplate(this.templates(), 'footer'));\n protected readonly hasHeader = computed(() => !!this.header() || !!this.headerTemplate() || this.toggleable());\n\n protected toggle(event: Event): void {\n const next = !this.collapsed();\n this.beforeToggle.emit({ originalEvent: event, collapsed: next });\n this.collapsed.set(next);\n this.afterToggle.emit({ originalEvent: event, collapsed: next });\n }\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n/**\n * Indicador de carregamento circular. Substitui o `p-progressspinner` do PrimeNG.\n * O tamanho vem das classes do host (ex.: `class=\"h-12 w-12\"`); a cor, de `text-ui-primary` (herdavel).\n *\n * <ui-progress-spinner class=\"h-12 w-12\" strokeWidth=\"4\" />\n */\n@Component({\n selector: 'ui-progress-spinner',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'inline-block h-10 w-10 text-ui-primary', role: 'progressbar', 'aria-busy': 'true' },\n template: `\n <svg viewBox=\"0 0 50 50\" class=\"h-full w-full animate-spin\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"25\" cy=\"25\" r=\"20\" stroke=\"currentColor\" [attr.stroke-width]=\"strokeWidth()\" stroke-linecap=\"round\" stroke-dasharray=\"90 150\" />\n </svg>\n `,\n})\nexport class SmzProgressSpinnerComponent {\n public readonly strokeWidth = input<string | number>(4);\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\r\nimport { ChangeDetectionStrategy, Component, ElementRef, afterEveryRender, computed, inject, input, signal } from '@angular/core';\r\n\r\nexport type SmzFloatLabelVariant = 'over' | 'in' | 'on';\r\n\r\nconst BASE = 'relative block [&_label]:pointer-events-none [&_label]:absolute [&_label]:left-3 [&_label]:z-10 [&_label]:text-ui-fg-subtle [&_label]:transition-all [&_label]:duration-ui';\r\nconst RESTING = '[&_label]:top-1/2 [&_label]:-translate-y-1/2 [&_label]:text-ui-md';\r\nconst FLOATED: Record<SmzFloatLabelVariant, string> = {\r\n over: '[&_label]:-top-5 [&_label]:left-0 [&_label]:translate-y-0 [&_label]:text-ui-xs [&_label]:text-ui-fg-muted',\r\n on: '[&_label]:top-0 [&_label]:left-2 [&_label]:-translate-y-1/2 [&_label]:bg-ui-surface-1 [&_label]:px-1 [&_label]:text-ui-xs [&_label]:text-ui-fg-muted',\r\n in: '[&_label]:top-1.5 [&_label]:translate-y-0 [&_label]:text-ui-xs [&_label]:text-ui-fg-muted',\r\n};\r\nconst IN_PADDING = '[&_input]:pt-4 [&_textarea]:pt-5 [&_[role=combobox]]:pt-4';\r\n\r\n/**\r\n * Rotulo flutuante. Substitui o `p-floatlabel` do PrimeNG.\r\n * O `<label>` projetado flutua quando o controle recebe foco ou tem valor\r\n * (detectado em `input`/`textarea` e em selects do kit; use `[filled]` para forcar).\r\n *\r\n * <ui-float-label variant=\"on\"><input smzInputText id=\"n\" /><label for=\"n\">Nome</label></ui-float-label>\r\n */\r\n@Component({\r\n selector: 'ui-float-label',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class]': 'classes()',\r\n '(focusin)': 'focused.set(true)',\r\n '(focusout)': 'focused.set(false); check()',\r\n '(input)': 'check()',\r\n '(change)': 'check()',\r\n },\r\n template: '<ng-content />',\r\n})\r\nexport class SmzFloatLabelComponent {\r\n public readonly variant = input<SmzFloatLabelVariant>('over');\r\n /** Forca o estado \"preenchido\" quando a deteccao automatica nao se aplica. */\r\n public readonly filled = input<boolean | null>(null);\r\n\r\n protected readonly focused = signal(false);\r\n private readonly detected = signal(false);\r\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n protected readonly floated = computed(() => this.focused() || (this.filled() ?? this.detected()));\r\n protected readonly classes = computed(() => {\r\n const variant = this.variant();\r\n return [BASE, this.floated() ? FLOATED[variant] : RESTING, variant === 'in' ? IN_PADDING : ''].join(' ');\r\n });\r\n\r\n constructor() {\r\n afterEveryRender(() => this.check());\r\n }\r\n\r\n protected check(): void {\r\n {\r\n const root = this.host.nativeElement;\r\n const field = root.querySelector<HTMLInputElement | HTMLTextAreaElement>('input:not([type=checkbox]):not([type=radio]), textarea');\r\n const combo = root.querySelector('[role=combobox]');\r\n let filled = false;\r\n if (field && field.value !== '') filled = true;\r\n else if (combo && !field) filled = !combo.querySelector('.text-ui-fg-subtle') && (combo.textContent ?? '').trim() !== '';\r\n if (filled !== this.detected()) this.detected.set(filled);\r\n }\r\n }\r\n}\r\n","/* eslint-disable max-len -- classes Tailwind nos templates */\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ElementRef, TemplateRef, computed, contentChildren, input, output, signal, viewChild } from '@angular/core';\n\n/** Painel de um `ui-splitter`. O conteudo e projetado dentro da area do painel. */\n@Component({\n selector: 'ui-splitter-panel',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-template><ng-content /></ng-template>',\n})\nexport class SmzSplitterPanelComponent {\n public readonly content = viewChild.required<TemplateRef<unknown>>(TemplateRef);\n /** Tamanho inicial em % (sobrescreve `panelSizes` do splitter). */\n public readonly size = input<number | null>(null);\n public readonly minSize = input<number | null>(null);\n}\n\n/**\n * Divisor redimensionavel. Substitui o `p-splitter` / `p-splitterPanel` do PrimeNG.\n *\n * <ui-splitter layout=\"horizontal\" [panelSizes]=\"[30, 70]\" [minSizes]=\"[10, 20]\">\n * <ui-splitter-panel>A</ui-splitter-panel><ui-splitter-panel>B</ui-splitter-panel>\n * </ui-splitter>\n */\n@Component({\n selector: 'ui-splitter',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet],\n host: { class: 'block h-full w-full overflow-hidden rounded-control border border-ui-line bg-ui-surface-1 font-ui text-ui-md text-ui-fg' },\n template: `\n <div #root class=\"flex h-full w-full\" [class.flex-col]=\"layout() === 'vertical'\">\n @for (panel of panels(); track $index; let i = $index) {\n <div class=\"min-h-0 min-w-0 overflow-auto\" [style.flex]=\"'0 0 ' + sizes()[i] + '%'\" [style.width]=\"layout() === 'horizontal' ? sizes()[i] + '%' : null\" [style.height]=\"layout() === 'vertical' ? sizes()[i] + '%' : null\">\n <ng-container [ngTemplateOutlet]=\"panel.content()\" />\n </div>\n @if (i < panels().length - 1) {\n <div\n role=\"separator\"\n tabindex=\"0\"\n class=\"shrink-0 bg-ui-line transition-colors duration-ui hover:bg-ui-primary focus-visible:bg-ui-primary focus-visible:outline-none\"\n [class]=\"layout() === 'horizontal' ? 'w-1 cursor-col-resize' : 'h-1 cursor-row-resize'\"\n [attr.aria-orientation]=\"layout() === 'horizontal' ? 'vertical' : 'horizontal'\"\n (pointerdown)=\"startDrag($event, i)\"\n (keydown)=\"onKey($event, i)\"\n ></div>\n }\n }\n </div>\n `,\n})\nexport class SmzSplitterComponent {\n public readonly layout = input<'horizontal' | 'vertical'>('horizontal');\n public readonly panelSizes = input<number[] | null | undefined>(null);\n public readonly minSizes = input<number[] | null | undefined>(null);\n public readonly resizeEnd = output<{ sizes: number[] }>();\n\n protected readonly panels = contentChildren(SmzSplitterPanelComponent);\n private readonly root = viewChild.required<ElementRef<HTMLElement>>('root');\n private readonly overrides = signal<number[] | null>(null);\n\n protected readonly sizes = computed<number[]>(() => {\n const override = this.overrides();\n if (override && override.length === this.panels().length) return override;\n const panels = this.panels();\n const base = this.panelSizes() ?? [];\n const explicit = panels.map((panel, i) => panel.size() ?? base[i] ?? null);\n const known = explicit.reduce<number>((sum, size) => sum + (size ?? 0), 0);\n const free = explicit.filter((size) => size === null).length;\n const share = free > 0 ? Math.max(0, 100 - known) / free : 0;\n return explicit.map((size) => size ?? share);\n });\n\n private min(index: number): number {\n return this.panels()[index]?.minSize() ?? this.minSizes()?.[index] ?? 0;\n }\n\n protected startDrag(event: PointerEvent, index: number): void {\n event.preventDefault();\n const rect = this.root().nativeElement.getBoundingClientRect();\n const total = this.layout() === 'horizontal' ? rect.width : rect.height;\n const start = this.layout() === 'horizontal' ? event.clientX : event.clientY;\n const initial = [...this.sizes()];\n\n const move = (e: PointerEvent): void => {\n const delta = (((this.layout() === 'horizontal' ? e.clientX : e.clientY) - start) / total) * 100;\n this.resize(initial, index, delta);\n };\n const up = (): void => {\n document.removeEventListener('pointermove', move);\n document.removeEventListener('pointerup', up);\n this.resizeEnd.emit({ sizes: this.sizes() });\n };\n document.addEventListener('pointermove', move);\n document.addEventListener('pointerup', up);\n }\n\n protected onKey(event: KeyboardEvent, index: number): void {\n const keys = this.layout() === 'horizontal' ? { dec: 'ArrowLeft', inc: 'ArrowRight' } : { dec: 'ArrowUp', inc: 'ArrowDown' };\n if (event.key !== keys.dec && event.key !== keys.inc) return;\n event.preventDefault();\n this.resize([...this.sizes()], index, event.key === keys.inc ? 2 : -2);\n this.resizeEnd.emit({ sizes: this.sizes() });\n }\n\n private resize(initial: number[], index: number, delta: number): void {\n const pair = initial[index] + initial[index + 1];\n const next = Math.min(Math.max(initial[index] + delta, this.min(index)), pair - this.min(index + 1));\n const sizes = [...initial];\n sizes[index] = next;\n sizes[index + 1] = pair - next;\n this.overrides.set(sizes);\n }\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-argument, @typescript-eslint/explicit-module-boundary-types */\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n booleanAttribute,\n computed,\n contentChildren,\n inject,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { SmzFilterService } from '../core/filter.service';\nimport { SmzObjectUtils } from '../core/object-utils';\nimport { SmzTemplateDirective, smzFindTemplate } from '../core/template.directive';\nimport { SmzPaginatorComponent } from '../paginator/paginator.component';\nimport { SmzUiTreeNode } from '../types/tree-node';\n\n/** Linha achatada exposta aos templates (`let-rowNode`). */\nexport interface SmzTreeTableRowNode<T = any> {\n node: SmzUiTreeNode<T>;\n parent: SmzUiTreeNode<T> | null;\n level: number;\n}\n\nexport interface SmzTreeTableNodeEvent {\n node: SmzUiTreeNode;\n originalEvent?: Event;\n}\n\nexport type SmzTreeTableSelectionMode = 'single' | 'multiple' | 'checkbox';\n\nconst ROW_BASE = 'border-b border-ui-line transition-colors duration-ui';\n\n/**\n * Tabela em arvore. Substitui o `p-treeTable` do PrimeNG.\n * Os templates `header`, `body`, `caption`, `footer`, `emptymessage` e `summary` usam `smzTemplate`;\n * o `body` recebe `let-rowNode let-rowData=\"rowData\" let-columns=\"columns\"`.\n *\n * <ui-tree-table [value]=\"nodes\" [columns]=\"cols\" selectionMode=\"checkbox\" [(selection)]=\"sel\">\n * <ng-template smzTemplate=\"header\" let-columns><tr><th *ngFor=\"let c of columns\">{{ c.header }}</th></tr></ng-template>\n * <ng-template smzTemplate=\"body\" let-rowNode let-rowData=\"rowData\" let-columns=\"columns\">\n * <tr [smzTtRow]=\"rowNode\"><td><ui-tree-table-toggler [rowNode]=\"rowNode\" />{{ rowData.name }}</td></tr>\n * </ng-template>\n * </ui-tree-table>\n */\n@Component({\n selector: 'ui-tree-table',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, SmzPaginatorComponent],\n host: { class: 'block overflow-hidden rounded-control border border-ui-line bg-ui-surface-1 font-ui text-ui-md text-ui-fg' },\n template: `\n @if (captionTemplate(); as tpl) {\n <div class=\"border-b border-ui-line px-4 py-3\"><ng-container [ngTemplateOutlet]=\"tpl\" /></div>\n }\n <div class=\"relative overflow-auto\" [style.max-height]=\"scrollable() ? scrollHeight() : null\">\n <table class=\"w-full border-separate border-spacing-0 text-left [&_td]:border-b [&_td]:border-ui-line [&_td]:px-4 [&_td]:py-3 [&_th]:sticky [&_th]:top-0 [&_th]:border-b [&_th]:border-ui-line [&_th]:bg-ui-surface-1 [&_th]:px-4 [&_th]:py-3 [&_th]:font-semibold\" [class]=\"tableStyleClass() ?? ''\">\n <thead>\n @if (headerTemplate(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"{ $implicit: columns() }\" />\n }\n </thead>\n <tbody>\n @for (row of pageRows(); track row.node.key ?? row.node) {\n <ng-container [ngTemplateOutlet]=\"bodyTemplate() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: row, rowNode: row, node: row.node, rowData: row.node.data, columns: columns() }\" />\n } @empty {\n @if (!loading()) {\n <tr>\n <td [attr.colspan]=\"columns().length || 1\" class=\"px-4 py-6 text-center text-ui-fg-muted\">\n @if (emptyTemplate(); as tpl) { <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"{ $implicit: columns() }\" /> } @else { {{ emptyMessage() }} }\n </td>\n </tr>\n }\n }\n </tbody>\n @if (footerTemplate(); as tpl) {\n <tfoot><ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"{ $implicit: columns() }\" /></tfoot>\n }\n </table>\n @if (loading()) {\n <div class=\"absolute inset-0 flex items-center justify-center bg-ui-surface-1/60 text-ui-primary\" role=\"status\">\n <svg viewBox=\"0 0 50 50\" class=\"h-8 w-8 animate-spin\" fill=\"none\" aria-hidden=\"true\"><circle cx=\"25\" cy=\"25\" r=\"20\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-dasharray=\"90 150\" /></svg>\n </div>\n }\n </div>\n @if (paginator()) {\n <ui-paginator class=\"border-t border-ui-line\" [first]=\"first()\" [rows]=\"rows()\" [totalRecords]=\"rootCount()\" [rowsPerPageOptions]=\"rowsPerPageOptions()\" [showCurrentPageReport]=\"showCurrentPageReport()\" [currentPageReportTemplate]=\"currentPageReportTemplate()\" (firstChange)=\"first.set($event)\" (rowsChange)=\"rows.set($event)\" (pageChanged)=\"page.emit($event)\" />\n }\n @if (summaryTemplate(); as tpl) {\n <div class=\"border-t border-ui-line px-4 py-3\"><ng-container [ngTemplateOutlet]=\"tpl\" /></div>\n }\n `,\n})\nexport class SmzTreeTableComponent {\n public readonly value = input<SmzUiTreeNode[] | null | undefined>([]);\n public readonly columns = input<any[]>([]);\n public readonly selectionMode = input<SmzTreeTableSelectionMode | string | null | undefined>(null);\n public readonly selection = model<any>(null);\n public readonly propagateSelectionUp = input(true, { transform: booleanAttribute });\n public readonly propagateSelectionDown = input(true, { transform: booleanAttribute });\n public readonly loading = input(false, { transform: booleanAttribute });\n public readonly scrollable = input(false, { transform: booleanAttribute });\n public readonly scrollHeight = input<string | null | undefined>(null);\n public readonly emptyMessage = input<string | null | undefined>('');\n public readonly tableStyleClass = input<string | null | undefined>('');\n public readonly paginator = input(false, { transform: booleanAttribute });\n public readonly rows = model(10);\n public readonly first = model(0);\n public readonly rowsPerPageOptions = input<number[] | null | undefined>(null);\n public readonly sortField = model<string | null>(null);\n public readonly sortOrder = model<1 | -1>(1);\n /** Destaca a linha sob o cursor (padrao: ligado). */\n public readonly rowHover = input(true, { transform: booleanAttribute });\n public readonly showCurrentPageReport = input(false, { transform: booleanAttribute });\n public readonly currentPageReportTemplate = input<string>('Mostrando {first} a {last} de {totalRecords}');\n /** Campos (de `node.data`) consultados pelo filtro global. */\n public readonly globalFilterFields = input<string[] | null | undefined>(null);\n /** `lenient`: um no que casa mantem toda a sua subarvore; `strict`: so os nos que casam (e seus ancestrais). */\n public readonly filterMode = input<'lenient' | 'strict'>('lenient');\n\n public readonly nodeSelect = output<SmzTreeTableNodeEvent>();\n public readonly nodeUnselect = output<SmzTreeTableNodeEvent>();\n public readonly nodeExpand = output<SmzTreeTableNodeEvent>();\n public readonly nodeCollapse = output<SmzTreeTableNodeEvent>();\n public readonly sorted = output<{ field: string; order: 1 | -1 }>();\n public readonly page = output<unknown>();\n\n private readonly templates = contentChildren(SmzTemplateDirective);\n protected readonly headerTemplate = computed(() => smzFindTemplate(this.templates(), 'header'));\n protected readonly bodyTemplate = computed(() => smzFindTemplate(this.templates(), 'body'));\n protected readonly captionTemplate = computed(() => smzFindTemplate(this.templates(), 'caption'));\n protected readonly footerTemplate = computed(() => smzFindTemplate(this.templates(), 'footer'));\n protected readonly emptyTemplate = computed(() => smzFindTemplate(this.templates(), 'emptymessage'));\n protected readonly summaryTemplate = computed(() => smzFindTemplate(this.templates(), 'summary'));\n\n /** Os nos sao mutaveis (`expanded`, `partialSelected`); este contador forca o recalculo das linhas. */\n private readonly version = signal(0);\n private readonly filterService = inject(SmzFilterService);\n private readonly globalFilter = signal<{ value: string; matchMode: string } | null>(null);\n private readonly columnFilters = signal<Record<string, { value: any; matchMode: string }>>({});\n\n /** Nos raiz que passam nos filtros (global e por coluna), ou `null` quando nao ha filtro ativo. */\n public get filteredNodes(): SmzUiTreeNode[] | null {\n return this.visibility()?.roots ?? null;\n }\n\n /** Visibilidade calculada dos filtros: quais nos aparecem e quais ancestrais expandir. */\n private readonly visibility = computed<{ roots: SmzUiTreeNode[]; visible: Set<SmzUiTreeNode>; expand: Set<SmzUiTreeNode> } | null>(() => {\n this.version();\n const global = this.globalFilter();\n const columns = this.columnFilters();\n const active = Object.entries(columns).filter(([, filter]) => filter.value !== null && filter.value !== undefined && filter.value !== '');\n if (!global?.value && active.length === 0) return null;\n\n const matches = (node: SmzUiTreeNode): boolean => {\n for (const [field, filter] of active) {\n const test = this.filterService.filters[filter.matchMode] ?? this.filterService.filters['contains'];\n if (!test(SmzObjectUtils.resolveFieldData(node.data, field), filter.value)) return false;\n }\n if (global?.value) {\n const test = this.filterService.filters[global.matchMode] ?? this.filterService.filters['contains'];\n const fields = this.globalFilterFields() ?? Object.keys(node.data ?? {});\n if (!fields.some((field) => test(SmzObjectUtils.resolveFieldData(node.data, field), global.value))) return false;\n }\n return true;\n };\n\n const visible = new Set<SmzUiTreeNode>();\n const expand = new Set<SmzUiTreeNode>();\n const lenient = this.filterMode() === 'lenient';\n const mark = (node: SmzUiTreeNode, forced: boolean): boolean => {\n const self = matches(node);\n let anyChild = false;\n for (const child of node.children ?? []) {\n if (mark(child, forced || (lenient && self))) anyChild = true;\n }\n const show = self || anyChild || forced;\n if (show) visible.add(node);\n if (anyChild && !self) expand.add(node);\n return self || anyChild;\n };\n const roots = (this.value() ?? []).filter((node) => mark(node, false));\n return { roots, visible, expand };\n });\n\n protected readonly rootCount = computed(() => this.visibility()?.roots.length ?? (this.value() ?? []).length);\n\n protected readonly flatRows = computed<SmzTreeTableRowNode[]>(() => {\n this.version();\n const field = this.sortField();\n const order = this.sortOrder();\n const filter = this.visibility();\n const out: SmzTreeTableRowNode[] = [];\n const sort = (nodes: SmzUiTreeNode[]): SmzUiTreeNode[] =>\n field ? [...nodes].sort((a, b) => order * compareValues(SmzObjectUtils.resolveFieldData(a.data, field), SmzObjectUtils.resolveFieldData(b.data, field))) : nodes;\n const walk = (nodes: SmzUiTreeNode[], parent: SmzUiTreeNode | null, level: number): void => {\n for (const node of sort(nodes)) {\n if (filter && !filter.visible.has(node)) continue;\n out.push({ node, parent, level });\n if ((node.expanded || filter?.expand.has(node)) && node.children?.length) walk(node.children, node, level + 1);\n }\n };\n walk(this.value() ?? [], null, 0);\n return out;\n });\n\n /** Linhas visiveis; com paginador, a pagina atual e calculada sobre os nos raiz. */\n protected readonly pageRows = computed<SmzTreeTableRowNode[]>(() => {\n const all = this.flatRows();\n if (!this.paginator()) return all;\n const roots = all.filter((row) => row.level === 0);\n const pageRoots = new Set(roots.slice(this.first(), this.first() + this.rows()).map((row) => row.node));\n let include = false;\n return all.filter((row) => {\n if (row.level === 0) include = pageRoots.has(row.node);\n return include;\n });\n });\n\n /** Filtro global (equivale a `filterGlobal` do `p-treeTable`). */\n public filterGlobal(value: string | null, matchMode: string = 'contains'): void {\n this.globalFilter.set(value ? { value, matchMode } : null);\n this.first.set(0);\n }\n\n /** Filtro de uma coluna (campo de `node.data`). Valor vazio remove o filtro. */\n public filter(value: any, field: string, matchMode: string = 'contains'): void {\n this.columnFilters.update((current) => ({ ...current, [field]: { value, matchMode } }));\n this.first.set(0);\n }\n\n /** Limpa filtros, ordenacao e volta para a primeira pagina (equivale a `clear()` do `p-treeTable`). */\n public clear(): void {\n this.globalFilter.set(null);\n this.columnFilters.set({});\n this.sortField.set(null);\n this.sortOrder.set(1);\n this.first.set(0);\n }\n\n public refresh(): void {\n this.version.update((v) => v + 1);\n }\n\n public toggleNode(rowNode: SmzTreeTableRowNode, event?: Event): void {\n const node = rowNode.node;\n node.expanded = !node.expanded;\n (node.expanded ? this.nodeExpand : this.nodeCollapse).emit({ node, originalEvent: event });\n this.refresh();\n }\n\n public sortBy(field: string): void {\n const order: 1 | -1 = this.sortField() === field && this.sortOrder() === 1 ? -1 : 1;\n this.sortField.set(field);\n this.sortOrder.set(order);\n this.sorted.emit({ field, order });\n }\n\n public isSelected(node: SmzUiTreeNode): boolean {\n const selection = this.selection();\n return Array.isArray(selection) ? selection.includes(node) : selection === node;\n }\n\n public selectionState(node: SmzUiTreeNode): 'checked' | 'partial' | 'unchecked' {\n if (this.isSelected(node)) return 'checked';\n return node.partialSelected ? 'partial' : 'unchecked';\n }\n\n public onRowClick(rowNode: SmzTreeTableRowNode, event: Event): void {\n const mode = this.selectionMode();\n const node = rowNode.node;\n if (!mode || node.selectable === false) return;\n if (mode === 'checkbox') return; // selecao so pelo checkbox\n const selected = this.isSelected(node);\n if (mode === 'single') {\n this.selection.set(selected ? null : node);\n }\n else {\n const current = Array.isArray(this.selection()) ? (this.selection() as SmzUiTreeNode[]) : [];\n this.selection.set(selected ? current.filter((entry) => entry !== node) : [...current, node]);\n }\n (selected ? this.nodeUnselect : this.nodeSelect).emit({ node, originalEvent: event });\n }\n\n public toggleCheckbox(rowNode: SmzTreeTableRowNode, event?: Event): void {\n const node = rowNode.node;\n const selected = this.isSelected(node);\n const set = new Set<SmzUiTreeNode>(Array.isArray(this.selection()) ? (this.selection() as SmzUiTreeNode[]) : []);\n\n const apply = (target: SmzUiTreeNode, value: boolean): void => {\n if (value) set.add(target);\n else set.delete(target);\n target.partialSelected = false;\n if (this.propagateSelectionDown()) target.children?.forEach((child) => apply(child, value));\n };\n apply(node, !selected);\n\n if (this.propagateSelectionUp()) {\n for (let parent = rowNode.parent; parent; parent = this.findParent(parent)) {\n const children = parent.children ?? [];\n const all = children.every((child) => set.has(child));\n const some = children.some((child) => set.has(child) || child.partialSelected);\n if (all) set.add(parent);\n else set.delete(parent);\n parent.partialSelected = !all && some;\n }\n }\n\n this.selection.set([...set]);\n (selected ? this.nodeUnselect : this.nodeSelect).emit({ node, originalEvent: event });\n this.refresh();\n }\n\n /** Marca/desmarca todos os nos (checkbox do cabecalho). */\n public toggleAll(checked: boolean): void {\n const set = new Set<SmzUiTreeNode>();\n const walk = (nodes: SmzUiTreeNode[]): void => {\n for (const node of nodes) {\n node.partialSelected = false;\n if (checked && node.selectable !== false) set.add(node);\n walk(node.children ?? []);\n }\n };\n walk(this.value() ?? []);\n this.selection.set([...set]);\n this.refresh();\n }\n\n public allSelected(): boolean {\n const total = this.countNodes(this.value() ?? []);\n const selection = this.selection();\n return total > 0 && Array.isArray(selection) && selection.length >= total;\n }\n\n private countNodes(nodes: SmzUiTreeNode[]): number {\n return nodes.reduce((sum, node) => sum + 1 + this.countNodes(node.children ?? []), 0);\n }\n\n private findParent(node: SmzUiTreeNode): SmzUiTreeNode | null {\n const search = (nodes: SmzUiTreeNode[], parent: SmzUiTreeNode | null): SmzUiTreeNode | null | undefined => {\n for (const candidate of nodes) {\n if (candidate === node) return parent;\n const found = search(candidate.children ?? [], candidate);\n if (found !== undefined) return found;\n }\n return undefined;\n };\n return search(this.value() ?? [], null) ?? null;\n }\n}\n\nfunction compareValues(a: any, b: any): number {\n if (a == null && b == null) return 0;\n if (a == null) return -1;\n if (b == null) return 1;\n if (typeof a === 'string' && typeof b === 'string') return a.localeCompare(b);\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\n/** Linha do corpo: `<tr [smzTtRow]=\"rowNode\">`. Cuida de estilo, aria e selecao por clique. */\n@Directive({\n selector: 'tr[smzTtRow]',\n host: {\n '[class]': 'classes()',\n '[attr.aria-level]': 'rowNode().level + 1',\n '[attr.aria-expanded]': 'rowNode().node.children?.length ? !!rowNode().node.expanded : null',\n '[attr.aria-selected]': 'table.selectionMode() ? table.isSelected(rowNode().node) : null',\n '(click)': 'table.onRowClick(rowNode(), $event)',\n },\n})\nexport class SmzTreeTableRowDirective {\n protected readonly table = inject(SmzTreeTableComponent);\n public readonly rowNode = input.required<SmzTreeTableRowNode>({ alias: 'smzTtRow' });\n\n protected readonly classes = computed(() => {\n const mode = this.table.selectionMode();\n const selected = this.table.isSelected(this.rowNode().node);\n const hover = this.table.rowHover() ? 'hover:bg-ui-surface-3' : '';\n const interactive = mode && mode !== 'checkbox' ? `cursor-pointer ${hover}` : hover;\n return `${ROW_BASE} ${interactive} ${selected && mode !== 'checkbox' ? 'bg-ui-primary/10' : ''}`;\n });\n}\n\n/** Seta de expandir/recolher com recuo por nivel: `<ui-tree-table-toggler [rowNode]=\"rowNode\" />`. */\n@Component({\n selector: 'ui-tree-table-toggler',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'inline-flex items-center align-middle', '[style.padding-left.rem]': 'rowNode().level * 1.5' },\n template: `\n <button type=\"button\" class=\"inline-flex h-6 w-6 items-center justify-center rounded-full text-ui-fg-muted transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus\" [class.invisible]=\"!hasChildren()\" [attr.aria-label]=\"rowNode().node.expanded ? 'Recolher' : 'Expandir'\" (click)=\"$event.stopPropagation(); table.toggleNode(rowNode(), $event)\">\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4 transition-transform duration-ui\" [class.rotate-90]=\"rowNode().node.expanded\" fill=\"none\" aria-hidden=\"true\"><path d=\"M6 4l4 4-4 4\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg>\n </button>\n `,\n})\nexport class SmzTreeTableTogglerComponent {\n protected readonly table = inject(SmzTreeTableComponent);\n public readonly rowNode = input.required<SmzTreeTableRowNode>();\n protected hasChildren(): boolean {\n const node = this.rowNode().node;\n return !node.leaf && (node.children?.length ?? 0) > 0;\n }\n}\n\n/** Checkbox de selecao da linha (modo `checkbox`): `<ui-tree-table-checkbox [value]=\"rowNode\" />`. */\n@Component({\n selector: 'ui-tree-table-checkbox',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'inline-flex align-middle' },\n template: `\n <button type=\"button\" role=\"checkbox\" [attr.aria-checked]=\"state() === 'partial' ? 'mixed' : state() === 'checked'\" class=\"inline-flex h-5 w-5 items-center justify-center rounded border transition-colors duration-ui focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus\" [class]=\"state() === 'unchecked' ? 'border-ui-line-strong bg-ui-surface-1' : 'border-ui-primary bg-ui-primary text-ui-on-primary'\" (click)=\"$event.stopPropagation(); table.toggleCheckbox(value(), $event)\">\n @if (state() === 'checked') { <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" aria-hidden=\"true\"><path d=\"M3.5 8.5l3 3 6-6.5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg> }\n @else if (state() === 'partial') { <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" aria-hidden=\"true\"><path d=\"M4 8h8\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" /></svg> }\n </button>\n `,\n})\nexport class SmzTreeTableCheckboxComponent {\n protected readonly table = inject(SmzTreeTableComponent);\n public readonly value = input.required<SmzTreeTableRowNode>();\n protected state(): 'checked' | 'partial' | 'unchecked' {\n return this.table.selectionState(this.value().node);\n }\n}\n\n/** Checkbox do cabecalho: seleciona/limpa todos os nos. */\n@Component({\n selector: 'ui-tree-table-header-checkbox',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'inline-flex align-middle' },\n template: `\n <button type=\"button\" role=\"checkbox\" [attr.aria-checked]=\"table.allSelected()\" class=\"inline-flex h-5 w-5 items-center justify-center rounded border transition-colors duration-ui focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus\" [class]=\"table.allSelected() ? 'border-ui-primary bg-ui-primary text-ui-on-primary' : 'border-ui-line-strong bg-ui-surface-1'\" (click)=\"table.toggleAll(!table.allSelected())\">\n @if (table.allSelected()) { <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" aria-hidden=\"true\"><path d=\"M3.5 8.5l3 3 6-6.5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg> }\n </button>\n `,\n})\nexport class SmzTreeTableHeaderCheckboxComponent {\n protected readonly table = inject(SmzTreeTableComponent);\n}\n\n/** Cabecalho ordenavel: `<th [smzTtSortableColumn]=\"'nome'\">Nome <ui-tree-table-sort-icon field=\"nome\" /></th>`. */\n@Directive({\n selector: 'th[smzTtSortableColumn]',\n host: { class: 'cursor-pointer select-none', '(click)': 'table.sortBy(field())', '[attr.aria-sort]': 'ariaSort()' },\n})\nexport class SmzTreeTableSortableColumnDirective {\n protected readonly table = inject(SmzTreeTableComponent);\n public readonly field = input.required<string>({ alias: 'smzTtSortableColumn' });\n protected ariaSort(): string {\n return this.table.sortField() === this.field() ? (this.table.sortOrder() === 1 ? 'ascending' : 'descending') : 'none';\n }\n}\n\n@Component({\n selector: 'ui-tree-table-sort-icon',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'ml-1 inline-flex align-middle text-ui-fg-muted' },\n template: `\n <svg viewBox=\"0 0 16 16\" class=\"h-3.5 w-3.5\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M5 6l3-3 3 3\" [attr.stroke]=\"dir() === 1 ? 'rgb(var(--smz-color-primary))' : 'currentColor'\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M5 10l3 3 3-3\" [attr.stroke]=\"dir() === -1 ? 'rgb(var(--smz-color-primary))' : 'currentColor'\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n `,\n})\nexport class SmzTreeTableSortIconComponent {\n protected readonly table = inject(SmzTreeTableComponent);\n public readonly field = input.required<string>();\n protected dir(): 0 | 1 | -1 {\n return this.table.sortField() === this.field() ? this.table.sortOrder() : 0;\n }\n}\n\nexport const SMZ_TREE_TABLE = [\n SmzTreeTableComponent,\n SmzTreeTableRowDirective,\n SmzTreeTableTogglerComponent,\n SmzTreeTableCheckboxComponent,\n SmzTreeTableHeaderCheckboxComponent,\n SmzTreeTableSortableColumnDirective,\n SmzTreeTableSortIconComponent,\n SmzTemplateDirective,\n] as const;\n","/* eslint-disable max-len -- classes Tailwind nos templates */\nimport { ChangeDetectionStrategy, Component, Injectable, inject } from '@angular/core';\nimport { SmzButtonComponent } from '../button/button.component';\nimport { SmzDialogConfig, SmzDialogRef } from '../dialog/dialog-ref';\nimport { SmzDialogService } from '../dialog/dialog.service';\n\n/** Opcoes de `SmzConfirmationService.confirm` (mesmos nomes do `Confirmation` do PrimeNG). */\nexport interface SmzConfirmation {\n message?: string;\n header?: string;\n /** Classe do icone exibido ao lado da mensagem (ex.: `fa-solid fa-triangle-exclamation`). */\n icon?: string;\n acceptLabel?: string;\n rejectLabel?: string;\n /** Esconde o botao de aceitar/rejeitar. */\n acceptVisible?: boolean;\n rejectVisible?: boolean;\n /** Severidade do botao de aceitar (ex.: `danger` destrutivo, `success` aprovar). */\n acceptSeverity?: 'primary' | 'secondary' | 'danger' | 'success' | 'warning';\n accept?: () => void;\n reject?: () => void;\n width?: string;\n closeOnEscape?: boolean;\n}\n\n@Component({\n selector: 'ui-confirm-content',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SmzButtonComponent],\n template: `\n <div class=\"flex items-start gap-3 font-ui text-ui-md text-ui-fg\">\n @if (options.icon) {\n <i [class]=\"options.icon + ' mt-0.5 text-ui-xl text-ui-warning'\" aria-hidden=\"true\"></i>\n }\n <p class=\"m-0 flex-1\">{{ options.message }}</p>\n </div>\n <div class=\"mt-5 flex justify-end gap-2\">\n @if (options.rejectVisible !== false) {\n <button smzButton type=\"button\" severity=\"secondary\" variant=\"outlined\" [label]=\"options.rejectLabel ?? 'Não'\" (click)=\"close(false)\"></button>\n }\n @if (options.acceptVisible !== false) {\n <button smzButton type=\"button\" [severity]=\"options.acceptSeverity ?? 'primary'\" [label]=\"options.acceptLabel ?? 'Sim'\" (click)=\"close(true)\"></button>\n }\n </div>\n `,\n})\nexport class SmzConfirmContentComponent {\n protected readonly options: SmzConfirmation = inject(SmzDialogConfig).data as SmzConfirmation;\n private readonly ref = inject(SmzDialogRef<boolean>);\n\n protected close(accepted: boolean): void {\n this.ref.close(accepted);\n }\n}\n\n/**\n * Confirmacao modal. Substitui o `ConfirmationService` + `<p-confirmdialog>` do PrimeNG\n * (nao ha componente a declarar no template).\n *\n * confirm.confirm({ message: 'Excluir?', header: 'Confirmacao', icon: 'fa-solid fa-triangle-exclamation', accept: () => ..., reject: () => ... });\n */\n@Injectable({ providedIn: 'root' })\nexport class SmzConfirmationService {\n private readonly dialogs = inject(SmzDialogService);\n\n public confirm(confirmation: SmzConfirmation): SmzDialogRef<boolean> {\n const ref = this.dialogs.open<boolean>(SmzConfirmContentComponent, {\n header: confirmation.header ?? 'Confirmação',\n width: confirmation.width ?? '28rem',\n closeOnEscape: confirmation.closeOnEscape ?? true,\n data: confirmation,\n });\n ref.onClose.subscribe((accepted) => {\n if (accepted === true) confirmation.accept?.();\n else confirmation.reject?.();\n });\n return ref;\n }\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\nimport { ChangeDetectionStrategy, Component, ElementRef, booleanAttribute, input, output, signal, viewChild } from '@angular/core';\n\nexport interface SmzFileSelectEvent {\n files: File[];\n originalEvent?: Event;\n}\n\nexport interface SmzFileErrorEvent {\n file: File;\n reason: 'size' | 'type';\n}\n\n/**\n * Selecao de arquivos com area de arrastar e soltar e lista de escolhidos.\n * Substitui o `p-fileupload` (modo `basic`/`advanced` sem envio automatico): o envio ao servidor\n * fica a cargo do app (ex.: `HttpClient` no handler de `(selected)`).\n *\n * <ui-file-upload accept=\"image/*\" [multiple]=\"true\" [maxFileSize]=\"1000000\" (selected)=\"enviar($event.files)\" />\n */\n@Component({\n selector: 'ui-file-upload',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'block font-ui text-ui-md text-ui-fg' },\n template: `\n <input #picker type=\"file\" class=\"sr-only\" [accept]=\"accept() ?? ''\" [multiple]=\"multiple()\" [disabled]=\"disabled()\" (change)=\"onPick($event)\" />\n <div\n class=\"flex flex-col items-center justify-center gap-2 rounded-card border-2 border-dashed p-6 text-center transition-colors duration-ui\"\n [class]=\"dragging() ? 'border-ui-primary bg-ui-primary/10' : 'border-ui-line-strong bg-ui-surface-1'\"\n [class.opacity-50]=\"disabled()\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"dragging.set(false)\"\n (drop)=\"onDrop($event)\"\n >\n <button type=\"button\" class=\"rounded-control border border-ui-line-strong px-control-x py-2 font-medium transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:pointer-events-none\" [disabled]=\"disabled()\" (click)=\"picker.click()\">{{ chooseLabel() }}</button>\n <span class=\"text-ui-sm text-ui-fg-muted\">{{ dropLabel() }}</span>\n </div>\n @if (files().length > 0) {\n <ul class=\"m-0 mt-3 flex list-none flex-col gap-2 p-0\">\n @for (file of files(); track file) {\n <li class=\"flex items-center justify-between gap-2 rounded-control border border-ui-line px-3 py-2\">\n <span class=\"min-w-0 flex-1 truncate\">{{ file.name }} <span class=\"text-ui-sm text-ui-fg-muted\">({{ size(file) }})</span></span>\n <button type=\"button\" class=\"inline-flex h-6 w-6 items-center justify-center rounded-full text-ui-fg-muted hover:bg-ui-surface-3\" aria-label=\"Remover\" (click)=\"remove(file)\">\n <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" aria-hidden=\"true\"><path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" /></svg>\n </button>\n </li>\n }\n </ul>\n }\n `,\n})\nexport class SmzFileUploadComponent {\n public readonly accept = input<string | null | undefined>('');\n public readonly multiple = input(false, { transform: booleanAttribute });\n public readonly disabled = input(false, { transform: booleanAttribute });\n /** Tamanho maximo por arquivo, em bytes. */\n public readonly maxFileSize = input<number | null | undefined>(null);\n public readonly chooseLabel = input('Escolher arquivo');\n public readonly dropLabel = input('ou arraste aqui');\n\n public readonly selected = output<SmzFileSelectEvent>();\n public readonly removed = output<{ file: File }>();\n public readonly rejected = output<SmzFileErrorEvent>();\n\n public readonly files = signal<File[]>([]);\n protected readonly dragging = signal(false);\n private readonly fileInput = viewChild.required<ElementRef<HTMLInputElement>>('picker');\n\n /** Limpa a lista (equivale a `clear()` do `p-fileupload`). */\n public clear(): void {\n this.files.set([]);\n this.fileInput().nativeElement.value = '';\n }\n\n protected onPick(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.add(Array.from(target.files ?? []), event);\n target.value = '';\n }\n\n protected onDragOver(event: DragEvent): void {\n if (this.disabled()) return;\n event.preventDefault();\n this.dragging.set(true);\n }\n\n protected onDrop(event: DragEvent): void {\n event.preventDefault();\n this.dragging.set(false);\n if (this.disabled()) return;\n this.add(Array.from(event.dataTransfer?.files ?? []), event);\n }\n\n protected remove(file: File): void {\n this.files.update((list) => list.filter((entry) => entry !== file));\n this.removed.emit({ file });\n }\n\n protected size(file: File): string {\n return file.size < 1024 * 1024 ? `${Math.max(1, Math.round(file.size / 1024))} KB` : `${(file.size / 1024 / 1024).toFixed(1)} MB`;\n }\n\n private add(incoming: File[], event: Event): void {\n const accepted: File[] = [];\n for (const file of incoming) {\n if (!this.matchesAccept(file)) this.rejected.emit({ file, reason: 'type' });\n else if (this.maxFileSize() != null && file.size > (this.maxFileSize() as number)) this.rejected.emit({ file, reason: 'size' });\n else accepted.push(file);\n }\n if (accepted.length === 0) return;\n const next = this.multiple() ? [...this.files(), ...accepted] : [accepted[0]];\n this.files.set(next);\n this.selected.emit({ files: next, originalEvent: event });\n }\n\n private matchesAccept(file: File): boolean {\n const accept = (this.accept() ?? '').trim();\n if (!accept) return true;\n return accept.split(',').map((rule) => rule.trim().toLowerCase()).some((rule) => {\n if (rule.startsWith('.')) return file.name.toLowerCase().endsWith(rule);\n if (rule.endsWith('/*')) return file.type.toLowerCase().startsWith(rule.slice(0, -1));\n return file.type.toLowerCase() === rule;\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["POSITIONS","SEVERITY_TONE","normalize"],"mappings":"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"}
1
+ {"version":3,"file":"ngx-smz-ui-kit.mjs","sources":["../../../projects/ngx-smz-ui-kit/src/lib/core/variants.ts","../../../projects/ngx-smz-ui-kit/src/lib/core/severity.ts","../../../projects/ngx-smz-ui-kit/src/lib/core/value-accessor.ts","../../../projects/ngx-smz-ui-kit/src/lib/core/template.directive.ts","../../../projects/ngx-smz-ui-kit/src/lib/types/filter.ts","../../../projects/ngx-smz-ui-kit/src/lib/core/merge.ts","../../../projects/ngx-smz-ui-kit/src/lib/button/button.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/tooltip/tooltip.directive.ts","../../../projects/ngx-smz-ui-kit/src/lib/ripple/ripple.directive.ts","../../../projects/ngx-smz-ui-kit/src/lib/input/input.directives.ts","../../../projects/ngx-smz-ui-kit/src/lib/checkbox/checkbox.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/radio-button/radio-button.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/toggle-switch/toggle-switch.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/badge/badge.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/tag/tag.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/divider/divider.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/skeleton/skeleton.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/progress-bar/progress-bar.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/message/message.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/icon/icon.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/badge/badge.directive.ts","../../../projects/ngx-smz-ui-kit/src/lib/core/object-utils.ts","../../../projects/ngx-smz-ui-kit/src/lib/core/zindex.ts","../../../projects/ngx-smz-ui-kit/src/lib/core/dom-handler.ts","../../../projects/ngx-smz-ui-kit/src/lib/core/autofocus.directive.ts","../../../projects/ngx-smz-ui-kit/src/lib/dialog/dialog-ref.ts","../../../projects/ngx-smz-ui-kit/src/lib/dialog/dialog-size.ts","../../../projects/ngx-smz-ui-kit/src/lib/dialog/dialog-frame.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/dialog/dialog.service.ts","../../../projects/ngx-smz-ui-kit/src/lib/dialog/dialog.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/popover/popover.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/drawer/drawer.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/toast/message.service.ts","../../../projects/ngx-smz-ui-kit/src/lib/toast/toast.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/menu/menu.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/block-ui/block-ui.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/toolbar/toolbar.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/core/anchored-panel.ts","../../../projects/ngx-smz-ui-kit/src/lib/core/option-utils.ts","../../../projects/ngx-smz-ui-kit/src/lib/select/select.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/select/multi-select.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/select-button/select-button.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/listbox/listbox.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/icon-field/icon-field.components.ts","../../../projects/ngx-smz-ui-kit/src/lib/core/locale.service.ts","../../../projects/ngx-smz-ui-kit/src/lib/input-number/input-number.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/date-picker/date-utils.ts","../../../projects/ngx-smz-ui-kit/src/lib/date-picker/date-picker.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/auto-complete/auto-complete.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/input-mask/input-mask.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/password/password.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/color-picker/color-picker.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/tabs/tabs.components.ts","../../../projects/ngx-smz-ui-kit/src/lib/accordion/accordion.components.ts","../../../projects/ngx-smz-ui-kit/src/lib/timeline/timeline.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/style-class/style-class.directive.ts","../../../projects/ngx-smz-ui-kit/src/lib/paginator/paginator.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/data-view/data-view.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/pick-list/pick-list.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/core/filter.service.ts","../../../projects/ngx-smz-ui-kit/src/lib/tree/tree.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/tree-select/tree-select.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/theme/theme.service.ts","../../../projects/ngx-smz-ui-kit/src/lib/card/card.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/panel/panel.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/progress-spinner/progress-spinner.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/float-label/float-label.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/splitter/splitter.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/tree-table/tree-table.component.ts","../../../projects/ngx-smz-ui-kit/src/lib/confirm/confirmation.service.ts","../../../projects/ngx-smz-ui-kit/src/lib/file-upload/file-upload.component.ts","../../../projects/ngx-smz-ui-kit/src/ngx-smz-ui-kit.ts"],"sourcesContent":["export type SmzClassValue = string | false | null | undefined;\n\ntype VariantGroups = Record<string, Record<string, string>>;\n\nexport type SmzVariantProps<V extends VariantGroups> = {\n [K in keyof V]?: keyof V[K] & string;\n};\n\nexport interface SmzVariantsConfig<V extends VariantGroups> {\n /** Classes aplicadas sempre. */\n base: string;\n /** Grupos de variantes mutuamente exclusivos (ex.: size, severity). */\n variants: V;\n /** Valor usado quando a prop nao e informada. */\n defaults?: SmzVariantProps<V>;\n /** Classes que dependem da combinacao de duas ou mais variantes. */\n compound?: Array<{ when: SmzVariantProps<V>; class: string }>;\n}\n\nexport function smzCx(...parts: SmzClassValue[]): string {\n return parts.filter(Boolean).join(' ');\n}\n\n/**\n * Combina classes por variante. As strings de classe devem ser literais completas\n * (nunca montadas por concatenacao), senao o Tailwind nao as encontra no scan.\n * Nao resolve conflitos entre utilitarios: mantenha as variantes mutuamente exclusivas.\n */\nexport function smzVariants<V extends VariantGroups>(\n config: SmzVariantsConfig<V>,\n): (props?: SmzVariantProps<V>) => string {\n return (props = {}) => {\n const resolved: Record<string, string | undefined> = { ...config.defaults, ...stripUndefined(props) };\n\n const fromGroups = Object.keys(config.variants).map((group) => {\n const value = resolved[group];\n return value === undefined ? undefined : config.variants[group]?.[value];\n });\n\n const fromCompound = (config.compound ?? [])\n .filter((rule) => Object.entries(rule.when).every(([group, value]) => resolved[group] === value))\n .map((rule) => rule.class);\n\n return smzCx(config.base, ...fromGroups, ...fromCompound);\n };\n}\n\nfunction stripUndefined<T extends object>(value: T): Partial<T> {\n return Object.fromEntries(Object.entries(value).filter(([, v]) => v !== undefined)) as Partial<T>;\n}\n","export type SmzSeverity = 'primary' | 'secondary' | 'success' | 'warning' | 'danger';\r\n\r\n/** Severidades do vocabulario antigo (PrimeNG), aceitas por compatibilidade. */\r\nexport type SmzLegacySeverity = 'info' | 'warn' | 'error' | 'help' | 'contrast';\r\n\r\nconst LEGACY: Record<SmzLegacySeverity, SmzSeverity> = {\r\n info: 'primary',\r\n warn: 'warning',\r\n error: 'danger',\r\n help: 'secondary',\r\n contrast: 'secondary',\r\n};\r\n\r\nexport function smzNormalizeSeverity(value: string | null | undefined, fallback: SmzSeverity = 'primary'): SmzSeverity {\r\n if (!value) return fallback;\r\n if (value in LEGACY) return LEGACY[value as SmzLegacySeverity];\r\n return (value in SMZ_SOLID_TONE ? value : fallback) as SmzSeverity;\r\n}\r\n\r\n/** Fundo solido por severidade (badge, tag). Strings literais para o Tailwind encontrar no scan. */\r\nexport const SMZ_SOLID_TONE: Record<SmzSeverity, string> = {\r\n primary: 'bg-ui-primary text-ui-on-primary',\r\n secondary: 'bg-ui-surface-3 text-ui-fg',\r\n success: 'bg-ui-success text-ui-on-success',\r\n warning: 'bg-ui-warning text-ui-on-warning',\r\n danger: 'bg-ui-danger text-ui-on-danger',\r\n};\r\n\r\n/** Fundo suave com borda por severidade (message). */\r\nexport const SMZ_SOFT_TONE: Record<SmzSeverity, string> = {\r\n primary: 'border-ui-primary/30 bg-ui-primary/10 text-ui-primary',\r\n secondary: 'border-ui-line bg-ui-surface-3 text-ui-fg',\r\n success: 'border-ui-success/30 bg-ui-success/10 text-ui-success',\r\n warning: 'border-ui-warning/40 bg-ui-warning/10 text-ui-warning',\r\n danger: 'border-ui-danger/30 bg-ui-danger/10 text-ui-danger',\r\n};\r\n","import { Directive, booleanAttribute, computed, input, signal } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\n\n/**\n * Base de ControlValueAccessor para os controles de formulario do ui-kit.\n * O componente concreto deve registrar NG_VALUE_ACCESSOR em `providers`.\n * Fornece a entrada `disabled` e o estado combinado `isDisabled` (entrada ou desabilitado pelo formulario).\n */\n@Directive()\nexport abstract class SmzValueAccessor<T> implements ControlValueAccessor {\n public readonly current = signal<T | null>(null);\n public readonly disabled = input(false, { transform: booleanAttribute });\n\n protected readonly formDisabled = signal(false);\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled());\n\n private onChange: (value: T | null) => void = () => undefined;\n private onTouched: () => void = () => undefined;\n\n public writeValue(value: T | null): void {\n this.current.set(value);\n }\n\n public registerOnChange(fn: (value: T | null) => void): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled);\n }\n\n protected commit(value: T | null): void {\n this.current.set(value);\n this.onChange(value);\n }\n\n protected touch(): void {\n this.onTouched();\n }\n}\n","import { Directive, TemplateRef, inject, input } from '@angular/core';\n\n/**\n * Substitui o `pTemplate` do PrimeNG: marca um `ng-template` com um nome para o componente\n * hospedeiro localizar via `contentChildren(SmzTemplateDirective)`.\n *\n * <ng-template smzTemplate=\"header\">...</ng-template>\n */\n@Directive({\n selector: 'ng-template[smzTemplate]',\n})\nexport class SmzTemplateDirective {\n public readonly template = inject<TemplateRef<unknown>>(TemplateRef);\n public readonly name = input.required<string>({ alias: 'smzTemplate' });\n\n /** Compatibilidade com `PrimeTemplate.getType()`. */\n public getType(): string {\n return this.name();\n }\n}\n\nexport function smzFindTemplate(\n templates: readonly SmzTemplateDirective[],\n name: string,\n): TemplateRef<unknown> | undefined {\n return templates.find((item) => item.name() === name)?.template;\n}\n","/** Substitui o `FilterMatchMode` do PrimeNG. Os valores sao os mesmos para facilitar a migracao. */\nexport const SmzFilterMatchMode = {\n STARTS_WITH: 'startsWith',\n CONTAINS: 'contains',\n NOT_CONTAINS: 'notContains',\n ENDS_WITH: 'endsWith',\n EQUALS: 'equals',\n NOT_EQUALS: 'notEquals',\n IN: 'in',\n LESS_THAN: 'lt',\n LESS_THAN_OR_EQUAL_TO: 'lte',\n GREATER_THAN: 'gt',\n GREATER_THAN_OR_EQUAL_TO: 'gte',\n BETWEEN: 'between',\n IS: 'is',\n IS_NOT: 'isNot',\n BEFORE: 'before',\n AFTER: 'after',\n DATE_IS: 'dateIs',\n DATE_IS_NOT: 'dateIsNot',\n DATE_BEFORE: 'dateBefore',\n DATE_AFTER: 'dateAfter',\n} as const;\n\nexport type SmzFilterMatchModeValue = (typeof SmzFilterMatchMode)[keyof typeof SmzFilterMatchMode];\n\n/** Substitui o `FilterOperator` do PrimeNG. */\nexport const SmzFilterOperator = {\n AND: 'and',\n OR: 'or',\n} as const;\n\nexport type SmzFilterOperatorValue = (typeof SmzFilterOperator)[keyof typeof SmzFilterOperator];\n\n/** Substitui o `FilterMetadata` do PrimeNG. */\nexport interface SmzFilterMetadata {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- valor livre do filtro\n value?: any;\n matchMode?: SmzFilterMatchModeValue | string;\n operator?: SmzFilterOperatorValue | string;\n}\n","import { HostAttributeToken, inject } from '@angular/core';\r\n\r\n/**\r\n * Mini \"tailwind-merge\": resolve conflitos entre as classes base de um componente e as classes que o\r\n * consumidor passou (padding, altura, arredondamento, gap). Considera apenas tokens sem variante (sem \":\").\r\n * O Tailwind nao garante a ordem entre `px-3` e `px-control-x`, entao a resolucao precisa ser explicita.\r\n */\r\nconst SINGLE_GROUPS: Array<{ name: string; test: RegExp }> = [\r\n { name: 'h', test: /^h-/ },\r\n { name: 'min-h', test: /^min-h-/ },\r\n { name: 'rounded', test: /^rounded(-|$)/ },\r\n { name: 'gap', test: /^gap-/ },\r\n];\r\n\r\nfunction tokensOf(value: string | null | undefined): string[] {\r\n return (value ?? '').split(/\\s+/).filter(Boolean);\r\n}\r\n\r\n/**\r\n * Utilitario de padding de verdade (`p-4`, `px-[3px]`, `pl-px`, `px-input-x`), e nao uma classe qualquer que\r\n * so comeca com \"p-\" (`p-col-12`, `p-column-filter`, ...), que nao pode remover o padding base do componente.\r\n */\r\nconst PADDING_UTILITY = /^p([xytblrse]?)-(?:\\d|\\[|px$|auto$|input-|control-)/;\r\n\r\nfunction isPadding(token: string, sides: string[]): boolean {\r\n const match = PADDING_UTILITY.exec(token);\r\n return match !== null && sides.includes(`p${match[1]}`);\r\n}\r\n\r\nfunction hasPadding(tokens: string[], sides: string[]): boolean {\r\n return tokens.some((token) => isPadding(token, sides));\r\n}\r\n\r\n/** Resolve o padding de um eixo (x ou y) quando o consumidor sobrescreve so um lado. */\r\nfunction resolveAxis(token: string, axis: 'x' | 'y', extra: string[]): string | null | undefined {\r\n const all = hasPadding(extra, ['p']);\r\n const both = hasPadding(extra, [`p${axis}`]);\r\n const sides = axis === 'x' ? ['pl', 'ps'] : ['pt'];\r\n const otherSides = axis === 'x' ? ['pr', 'pe'] : ['pb'];\r\n const first = hasPadding(extra, sides);\r\n const second = hasPadding(extra, otherSides);\r\n const value = token.slice(3);\r\n\r\n if (all || both || (first && second)) return null;\r\n if (first) return `${axis === 'x' ? 'pr' : 'pb'}-${value}`;\r\n if (second) return `${axis === 'x' ? 'pl' : 'pt'}-${value}`;\r\n return undefined;\r\n}\r\n\r\nexport function smzMergeClasses(base: string, overrides: string | null | undefined): string {\r\n const extra = tokensOf(overrides).filter((token) => !token.includes(':'));\r\n const allExtra = tokensOf(overrides);\r\n if (allExtra.length === 0) return base;\r\n\r\n const kept: string[] = [];\r\n for (const token of tokensOf(base)) {\r\n if (token.includes(':') || token.startsWith('!')) {\r\n kept.push(token);\r\n continue;\r\n }\r\n\r\n if (token.startsWith('px-') || token.startsWith('py-')) {\r\n const resolved = resolveAxis(token, token.startsWith('px-') ? 'x' : 'y', extra);\r\n if (resolved === undefined) kept.push(token);\r\n else if (resolved !== null) kept.push(resolved);\r\n continue;\r\n }\r\n\r\n const group = SINGLE_GROUPS.find((entry) => entry.test.test(token));\r\n if (group && extra.some((candidate) => group.test.test(candidate))) continue;\r\n kept.push(token);\r\n }\r\n\r\n return [...kept, ...allExtra].join(' ');\r\n}\r\n\r\n/** Le a classe estatica do elemento hospedeiro (`class=\"...\"`), para mescla-la com as classes do componente. */\r\nexport function smzStaticHostClass(): string {\r\n return inject(new HostAttributeToken('class'), { optional: true }) ?? '';\r\n}\r\n","import { ChangeDetectionStrategy, Component, booleanAttribute, computed, input } from '@angular/core';\r\nimport { smzMergeClasses, smzStaticHostClass } from '../core/merge';\r\nimport { smzVariants } from '../core/variants';\r\n\r\nexport type SmzButtonSeverity = 'primary' | 'secondary' | 'danger' | 'success' | 'warning';\r\nexport type SmzButtonVariant = 'solid' | 'outlined' | 'text';\r\nexport type SmzButtonSize = 'sm' | 'md' | 'lg';\r\nexport type SmzButtonIconPosition = 'left' | 'right';\r\n\r\n/** Severidades aceitas por compatibilidade com o vocabulario antigo (PrimeNG). */\r\nexport type SmzButtonLegacySeverity = 'info' | 'warn' | 'help' | 'error' | 'contrast' | 'plain' | 'ghost';\r\n\r\nconst LEGACY_SEVERITY: Record<SmzButtonLegacySeverity, { severity: SmzButtonSeverity; variant?: SmzButtonVariant }> = {\r\n info: { severity: 'primary' },\r\n warn: { severity: 'warning' },\r\n help: { severity: 'secondary' },\r\n error: { severity: 'danger' },\r\n contrast: { severity: 'secondary' },\r\n plain: { severity: 'secondary', variant: 'text' },\r\n ghost: { severity: 'secondary', variant: 'text' },\r\n};\r\n\r\nconst SEVERITIES: SmzButtonSeverity[] = ['primary', 'secondary', 'danger', 'success', 'warning'];\r\n\r\ninterface ParsedStyleClass {\r\n severity?: SmzButtonSeverity;\r\n variant?: SmzButtonVariant;\r\n size?: SmzButtonSize;\r\n rounded?: boolean;\r\n extra: string;\r\n}\r\n\r\n/**\r\n * Interpreta strings de classe no vocabulario antigo (`p-button-outlined p-button-sm px-3`).\r\n * Tokens `p-button-*` viram props; os demais seguem como classes extras.\r\n */\r\nexport type SmzStyleClass = string | SmzStyleClass[] | Record<string, unknown> | null | undefined;\r\n\r\nexport function smzNormalizeStyleClass(value: SmzStyleClass): string {\r\n if (!value) return '';\r\n if (typeof value === 'string') return value;\r\n if (Array.isArray(value)) return value.map((entry) => smzNormalizeStyleClass(entry)).filter(Boolean).join(' ');\r\n return Object.entries(value).filter(([, enabled]) => !!enabled).map(([name]) => name).join(' ');\r\n}\r\n\r\nexport function smzParseButtonStyleClass(styleClass: SmzStyleClass): ParsedStyleClass {\r\n const parsed: ParsedStyleClass = { extra: '' };\r\n const extra: string[] = [];\r\n\r\n for (const token of smzNormalizeStyleClass(styleClass).split(/\\s+/).filter(Boolean)) {\r\n if (token === 'p-button' || token === 'p-button-icon-only' || token === 'p-button-raised') continue;\r\n if (!token.startsWith('p-button-')) {\r\n extra.push(token);\r\n continue;\r\n }\r\n\r\n const name = token.slice('p-button-'.length);\r\n if (name === 'text' || name === 'link') parsed.variant = 'text';\r\n else if (name === 'outlined') parsed.variant = 'outlined';\r\n else if (name === 'rounded') parsed.rounded = true;\r\n else if (name === 'sm' || name === 'small') parsed.size = 'sm';\r\n else if (name === 'lg' || name === 'large') parsed.size = 'lg';\r\n else if (SEVERITIES.includes(name as SmzButtonSeverity)) parsed.severity = name as SmzButtonSeverity;\r\n else if (name in LEGACY_SEVERITY) {\r\n const legacy = LEGACY_SEVERITY[name as SmzButtonLegacySeverity];\r\n parsed.severity = legacy.severity;\r\n if (legacy.variant) parsed.variant = parsed.variant ?? legacy.variant;\r\n }\r\n }\r\n\r\n parsed.extra = extra.join(' ');\r\n return parsed;\r\n}\r\n\r\nconst buttonClasses = smzVariants({\r\n base:\r\n 'inline-flex items-center justify-center gap-2 border font-ui font-medium whitespace-nowrap select-none cursor-pointer ' +\r\n 'transition-colors duration-ui ' +\r\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus ' +\r\n 'disabled:opacity-50 disabled:pointer-events-none',\r\n variants: {\r\n size: {\r\n sm: 'h-control-sm px-control-x-sm text-ui-sm',\r\n md: 'h-control px-control-x text-ui-md',\r\n lg: 'h-control-lg px-control-x-lg text-ui-lg',\r\n },\r\n variant: { solid: 'border-transparent', outlined: '', text: 'border-transparent' },\r\n severity: { primary: '', secondary: '', danger: '', success: '', warning: '' },\r\n rounded: { true: 'rounded-full', false: 'rounded-control' },\r\n loading: { true: 'pointer-events-none opacity-75', false: '' },\r\n iconOnly: { true: 'aspect-square !px-0', false: '' },\r\n },\r\n defaults: { size: 'md', variant: 'solid', severity: 'primary', rounded: 'false', loading: 'false', iconOnly: 'false' },\r\n compound: [\r\n { when: { iconOnly: 'true', size: 'sm' }, class: 'w-[var(--smz-control-h-sm)]' },\n { when: { iconOnly: 'true', size: 'md' }, class: 'w-[var(--smz-control-h)]' },\n { when: { iconOnly: 'true', size: 'lg' }, class: 'w-[var(--smz-control-h-lg)]' },\n { when: { variant: 'solid', severity: 'primary' }, class: 'bg-ui-primary text-ui-on-primary hover:bg-ui-primary-hover active:bg-ui-primary-active' },\r\n { when: { variant: 'solid', severity: 'secondary' }, class: 'bg-ui-surface-3 text-ui-fg hover:bg-ui-line active:bg-ui-line-strong' },\r\n { when: { variant: 'solid', severity: 'danger' }, class: 'bg-ui-danger text-ui-on-danger hover:bg-ui-danger-hover active:bg-ui-danger-active' },\r\n { when: { variant: 'solid', severity: 'success' }, class: 'bg-ui-success text-ui-on-success hover:bg-ui-success-hover active:bg-ui-success-active' },\r\n { when: { variant: 'solid', severity: 'warning' }, class: 'bg-ui-warning text-ui-on-warning hover:bg-ui-warning-hover active:bg-ui-warning-active' },\r\n\r\n { when: { variant: 'outlined', severity: 'primary' }, class: 'border-ui-primary text-ui-primary hover:bg-ui-primary/10' },\r\n { when: { variant: 'outlined', severity: 'secondary' }, class: 'border-ui-line-strong text-ui-fg hover:bg-ui-surface-3' },\r\n { when: { variant: 'outlined', severity: 'danger' }, class: 'border-ui-danger text-ui-danger hover:bg-ui-danger/10' },\r\n { when: { variant: 'outlined', severity: 'success' }, class: 'border-ui-success text-ui-success hover:bg-ui-success/10' },\r\n { when: { variant: 'outlined', severity: 'warning' }, class: 'border-ui-warning text-ui-warning hover:bg-ui-warning/10' },\r\n\r\n { when: { variant: 'text', severity: 'primary' }, class: 'text-ui-primary hover:bg-ui-primary/10' },\r\n { when: { variant: 'text', severity: 'secondary' }, class: 'text-ui-fg hover:bg-ui-surface-3' },\r\n { when: { variant: 'text', severity: 'danger' }, class: 'text-ui-danger hover:bg-ui-danger/10' },\r\n { when: { variant: 'text', severity: 'success' }, class: 'text-ui-success hover:bg-ui-success/10' },\r\n { when: { variant: 'text', severity: 'warning' }, class: 'text-ui-warning hover:bg-ui-warning/10' },\r\n ],\r\n});\r\n\r\n/**\r\n * Botao do ui-kit. Substitui o `pButton` / `p-button` do PrimeNG.\r\n *\r\n * <button smzButton label=\"Excluir\" icon=\"fa-solid fa-trash\" severity=\"danger\" variant=\"outlined\"></button>\r\n *\r\n * `styleClass` aceita o vocabulario antigo (`p-button-outlined p-button-sm`) alem de classes livres.\r\n */\r\n@Component({\r\n selector: 'button[smzButton], a[smzButton]',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class]': 'classes()',\r\n '[attr.aria-busy]': 'loading() || null',\r\n },\r\n template: `\r\n @if (loading()) {\r\n <svg class=\"h-4 w-4 animate-spin\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\r\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"3\" class=\"opacity-25\" />\r\n <path d=\"M21 12a9 9 0 0 0-9-9\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" />\r\n </svg>\r\n }\r\n @else if (icon() && iconPosition() === 'left') {\r\n <i [class]=\"icon()\" aria-hidden=\"true\"></i>\r\n }\r\n @if (label()) {\r\n <span>{{ label() }}</span>\r\n }\r\n <ng-content />\r\n @if (icon() && iconPosition() === 'right' && !loading()) {\r\n <i [class]=\"icon()\" aria-hidden=\"true\"></i>\r\n }\r\n `,\r\n})\r\nexport class SmzButtonComponent {\r\n public readonly label = input<string | null | undefined>('');\r\n public readonly icon = input<string | null | undefined>('');\r\n public readonly iconPosition = input<SmzButtonIconPosition>('left');\r\n public readonly severity = input<SmzButtonSeverity | SmzButtonLegacySeverity | null | undefined>(undefined);\r\n public readonly variant = input<SmzButtonVariant | null | undefined>(undefined);\r\n public readonly size = input<SmzButtonSize | null | undefined>(undefined);\r\n /** Atalhos do vocabulario antigo: equivalem a `variant=\"text\"` e `variant=\"outlined\"`. */\r\n public readonly text = input(false, { transform: booleanAttribute });\r\n public readonly outlined = input(false, { transform: booleanAttribute });\r\n public readonly rounded = input(false, { transform: booleanAttribute });\r\n public readonly loading = input(false, { transform: booleanAttribute });\r\n public readonly styleClass = input<SmzStyleClass>('');\r\n\r\n private readonly staticClass = smzStaticHostClass();\r\n\r\n protected readonly classes = computed(() => {\r\n const parsed = smzParseButtonStyleClass(this.styleClass());\r\n\r\n const legacy = this.severity() && this.severity() in LEGACY_SEVERITY\r\n ? LEGACY_SEVERITY[this.severity() as SmzButtonLegacySeverity]\r\n : undefined;\r\n const severity = (legacy?.severity ?? (this.severity() as SmzButtonSeverity | undefined)) ?? parsed.severity ?? 'primary';\r\n const variant =\r\n this.variant() ??\r\n (this.text() ? 'text' : this.outlined() ? 'outlined' : undefined) ??\r\n parsed.variant ??\r\n legacy?.variant ??\r\n 'solid';\r\n\r\n const base = buttonClasses({\r\n severity,\r\n variant,\r\n size: this.size() ?? parsed.size ?? 'md',\r\n rounded: String(this.rounded() || !!parsed.rounded) as 'true' | 'false',\r\n loading: String(this.loading()) as 'true' | 'false',\r\n iconOnly: String(!this.label() && !!this.icon()) as 'true' | 'false',\r\n });\r\n\r\n return smzMergeClasses(base, `${parsed.extra} ${this.staticClass}`);\r\n });\r\n}\r\n","import { ConnectedPosition, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n OnDestroy,\n booleanAttribute,\n inject,\n input,\n signal,\n} from '@angular/core';\n\nexport type SmzTooltipPosition = 'top' | 'bottom' | 'left' | 'right';\nexport type SmzTooltipEvent = 'hover' | 'focus' | 'both';\n\nexport interface SmzTooltipOptions {\n tooltipPosition?: SmzTooltipPosition;\n showDelay?: number;\n hideDelay?: number;\n tooltipEvent?: SmzTooltipEvent;\n escape?: boolean;\n tooltipStyleClass?: string;\n tooltipZIndex?: string | number;\n tooltipDisabled?: boolean;\n}\n\nconst OFFSET = 8;\n\nconst POSITIONS: Record<SmzTooltipPosition, ConnectedPosition[]> = {\n top: [\n { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: -OFFSET },\n { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: OFFSET },\n ],\n bottom: [\n { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: OFFSET },\n { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: -OFFSET },\n ],\n left: [\n { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -OFFSET },\n { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: OFFSET },\n ],\n right: [\n { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: OFFSET },\n { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -OFFSET },\n ],\n};\n\n@Component({\n selector: 'ui-tooltip',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (escape()) {\n <div role=\"tooltip\" [class]=\"classes\">{{ text() }}</div>\n }\n @else {\n <div role=\"tooltip\" [class]=\"classes\" [innerHTML]=\"text()\"></div>\n }\n `,\n})\nexport class SmzTooltipComponent {\n public readonly text = input.required<string>();\n public readonly escape = input(true);\n protected readonly classes =\n 'max-w-xs rounded-control bg-ui-fg px-2 py-1 font-ui text-ui-xs text-ui-surface-1 shadow-overlay';\n}\n\n/**\n * Tooltip do ui-kit. Substitui o `pTooltip` do PrimeNG.\n * Requer o CSS do CDK Overlay no app (`@angular/cdk/overlay-prebuilt.css`).\n *\n * <button smzButton smzTooltip=\"Salvar\" tooltipPosition=\"bottom\">...</button>\n */\n@Directive({\n selector: '[smzTooltip]',\n host: {\n '(mouseenter)': 'onEnter(\\'hover\\')',\n '(mouseleave)': 'onLeave(\\'hover\\')',\n '(focusin)': 'onEnter(\\'focus\\')',\n '(focusout)': 'onLeave(\\'focus\\')',\n '(keydown.escape)': 'hide()',\n },\n})\nexport class SmzTooltipDirective implements OnDestroy {\n public readonly text = input<string | null | undefined>('', { alias: 'smzTooltip' });\n public readonly tooltipPosition = input<SmzTooltipPosition>('top');\n public readonly showDelay = input(300);\n public readonly hideDelay = input(0);\n public readonly tooltipEvent = input<SmzTooltipEvent>('hover');\n public readonly escape = input(true, { transform: booleanAttribute });\n public readonly tooltipStyleClass = input<string>('');\n public readonly tooltipZIndex = input<string | number>('');\n public readonly tooltipDisabled = input(false, { transform: booleanAttribute });\n /** Opcoes agrupadas (compatibilidade com `tooltipOptions` do PrimeNG). Sobrescrevem os inputs individuais. */\n public readonly tooltipOptions = input<SmzTooltipOptions | null | undefined>(undefined);\n /** Aceito por compatibilidade; o overlay do CDK ja e anexado ao body. */\n public readonly appendTo = input<unknown>(undefined);\n\n private readonly overrides = signal<SmzTooltipOptions>({});\n private readonly overlay = inject(Overlay);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private overlayRef?: OverlayRef;\n private showTimer?: ReturnType<typeof setTimeout>;\n private hideTimer?: ReturnType<typeof setTimeout>;\n\n /** Ajuste programatico de opcoes (usado por diretivas que envolvem o tooltip). */\n public configure(options: SmzTooltipOptions): void {\n this.overrides.update((current) => ({ ...current, ...options }));\n }\n\n public onEnter(source: 'hover' | 'focus'): void {\n if (!this.accepts(source)) return;\n this.show();\n }\n\n public onLeave(source: 'hover' | 'focus'): void {\n if (!this.accepts(source)) return;\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n const delay = this.option('hideDelay');\n if (delay > 0) this.hideTimer = setTimeout(() => this.hide(), delay);\n else this.hide();\n }\n\n public show(): void {\n const text = this.text();\n if (this.option('tooltipDisabled') || !text) return;\n clearTimeout(this.hideTimer);\n if (this.overlayRef) return;\n\n clearTimeout(this.showTimer);\n this.showTimer = setTimeout(() => this.open(text), this.option('showDelay'));\n }\n\n public hide(): void {\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n this.overlayRef?.dispose();\n this.overlayRef = undefined;\n }\n\n public ngOnDestroy(): void {\n this.hide();\n }\n\n private accepts(source: 'hover' | 'focus'): boolean {\n const event = this.option('tooltipEvent');\n return event === 'both' || event === source;\n }\n\n private option<K extends keyof SmzTooltipOptions>(key: K): NonNullable<SmzTooltipOptions[K]> {\n const fromInputs: Required<SmzTooltipOptions> = {\n tooltipPosition: this.tooltipPosition(),\n showDelay: this.showDelay(),\n hideDelay: this.hideDelay(),\n tooltipEvent: this.tooltipEvent(),\n escape: this.escape(),\n tooltipStyleClass: this.tooltipStyleClass(),\n tooltipZIndex: this.tooltipZIndex(),\n tooltipDisabled: this.tooltipDisabled(),\n };\n const merged = { ...fromInputs, ...(this.tooltipOptions() ?? {}), ...this.overrides() };\n return merged[key] as NonNullable<SmzTooltipOptions[K]>;\n }\n\n private open(text: string): void {\n this.overlayRef = this.overlay.create({\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.host)\n .withPositions(POSITIONS[this.option('tooltipPosition')])\n .withPush(true),\n scrollStrategy: this.overlay.scrollStrategies.close(),\n });\n\n const zIndex = this.option('tooltipZIndex');\n if (zIndex !== '') this.overlayRef.hostElement.style.zIndex = String(zIndex);\n\n const ref = this.overlayRef.attach(new ComponentPortal(SmzTooltipComponent));\n ref.setInput('text', text);\n ref.setInput('escape', this.option('escape'));\n }\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\n\n/**\n * Efeito ripple. Substitui o `pRipple` do PrimeNG.\n * Usa a Web Animations API, entao nao depende de CSS/keyframes.\n */\n@Directive({\n selector: '[smzRipple]',\n host: {\n class: 'relative overflow-hidden',\n '(pointerdown)': 'ripple($event)',\n },\n})\nexport class SmzRippleDirective {\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n protected ripple(event: PointerEvent): void {\n const element = this.host.nativeElement;\n const rect = element.getBoundingClientRect();\n const size = Math.max(rect.width, rect.height) * 2;\n\n const wave = document.createElement('span');\n wave.className = 'pointer-events-none absolute rounded-full bg-current';\n wave.style.width = `${size}px`;\n wave.style.height = `${size}px`;\n wave.style.left = `${event.clientX - rect.left - size / 2}px`;\n wave.style.top = `${event.clientY - rect.top - size / 2}px`;\n element.appendChild(wave);\n\n const animation = wave.animate(\n [\n { transform: 'scale(0)', opacity: 0.25 },\n { transform: 'scale(1)', opacity: 0 },\n ],\n { duration: 500, easing: 'ease-out' },\n );\n animation.onfinish = (): void => wave.remove();\n }\n}\n","import { Directive, ElementRef, afterEveryRender, booleanAttribute, computed, inject, input } from '@angular/core';\nimport { smzMergeClasses, smzStaticHostClass } from '../core/merge';\nimport { smzVariants } from '../core/variants';\n\nexport type SmzInputSize = 'sm' | 'md' | 'lg';\n\nconst base =\n 'w-full border bg-ui-surface-1 font-ui text-ui-fg placeholder:text-ui-fg-subtle transition-colors duration-ui ' +\n 'focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger';\n\nconst invalidVariant = { true: 'border-ui-danger', false: 'border-ui-line-strong' };\n\nconst inputClasses = smzVariants({\n base: `${base} rounded-control`,\n variants: {\n size: {\n sm: 'h-control-sm px-input-x-sm text-ui-sm',\n md: 'h-control px-input-x text-ui-md',\n lg: 'h-control-lg px-input-x-lg text-ui-lg',\n },\n invalid: invalidVariant,\n },\n defaults: { size: 'md', invalid: 'false' },\n});\n\nconst textareaClasses = smzVariants({\n base: `${base} min-h-control rounded-control px-input-x py-2 text-ui-md`,\n variants: { invalid: invalidVariant },\n defaults: { invalid: 'false' },\n});\n\n/** Campo de texto. Substitui o `pInputText` do PrimeNG. */\n@Directive({\n selector: 'input[smzInputText]',\n host: { '[class]': 'classes()', '[attr.aria-invalid]': 'invalid() || null' },\n})\nexport class SmzInputTextDirective {\n public readonly size = input<SmzInputSize>('md');\n public readonly invalid = input(false, { transform: booleanAttribute });\n\n private readonly staticClass = smzStaticHostClass();\n\n protected readonly classes = computed(() =>\n smzMergeClasses(\n inputClasses({ size: this.size(), invalid: String(this.invalid()) as 'true' | 'false' }),\n this.staticClass,\n ),\n );\n}\n\n/** Area de texto. Substitui o `pTextarea` / `pInputTextarea` do PrimeNG. */\n@Directive({\n selector: 'textarea[smzTextarea]',\n host: { '[class]': 'classes()', '[attr.aria-invalid]': 'invalid() || null', '(input)': 'resize()' },\n})\nexport class SmzTextareaDirective {\n public readonly invalid = input(false, { transform: booleanAttribute });\n /** Cresce com o conteudo (equivale ao `autoResize` do `pTextarea`). */\n public readonly autoResize = input(false, { transform: booleanAttribute });\n\n private readonly el = inject<ElementRef<HTMLTextAreaElement>>(ElementRef);\n\n constructor() {\n afterEveryRender(() => this.resize());\n }\n\n protected resize(): void {\n if (!this.autoResize()) return;\n const textarea = this.el.nativeElement;\n textarea.style.overflow = 'hidden';\n textarea.style.height = 'auto';\n textarea.style.height = `${textarea.scrollHeight}px`;\n }\n\n private readonly staticClass = smzStaticHostClass();\n\n protected readonly classes = computed(() =>\n smzMergeClasses(textareaClasses({ invalid: String(this.invalid()) as 'true' | 'false' }), this.staticClass),\n );\n}\n","import { ChangeDetectionStrategy, Component, booleanAttribute, computed, forwardRef, input, output } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { SmzValueAccessor } from '../core/value-accessor';\r\n\r\n/**\r\n * Checkbox do ui-kit. Substitui o `p-checkbox` do PrimeNG.\r\n *\r\n * - Booleano: `<ui-checkbox formControlName=\"ativo\" label=\"Ativo\" />`\r\n * - Grupo (modelo e um array): `<ui-checkbox formControlName=\"itens\" value=\"a\" label=\"A\" />`\r\n */\r\n@Component({\r\n selector: 'ui-checkbox',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzCheckboxComponent), multi: true }],\r\n host: { class: 'inline-flex' },\r\n template: `\r\n <label\r\n class=\"inline-flex items-center gap-2 font-ui text-ui-md text-ui-fg\"\r\n [class]=\"isDisabled() ? 'cursor-not-allowed opacity-50' : 'cursor-pointer'\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"peer sr-only\"\r\n [attr.id]=\"inputId() || null\"\r\n [name]=\"name()\"\r\n [checked]=\"checked()\"\r\n [disabled]=\"isDisabled()\"\r\n (change)=\"toggle()\"\r\n (blur)=\"touch()\"\r\n />\r\n <span\r\n class=\"inline-flex h-5 w-5 items-center justify-center rounded border transition-colors duration-ui peer-focus-visible:ring-2 peer-focus-visible:ring-ui-focus\"\r\n [class]=\"boxClasses()\"\r\n >\r\n @if (checked()) {\r\n <svg viewBox=\"0 0 16 16\" class=\"h-3.5 w-3.5\" fill=\"none\" aria-hidden=\"true\">\r\n <path d=\"M3 8.5l3.2 3L13 4.5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n }\r\n </span>\r\n @if (label()) {\r\n <span>{{ label() }}</span>\r\n }\r\n <ng-content />\r\n </label>\r\n `,\r\n})\r\nexport class SmzCheckboxComponent extends SmzValueAccessor<unknown> {\r\n public readonly label = input<string | null | undefined>('');\r\n public readonly inputId = input<string | null | undefined>('');\r\n /** Valor deste item quando o modelo e um array (modo grupo). */\r\n public readonly value = input<unknown>(undefined);\r\n /** Forca o modo booleano mesmo com `value` informado. Mantido por compatibilidade com o Prime. */\r\n public readonly binary = input(false, { transform: booleanAttribute });\r\n public readonly name = input<string>('');\r\n public readonly changed = output<{ checked: boolean; value: unknown }>();\r\n\r\n private readonly groupMode = computed(() => this.value() !== undefined && !this.binary());\r\n\r\n protected readonly checked = computed(() => {\r\n const model = this.current();\r\n return this.groupMode() ? Array.isArray(model) && model.includes(this.value()) : !!model;\r\n });\r\n\r\n protected readonly boxClasses = computed(() =>\r\n this.checked()\r\n ? 'border-ui-primary bg-ui-primary text-ui-on-primary'\r\n : 'border-ui-line-strong bg-ui-surface-1 text-transparent',\r\n );\r\n\r\n protected toggle(): void {\r\n if (!this.groupMode()) {\r\n this.commit(!this.checked());\r\n this.changed.emit({ checked: !!this.current(), value: this.current() });\r\n return;\r\n }\r\n\r\n const model = Array.isArray(this.current()) ? (this.current() as unknown[]) : [];\r\n const item = this.value();\r\n this.commit(model.includes(item) ? model.filter((entry) => entry !== item) : [...model, item]);\r\n this.changed.emit({ checked: this.checked(), value: this.current() });\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, DestroyRef, Injector, afterNextRender, computed, forwardRef, inject, input, output } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\r\nimport { SmzValueAccessor } from '../core/value-accessor';\r\n\r\n/**\r\n * Radio do ui-kit. Substitui o `p-radiobutton` do PrimeNG.\r\n * Cada radio do grupo usa o mesmo controle de formulario e o mesmo `name`.\r\n *\r\n * <ui-radio-button formControlName=\"tipo\" name=\"tipo\" value=\"a\" label=\"A\" />\r\n */\r\n@Component({\r\n selector: 'ui-radio-button',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzRadioButtonComponent), multi: true }],\r\n host: { class: 'inline-flex' },\r\n template: `\r\n <label\r\n class=\"inline-flex items-center gap-2 font-ui text-ui-md text-ui-fg\"\r\n [class]=\"isDisabled() ? 'cursor-not-allowed opacity-50' : 'cursor-pointer'\"\r\n >\r\n <input\r\n type=\"radio\"\r\n class=\"peer sr-only\"\r\n [name]=\"name()\"\r\n [checked]=\"checked()\"\r\n [disabled]=\"isDisabled()\"\r\n (change)=\"select()\"\r\n (blur)=\"touch()\"\r\n />\r\n <span\r\n class=\"inline-flex h-5 w-5 items-center justify-center rounded-full border transition-colors duration-ui peer-focus-visible:ring-2 peer-focus-visible:ring-ui-focus\"\r\n [class]=\"checked() ? 'border-ui-primary' : 'border-ui-line-strong bg-ui-surface-1'\"\r\n >\r\n @if (checked()) {\r\n <span class=\"h-2.5 w-2.5 rounded-full bg-ui-primary\"></span>\r\n }\r\n </span>\r\n @if (label()) {\r\n <span>{{ label() }}</span>\r\n }\r\n <ng-content />\r\n </label>\r\n `,\r\n})\r\nexport class SmzRadioButtonComponent extends SmzValueAccessor<unknown> {\r\n private readonly injector = inject(Injector);\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n public readonly value = input<unknown>(undefined);\r\n public readonly name = input<string>('');\r\n public readonly label = input<string | null | undefined>('');\r\n public readonly clicked = output<{ value: unknown }>();\r\n\r\n /**\r\n * Os radios do grupo compartilham o mesmo controle, mas `commit` so atualiza o radio clicado.\r\n * Acompanhar o valor do controle mantem os demais radios sincronizados (desmarcam visualmente).\r\n */\r\n constructor() {\r\n super();\r\n // O controle so e associado a diretiva depois dos hooks do componente; por isso apos a primeira renderizacao.\r\n afterNextRender(() => {\r\n const control = this.injector.get(NgControl, null, { self: true, optional: true })?.control;\r\n control?.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((value: unknown) => this.current.set(value));\r\n });\r\n }\r\n\r\n protected readonly checked = computed(() => this.current() === this.value());\r\n\r\n protected select(): void {\r\n this.commit(this.value());\r\n this.clicked.emit({ value: this.value() });\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, forwardRef, input, output } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { SmzValueAccessor } from '../core/value-accessor';\r\n\r\n/**\r\n * Interruptor. Substitui o `p-toggleswitch` do PrimeNG.\r\n *\r\n * <ui-toggle-switch formControlName=\"ativo\" />\r\n */\r\n@Component({\r\n selector: 'ui-toggle-switch',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzToggleSwitchComponent), multi: true }],\r\n host: { class: 'inline-flex' },\r\n template: `\r\n <button\r\n type=\"button\"\r\n role=\"switch\"\r\n [attr.name]=\"name() || null\"\r\n class=\"relative inline-flex h-6 w-11 items-center rounded-full border border-transparent transition-colors duration-ui\r\n focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50\"\r\n [class]=\"current() ? 'bg-ui-primary' : 'bg-ui-line-strong'\"\r\n [attr.aria-checked]=\"!!current()\"\r\n [disabled]=\"isDisabled()\"\r\n (click)=\"toggle()\"\r\n (blur)=\"touch()\"\r\n >\r\n <span\r\n class=\"inline-block h-5 w-5 rounded-full bg-ui-surface-1 shadow-card transition-transform duration-ui\"\r\n [class]=\"current() ? 'translate-x-5' : 'translate-x-0.5'\"\r\n ></span>\r\n </button>\r\n `,\r\n})\r\nexport class SmzToggleSwitchComponent extends SmzValueAccessor<boolean> {\r\n public readonly name = input<string>('');\r\n public readonly changed = output<{ checked: boolean }>();\r\n\r\n protected toggle(): void {\r\n this.commit(!this.current());\r\n this.changed.emit({ checked: !!this.current() });\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\nimport { SMZ_SOLID_TONE, SmzLegacySeverity, SmzSeverity, smzNormalizeSeverity } from '../core/severity';\r\nimport { smzCx } from '../core/variants';\r\n\r\n/** Contador/etiqueta pequena. Substitui o `p-badge` do PrimeNG. */\r\n@Component({\r\n selector: 'ui-badge',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { '[class]': 'classes()' },\r\n template: '{{ value() }}<ng-content />',\r\n})\r\nexport class SmzBadgeComponent {\r\n public readonly value = input<string | number | null | undefined>('');\r\n public readonly severity = input<SmzSeverity | SmzLegacySeverity | null | undefined>('primary');\r\n\r\n protected readonly classes = computed(() =>\r\n smzCx(\r\n 'inline-flex h-5 min-w-5 items-center justify-center rounded-full px-1.5 font-ui text-ui-xs font-medium',\r\n SMZ_SOLID_TONE[smzNormalizeSeverity(this.severity())],\r\n ),\r\n );\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\nimport { SMZ_SOLID_TONE, SmzLegacySeverity, SmzSeverity, smzNormalizeSeverity } from '../core/severity';\r\nimport { smzCx } from '../core/variants';\r\n\r\n/** Etiqueta de status. Substitui o `p-tag` do PrimeNG. */\r\n@Component({\r\n selector: 'ui-tag',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { '[class]': 'classes()' },\r\n template: `\r\n @if (icon()) {\r\n <i [class]=\"icon()\" aria-hidden=\"true\"></i>\r\n }\r\n {{ value() }}<ng-content />\r\n `,\r\n})\r\nexport class SmzTagComponent {\r\n public readonly value = input<string | number | null | undefined>('');\r\n public readonly severity = input<SmzSeverity | SmzLegacySeverity | null | undefined>('primary');\r\n public readonly icon = input<string | null | undefined>('');\r\n public readonly rounded = input(false);\r\n\r\n protected readonly classes = computed(() =>\r\n smzCx(\r\n 'inline-flex items-center gap-1 px-2 py-0.5 font-ui text-ui-xs font-medium',\r\n this.rounded() ? 'rounded-full' : 'rounded-control',\r\n SMZ_SOLID_TONE[smzNormalizeSeverity(this.severity())],\r\n ),\r\n );\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\n\r\nexport type SmzDividerLayout = 'horizontal' | 'vertical';\r\n\r\n/** Linha separadora. Substitui o `p-divider` do PrimeNG (sem conteudo central). */\r\n@Component({\r\n selector: 'ui-divider',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n role: 'separator',\r\n '[attr.aria-orientation]': 'layout()',\r\n '[class]': 'classes()',\r\n },\r\n template: '',\r\n})\r\nexport class SmzDividerComponent {\r\n public readonly layout = input<SmzDividerLayout>('horizontal');\r\n\r\n protected readonly classes = computed(() =>\r\n this.layout() === 'vertical'\r\n ? 'mx-3 block w-px self-stretch bg-ui-line'\r\n : 'my-4 block h-px w-full bg-ui-line',\r\n );\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\n\r\nexport type SmzSkeletonShape = 'rectangle' | 'circle';\r\n\r\n/** Placeholder de carregamento. Substitui o `p-skeleton` do PrimeNG. */\r\n@Component({\r\n selector: 'ui-skeleton',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n 'aria-hidden': 'true',\r\n '[class]': 'classes()',\r\n '[style.width]': 'width()',\r\n '[style.height]': 'height()',\r\n },\r\n template: '',\r\n})\r\nexport class SmzSkeletonComponent {\r\n public readonly shape = input<SmzSkeletonShape>('rectangle');\r\n public readonly width = input('100%');\r\n public readonly height = input('1rem');\r\n\r\n protected readonly classes = computed(() =>\r\n this.shape() === 'circle'\r\n ? 'block animate-pulse rounded-full bg-ui-surface-3'\r\n : 'block animate-pulse rounded-control bg-ui-surface-3',\r\n );\r\n}\r\n","import { ChangeDetectionStrategy, Component, booleanAttribute, computed, input } from '@angular/core';\r\n\r\nexport type SmzProgressBarMode = 'determinate' | 'indeterminate';\r\n\r\n/** Barra de progresso. Substitui o `p-progressbar` do PrimeNG. */\r\n@Component({\r\n selector: 'ui-progress-bar',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n role: 'progressbar',\r\n class: 'block h-5',\r\n 'aria-valuemin': '0',\r\n 'aria-valuemax': '100',\r\n '[attr.aria-valuenow]': 'mode() === \"determinate\" ? percent() : null',\r\n },\r\n template: `\r\n <div class=\"relative h-full w-full overflow-hidden rounded-full bg-ui-surface-3\">\r\n <div\r\n class=\"flex h-full items-center justify-center rounded-full bg-ui-primary font-ui text-ui-xs text-ui-on-primary transition-[width] duration-ui\"\r\n [class.animate-pulse]=\"mode() === 'indeterminate'\"\r\n [style.width.%]=\"mode() === 'indeterminate' ? 100 : percent()\"\r\n >\r\n @if (showValue() && mode() === 'determinate' && percent() >= 10) {\r\n {{ percent() }}%\r\n }\r\n </div>\r\n </div>\r\n `,\r\n})\r\nexport class SmzProgressBarComponent {\r\n public readonly value = input<number | null | undefined>(0);\r\n public readonly mode = input<SmzProgressBarMode>('determinate');\r\n public readonly showValue = input(true, { transform: booleanAttribute });\r\n\r\n protected readonly percent = computed(() => Math.min(100, Math.max(0, Math.round(this.value() ?? 0))));\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\nimport { SMZ_SOFT_TONE, SmzSeverity } from '../core/severity';\r\nimport { smzCx } from '../core/variants';\r\n\r\nexport type SmzMessageSeverity = 'info' | 'success' | 'warn' | 'error' | 'secondary';\r\n\r\nconst SEVERITY_TONE: Record<SmzMessageSeverity, SmzSeverity> = {\r\n info: 'primary',\r\n success: 'success',\r\n warn: 'warning',\r\n error: 'danger',\r\n secondary: 'secondary',\r\n};\r\n\r\n/** Mensagem inline. Substitui o `p-message` do PrimeNG. */\r\n@Component({\r\n selector: 'ui-message',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { role: 'alert', '[class]': 'classes()' },\r\n template: `\r\n @if (icon()) {\r\n <i [class]=\"icon()\" aria-hidden=\"true\"></i>\r\n }\r\n <span>{{ text() }}<ng-content /></span>\r\n `,\r\n})\r\nexport class SmzMessageComponent {\r\n public readonly severity = input<SmzMessageSeverity | string | null | undefined>('info');\r\n public readonly text = input<string | null | undefined>('');\r\n public readonly icon = input<string | null | undefined>('');\r\n\r\n protected readonly classes = computed(() =>\r\n smzCx(\r\n 'flex items-start gap-2 rounded-control border px-3 py-2 font-ui text-ui-md',\r\n SMZ_SOFT_TONE[SEVERITY_TONE[(this.severity() as SmzMessageSeverity) in SEVERITY_TONE ? (this.severity() as SmzMessageSeverity) : 'info']],\r\n ),\r\n );\r\n}\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\n\r\n/**\r\n * Icone baseado em classes de fonte de icones (ex.: \"fa-solid fa-check\", \"fa-solid fa-check\").\r\n * A origem dos glifos e do app; o componente so padroniza a marcacao.\r\n */\r\n@Component({\r\n selector: 'ui-icon',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { class: 'inline-flex items-center justify-center' },\r\n template: '<i [class]=\"name()\" aria-hidden=\"true\"></i>',\r\n})\r\nexport class SmzIconComponent {\r\n public readonly name = input.required<string>();\r\n}\r\n","import { Directive, ElementRef, OnDestroy, Renderer2, effect, inject, input } from '@angular/core';\nimport { SMZ_SOLID_TONE, SmzLegacySeverity, SmzSeverity, smzNormalizeSeverity } from '../core/severity';\n\n/**\n * Badge sobreposto a um elemento (canto superior direito). Substitui o `pBadge` do PrimeNG.\n *\n * <i class=\"fa-solid fa-bell\" smzBadge [value]=\"count\"></i>\n */\n@Directive({\n selector: '[smzBadge]',\n host: { class: 'relative inline-block' },\n})\nexport class SmzBadgeDirective implements OnDestroy {\n public readonly value = input<string | number | null | undefined>('');\n public readonly severity = input<SmzSeverity | SmzLegacySeverity | null | undefined>('primary');\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly renderer = inject(Renderer2);\n private badge?: HTMLElement;\n\n constructor() {\n effect(() => {\n const value = this.value();\n if (value === '' || value === null || value === undefined) {\n this.removeBadge();\n return;\n }\n\n if (!this.badge) {\n this.badge = this.renderer.createElement('span') as HTMLElement;\n this.renderer.appendChild(this.host.nativeElement, this.badge);\n }\n this.badge.className =\n 'absolute -right-2 -top-2 inline-flex h-4 min-w-4 items-center justify-center rounded-full px-1 font-ui text-ui-xs font-medium ' +\n SMZ_SOLID_TONE[smzNormalizeSeverity(this.severity())];\n this.badge.textContent = String(value);\n });\n }\n\n public ngOnDestroy(): void {\n this.removeBadge();\n }\n\n private removeBadge(): void {\n if (!this.badge) return;\n this.renderer.removeChild(this.host.nativeElement, this.badge);\n this.badge = undefined;\n }\n}\n","/* eslint-disable @typescript-eslint/typedef -- utilitario portado, tipos implicitos */\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/**\n * Utilitarios de objeto usados pelos componentes de dados (tabela, arvore, selects).\n * Substitui o `ObjectUtils` do PrimeNG, com a mesma semantica dos metodos usados.\n */\nexport class SmzObjectUtils {\n public static isEmpty(value: any): boolean {\n return (\n value === null ||\n value === undefined ||\n value === '' ||\n (Array.isArray(value) && value.length === 0) ||\n (!(value instanceof Date) && typeof value === 'object' && Object.keys(value).length === 0)\n );\n }\n\n public static isNotEmpty(value: any): boolean {\n return !SmzObjectUtils.isEmpty(value);\n }\n\n public static isFunction(value: any): boolean {\n return !!(value && value.constructor && value.call && value.apply);\n }\n\n /** Le um campo de um objeto; aceita caminho com ponto (`a.b.c`) ou funcao. */\n public static resolveFieldData(data: any, field: any): any {\n if (!data || !field) return null;\n\n try {\n const value = data[field];\n if (SmzObjectUtils.isNotEmpty(value)) return value;\n }\n catch {\n // segue para a resolucao por caminho\n }\n\n if (Object.keys(data).length) {\n if (SmzObjectUtils.isFunction(field)) return field(data);\n if (field.indexOf('.') === -1) return data[field];\n\n let value = data;\n for (const part of field.split('.')) {\n if (value == null) return null;\n value = value[part];\n }\n return value;\n }\n\n return null;\n }\n\n public static equals(first: any, second: any, field?: string): boolean {\n if (field) {\n return SmzObjectUtils.resolveFieldData(first, field) === SmzObjectUtils.resolveFieldData(second, field);\n }\n return SmzObjectUtils.deepEquals(first, second);\n }\n\n public static deepEquals(first: any, second: any): boolean {\n if (first === second) return true;\n\n if (first && second && typeof first === 'object' && typeof second === 'object') {\n const firstIsArray = Array.isArray(first);\n const secondIsArray = Array.isArray(second);\n if (firstIsArray !== secondIsArray) return false;\n\n if (firstIsArray && secondIsArray) {\n if (first.length !== second.length) return false;\n return first.every((item: any, index: number) => SmzObjectUtils.deepEquals(item, second[index]));\n }\n\n const firstIsDate = first instanceof Date;\n const secondIsDate = second instanceof Date;\n if (firstIsDate !== secondIsDate) return false;\n if (firstIsDate && secondIsDate) return first.getTime() === second.getTime();\n\n const keys = Object.keys(first);\n if (keys.length !== Object.keys(second).length) return false;\n return keys.every((key) => Object.prototype.hasOwnProperty.call(second, key) && SmzObjectUtils.deepEquals(first[key], second[key]));\n }\n\n // NaN === NaN\n return first !== first && second !== second;\n }\n\n /** Move um item de `from` para `to` (muta o array). */\n public static reorderArray(value: any[], from: number, to: number): void {\n if (value && from !== to) {\n if (to >= value.length) {\n to %= value.length;\n from %= value.length;\n }\n value.splice(to, 0, value.splice(from, 1)[0]);\n }\n }\n\n public static removeAccents(text: string): string {\n return text && typeof text === 'string' ? text.normalize('NFD').replace(/[̀-ͯ]/g, '') : text;\n }\n\n /**\n * Compara dois valores respeitando valores vazios (vazio vai para o fim na ordem ascendente).\n * `locale` define o collator usado para strings (com ordenacao numerica).\n */\n public static compare(first: any, second: any, locale?: string, order = 1): number {\n const emptyFirst = SmzObjectUtils.isEmpty(first);\n const emptySecond = SmzObjectUtils.isEmpty(second);\n\n if (emptyFirst && emptySecond) return 0;\n if (emptyFirst) return order;\n if (emptySecond) return -order;\n if (typeof first === 'string' && typeof second === 'string') {\n return new Intl.Collator(locale, { numeric: true }).compare(first, second);\n }\n return first < second ? -1 : first > second ? 1 : 0;\n }\n\n public static sort(first: any, second: any, order = 1, locale?: string, nullSortOrder = 1): number {\n const result = SmzObjectUtils.compare(first, second, locale, order);\n let finalOrder = order;\n\n // nullSortOrder === 1: nulos no fim (como no Excel)\n if (SmzObjectUtils.isEmpty(first) || SmzObjectUtils.isEmpty(second)) {\n finalOrder = nullSortOrder === 1 ? order : nullSortOrder;\n }\n return finalOrder * result;\n }\n}\n\nlet lastId = 0;\n\n/** Gera ids unicos para elementos (`smz_id_1`, `smz_id_2`...). Substitui o `UniqueComponentId` do PrimeNG. */\nexport function smzUniqueId(prefix = 'smz_id_'): string {\n lastId++;\n return `${prefix}${lastId}`;\n}\n","/* eslint-disable @typescript-eslint/typedef -- helpers pequenos com tipos inferidos */\ninterface ZIndexEntry {\n key: string;\n value: number;\n}\n\nlet zIndexes: ZIndexEntry[] = [];\n\nfunction lastEntry(key: string, anyKey: boolean, baseZIndex = 0): ZIndexEntry {\n return [...zIndexes].reverse().find((entry) => (anyKey ? true : entry.key === key)) ?? { key, value: baseZIndex };\n}\n\nfunction generate(key: string, baseZIndex = 999): number {\n const last = lastEntry(key, true, baseZIndex);\n const next = last.value + (last.key === key ? 0 : baseZIndex) + 1;\n zIndexes.push({ key, value: next });\n return next;\n}\n\nfunction read(element: HTMLElement | null | undefined): number {\n return element ? parseInt(element.style.zIndex, 10) || 0 : 0;\n}\n\n/**\n * Gerencia a pilha de z-index de overlays (dialogs, menus, popovers).\n * Substitui o `ZIndexUtils` do PrimeNG.\n */\nexport const SmzZIndex = {\n get: read,\n getCurrent: (key = ''): number => lastEntry(key, true).value,\n set: (key: string, element: HTMLElement | null | undefined, baseZIndex?: number): void => {\n if (element) element.style.zIndex = String(generate(key, baseZIndex));\n },\n clear: (element: HTMLElement | null | undefined): void => {\n if (!element) return;\n const value = read(element);\n zIndexes = zIndexes.filter((entry) => entry.value !== value);\n element.style.zIndex = '';\n },\n};\n","/* eslint-disable @typescript-eslint/typedef -- utilitario portado, tipos implicitos */\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-return, @typescript-eslint/explicit-module-boundary-types, max-len */\n\nconst FOCUSABLE_FILTER = ':not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden])';\n\n/**\n * Utilitarios de DOM usados pelos componentes que manipulam elementos diretamente (tabela, dialog, menu).\n * Substitui o `DomHandler` do PrimeNG, com os mesmos nomes e semantica dos metodos usados.\n */\nexport class SmzDomHandler {\n private static classes(value: string): string[] {\n return value.split(/\\s+/).filter(Boolean);\n }\n\n public static hasClass(element: any, className: string): boolean {\n if (!element || !className) return false;\n return element.classList\n ? element.classList.contains(className)\n : new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);\n }\n\n public static addClass(element: any, className: string): void {\n if (!element || !className) return;\n if (element.classList) element.classList.add(...SmzDomHandler.classes(className));\n else element.className += ' ' + className;\n }\n\n public static removeClass(element: any, className: string): void {\n if (!element || !className) return;\n if (element.classList) element.classList.remove(...SmzDomHandler.classes(className));\n else element.className = element.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n\n public static invokeElementMethod(element: any, methodName: string, args?: any[]): void {\n element[methodName](...(args ?? []));\n }\n\n public static find(element: any, selector: string): any {\n return element.querySelectorAll(selector);\n }\n\n public static findSingle(element: any, selector: string): any {\n return element ? element.querySelector(selector) : null;\n }\n\n public static matches(element: any, selector: string): boolean {\n return element?.matches ? element.matches(selector) : false;\n }\n\n public static index(element: any): number {\n const children = element.parentNode.childNodes;\n let count = 0;\n for (let i = 0; i < children.length; i++) {\n if (children[i] === element) return count;\n if (children[i].nodeType === 1) count++;\n }\n return -1;\n }\n\n public static indexWithinGroup(element: any, attributeName: string): number {\n const children = element?.parentNode ? SmzDomHandler.find(element.parentNode, `[${attributeName}]`) : [];\n let count = 0;\n for (let i = 0; i < children.length; i++) {\n if (children[i] === element) return count;\n if (children[i].nodeType === 1) count++;\n }\n return -1;\n }\n\n public static appendChild(element: any, target: any): void {\n if (SmzDomHandler.isElement(target)) target.appendChild(element);\n else if (target && target.el && target.el.nativeElement) target.el.nativeElement.appendChild(element);\n else if (target === 'body') document.body.appendChild(element);\n else if (typeof target === 'string' && document.querySelector(target)) (document.querySelector(target) as Element).appendChild(element);\n else throw new Error('Cannot append ' + target + ' to ' + element);\n }\n\n public static isElement(obj: any): boolean {\n return typeof HTMLElement === 'object' ? obj instanceof HTMLElement : !!obj && typeof obj === 'object' && obj.nodeType === 1 && typeof obj.nodeName === 'string';\n }\n\n public static getOuterWidth(element: any, margin?: boolean): number {\n if (!element) return 0;\n let width = element.offsetWidth;\n if (margin) {\n const style = getComputedStyle(element);\n width += parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n }\n return width;\n }\n\n public static getOuterHeight(element: any, margin?: boolean): number {\n if (!element) return 0;\n let height = element.offsetHeight;\n if (margin) {\n const style = getComputedStyle(element);\n height += parseFloat(style.marginTop) + parseFloat(style.marginBottom);\n }\n return height;\n }\n\n public static getOffset(element: any): { top: any; left: any } {\n if (!element) return { top: 'auto', left: 'auto' };\n const rect = element.getBoundingClientRect();\n return {\n top: rect.top + (window.scrollY || document.documentElement.scrollTop || document.body.scrollTop || 0),\n left: rect.left + (window.scrollX || document.documentElement.scrollLeft || document.body.scrollLeft || 0),\n };\n }\n\n public static getWindowScrollTop(): number {\n return (window.scrollY || document.documentElement.scrollTop || 0) - (document.documentElement.clientTop || 0);\n }\n\n public static getWindowScrollLeft(): number {\n return (window.scrollX || document.documentElement.scrollLeft || 0) - (document.documentElement.clientLeft || 0);\n }\n\n public static getViewport(): { width: number; height: number } {\n return {\n width: window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth,\n height: window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight,\n };\n }\n\n public static getHiddenElementDimensions(element: any): { width: number; height: number } {\n const original = { display: element.style.display, visibility: element.style.visibility };\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n const dimensions = { width: element.offsetWidth, height: element.offsetHeight };\n element.style.display = original.display;\n element.style.visibility = original.visibility;\n return dimensions;\n }\n\n public static getHiddenElementOuterWidth(element: any): number {\n const original = { display: element.style.display, visibility: element.style.visibility };\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n const width = element.offsetWidth;\n element.style.display = original.display;\n element.style.visibility = original.visibility;\n return width;\n }\n\n public static getHiddenElementOuterHeight(element: any): number {\n const original = { display: element.style.display, visibility: element.style.visibility };\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n const height = element.offsetHeight;\n element.style.display = original.display;\n element.style.visibility = original.visibility;\n return height;\n }\n\n public static isVisible(element: any): boolean {\n return !!element && element.offsetParent !== null;\n }\n\n public static isTouchDevice(): boolean {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n }\n\n public static clearSelection(): void {\n const selection = window.getSelection?.();\n if (!selection) return;\n if (selection.empty) selection.empty();\n else if (selection.removeAllRanges && selection.rangeCount > 0 && selection.getRangeAt(0).getClientRects().length > 0) selection.removeAllRanges();\n }\n\n public static getFocusableElements(element: any, selector = ''): any[] {\n const nodes = SmzDomHandler.find(\n element,\n `button${FOCUSABLE_FILTER}${selector}, [href][clientHeight][clientWidth]${FOCUSABLE_FILTER}${selector}, ` +\n `input${FOCUSABLE_FILTER}${selector}, select${FOCUSABLE_FILTER}${selector}, textarea${FOCUSABLE_FILTER}${selector}, ` +\n `[tabIndex]${FOCUSABLE_FILTER}${selector}, [contenteditable]${FOCUSABLE_FILTER}${selector}`,\n );\n\n const visible: any[] = [];\n for (const node of nodes) {\n const style = getComputedStyle(node);\n if (SmzDomHandler.isVisible(node) && style.display !== 'none' && style.visibility !== 'hidden') visible.push(node);\n }\n return visible;\n }\n\n /** Posiciona `element` (position: absolute no body) abaixo de `target`, invertendo se nao couber. */\n public static absolutePosition(element: any, target: any, gutter = true): void {\n const dimensions = element.offsetParent\n ? { width: element.offsetWidth, height: element.offsetHeight }\n : SmzDomHandler.getHiddenElementDimensions(element);\n const targetHeight = target.offsetHeight;\n const targetRect = target.getBoundingClientRect();\n const scrollTop = SmzDomHandler.getWindowScrollTop();\n const scrollLeft = SmzDomHandler.getWindowScrollLeft();\n const viewport = SmzDomHandler.getViewport();\n let top: number;\n let left: number;\n\n if (targetRect.top + targetHeight + dimensions.height > viewport.height) {\n top = targetRect.top + scrollTop - dimensions.height;\n element.style.transformOrigin = 'bottom';\n if (top < 0) top = scrollTop;\n }\n else {\n top = targetHeight + targetRect.top + scrollTop;\n element.style.transformOrigin = 'top';\n }\n\n const horizontalOverflow = targetRect.left + dimensions.width - viewport.width;\n if (dimensions.width > viewport.width) left = scrollLeft;\n else if (horizontalOverflow > 0) left = Math.max(0, targetRect.left + scrollLeft - horizontalOverflow);\n else left = targetRect.left + scrollLeft;\n\n element.style.top = top + 'px';\n element.style.left = left + 'px';\n if (!gutter) element.style.marginTop = '0px';\n }\n\n /** Posiciona `element` relativo ao seu offsetParent, abaixo de `target`. */\n public static relativePosition(element: any, target: any, gutter = true): void {\n const parentOffset = element.offsetParent ? null : SmzDomHandler.getHiddenElementDimensions(element);\n const elementHeight = parentOffset ? parentOffset.height : element.offsetHeight;\n const elementWidth = parentOffset ? parentOffset.width : element.offsetWidth;\n const targetHeight = target.offsetHeight;\n const targetRect = target.getBoundingClientRect();\n const viewport = SmzDomHandler.getViewport();\n let top: number;\n let left: number;\n\n if (targetRect.top + targetHeight + elementHeight > viewport.height) {\n top = -elementHeight;\n element.style.transformOrigin = 'bottom';\n if (targetRect.top + top < 0) top = -targetRect.top;\n }\n else {\n top = targetHeight;\n element.style.transformOrigin = 'top';\n }\n\n if (elementWidth > viewport.width) left = targetRect.left * -1;\n else if (targetRect.left + elementWidth > viewport.width) left = (targetRect.left + elementWidth - viewport.width) * -1;\n else left = 0;\n\n element.style.top = top + 'px';\n element.style.left = left + 'px';\n if (!gutter) element.style.marginTop = '0px';\n }\n}\n\nconst OVERFLOW_PATTERN = /(auto|scroll)/;\n\nfunction scrollableParents(element: any): any[] {\n const parents: any[] = [];\n let parent = element?.parentNode;\n while (parent && parent.nodeType === 1) {\n const style = getComputedStyle(parent);\n if (OVERFLOW_PATTERN.test(style.overflow + style.overflowX + style.overflowY)) parents.push(parent);\n parent = parent.parentNode;\n }\n parents.push(window);\n return parents;\n}\n\n/**\n * Dispara `listener` quando qualquer ancestral rolavel de `element` rola (usado para fechar overlays conectados).\n * Substitui o `ConnectedOverlayScrollHandler` do PrimeNG.\n */\nexport class SmzConnectedOverlayScrollHandler {\n private parents: any[] | null = null;\n\n constructor(private element: any, private listener: () => void = () => undefined) {\n }\n\n public bindScrollListener(): void {\n this.parents ??= scrollableParents(this.element);\n for (const parent of this.parents) parent.addEventListener('scroll', this.listener);\n }\n\n public unbindScrollListener(): void {\n for (const parent of this.parents ?? []) parent.removeEventListener('scroll', this.listener);\n }\n\n public destroy(): void {\n this.unbindScrollListener();\n this.element = null;\n this.parents = null;\n }\n}\n","import { AfterContentChecked, Directive, ElementRef, booleanAttribute, inject, input } from '@angular/core';\nimport { SmzDomHandler } from './dom-handler';\n\n/**\n * Foca o primeiro elemento focavel (ou o proprio hospedeiro) apos a renderizacao.\n * Substitui o `pAutoFocus` do PrimeNG.\n *\n * <input smzAutoFocus /> <div [smzAutoFocus]=\"true\"> ... </div>\n */\n@Directive({\n selector: '[smzAutoFocus]',\n})\nexport class SmzAutoFocusDirective implements AfterContentChecked {\n public readonly autofocus = input(true, { alias: 'smzAutoFocus', transform: (value: unknown) => value === '' || booleanAttribute(value) });\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private focused = false;\n\n public ngAfterContentChecked(): void {\n if (this.focused) return;\n\n setTimeout(() => {\n if (this.focused || !this.autofocus()) return;\n const element = this.host.nativeElement;\n const focusable = SmzDomHandler.getFocusableElements(element) as HTMLElement[];\n if (focusable.length > 0) focusable[0].focus();\n else element.focus();\n this.focused = true;\n }, 5);\n }\n}\n","import { Observable, Subject } from 'rxjs';\n\n/** Configuracao de um dialog aberto por `SmzDialogService`. Tambem e o token de DI para o componente do conteudo. */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- dados livres do consumidor\nexport class SmzDialogConfig<TData = any> {\n public data?: TData;\n public header?: string;\n public width?: string;\n public height?: string;\n public showHeader?: boolean;\n public modal?: boolean;\n public closable?: boolean;\n public closeOnEscape?: boolean;\n public dismissableMask?: boolean;\n public baseZIndex?: number;\n public style?: Record<string, string>;\n public contentStyle?: Record<string, string>;\n public styleClass?: string;\n}\n\n/** Referencia ao dialog aberto. Injetavel no componente do conteudo para fechar com um resultado. */\nexport class SmzDialogRef<TResult = unknown> {\n private readonly closeSubject = new Subject<TResult | undefined>();\n private closeHandler: () => void = () => undefined;\n\n /** Emite o resultado quando o dialog fecha. */\n public readonly onClose: Observable<TResult | undefined> = this.closeSubject.asObservable();\n\n public close(result?: TResult): void {\n this.closeSubject.next(result);\n this.closeSubject.complete();\n this.closeHandler();\n }\n\n /** @internal registrado pelo servico para destruir o overlay. */\n public bind(closeHandler: () => void): void {\n this.closeHandler = closeHandler;\n }\n}\n","/** Estilos de tamanho que precisam ir para o painel do CDK Overlay (e nao para o frame dentro dele). */\nexport interface SmzDialogPaneSize {\n width?: string;\n height?: string;\n minWidth?: string;\n maxWidth?: string;\n minHeight?: string;\n maxHeight?: string;\n}\n\nconst KEYS: Record<string, keyof SmzDialogPaneSize> = {\n width: 'width',\n height: 'height',\n minWidth: 'minWidth',\n 'min-width': 'minWidth',\n maxWidth: 'maxWidth',\n 'max-width': 'maxWidth',\n minHeight: 'minHeight',\n 'min-height': 'minHeight',\n maxHeight: 'maxHeight',\n 'max-height': 'maxHeight',\n};\n\n/**\n * Separa os estilos de tamanho (`width`, `height`, `min-*`, `max-*`) do resto do `style`.\n *\n * Porcentagens so significam \"porcentagem da tela\" quando aplicadas ao painel do overlay (cujo pai ocupa a viewport);\n * dentro do frame elas seriam relativas ao painel, que tem largura \"shrink-to-fit\" (ex.: 60% de 531px).\n * O painel recebe o tamanho; o frame passa a ocupar 100% dele.\n */\nexport function smzSplitDialogSize(style: Record<string, string | number | null | undefined> | null | undefined, extra?: SmzDialogPaneSize): { pane: SmzDialogPaneSize; rest: Record<string, string | number> } {\n const pane: SmzDialogPaneSize = { ...(extra ?? {}) };\n const rest: Record<string, string | number> = {};\n for (const [key, value] of Object.entries(style ?? {})) {\n if (value === null || value === undefined || value === '') continue;\n const target = KEYS[key];\n if (target) pane[target] = String(value);\n else rest[key] = value;\n }\n for (const key of Object.keys(pane) as Array<keyof SmzDialogPaneSize>) {\n if (!pane[key]) delete pane[key];\n }\n return { pane, rest };\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\nimport { NgStyle } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n InjectionToken,\n Injector,\n Type,\n ViewContainerRef,\n afterNextRender,\n inject,\n viewChild,\n} from '@angular/core';\nimport { SmzDialogConfig, SmzDialogRef } from './dialog-ref';\nimport { smzSplitDialogSize } from './dialog-size';\n\n/** Componente que sera criado dentro do dialog. */\nexport const SMZ_DIALOG_CONTENT = new InjectionToken<Type<unknown>>('SMZ_DIALOG_CONTENT');\n\n/** Moldura do dialog: cabecalho com titulo e botao fechar, mais a area do conteudo. */\n@Component({\n selector: 'ui-dialog-frame',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgStyle],\n // O painel do CDK e `display:flex`: o host e item flex e so ocupa o painel dimensionado se tiver largura/altura 100%.\n host: { class: 'pointer-events-auto block', '[class.w-full]': '!!size.pane.width', '[class.h-full]': '!!size.pane.height' },\n template: `\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"config.header || null\"\n class=\"flex max-h-[90vh] max-w-[95vw] flex-col rounded-overlay border border-ui-line bg-ui-surface-2 font-ui text-ui-fg shadow-overlay\"\n [class]=\"config.styleClass ?? ''\"\n [style.width]=\"size.pane.width ? '100%' : null\"\n [style.height]=\"size.pane.height ? '100%' : null\"\n [ngStyle]=\"size.rest\"\n >\n @if (config.showHeader !== false) {\n <div class=\"flex items-center justify-between gap-4 border-b border-ui-line px-4 py-3\">\n <span class=\"text-ui-lg font-medium\">{{ config.header }}</span>\n @if (config.closable !== false) {\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 cursor-pointer items-center justify-center rounded-full text-ui-fg-muted transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus\"\n aria-label=\"Fechar\"\n (click)=\"ref.close()\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" />\n </svg>\n </button>\n }\n </div>\n }\n <div class=\"min-h-0 flex-1 overflow-auto p-4\" [ngStyle]=\"config.contentStyle\">\n <ng-container #content />\n </div>\n </div>\n `,\n})\nexport class SmzDialogFrameComponent {\n protected readonly config = inject(SmzDialogConfig);\n protected readonly ref = inject(SmzDialogRef);\n /** Tamanho vai para o painel do overlay (ver `smzSplitDialogSize`); o frame ocupa 100% dele. */\n protected readonly size = smzSplitDialogSize(this.config.style, { width: this.config.width, height: this.config.height });\n\n private readonly injector = inject(Injector);\n private readonly contentType = inject(SMZ_DIALOG_CONTENT);\n private readonly host = viewChild.required('content', { read: ViewContainerRef });\n\n constructor() {\n afterNextRender(() => {\n this.host().createComponent(this.contentType, { injector: this.injector });\n });\n }\n}\n","import { Overlay } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Injectable, Injector, Type, inject } from '@angular/core';\nimport { filter } from 'rxjs';\nimport { SmzZIndex } from '../core/zindex';\nimport { SMZ_DIALOG_CONTENT, SmzDialogFrameComponent } from './dialog-frame.component';\nimport { SmzDialogConfig, SmzDialogRef } from './dialog-ref';\nimport { smzSplitDialogSize } from './dialog-size';\n\n/**\n * Abre um componente dentro de um dialog modal (CDK Overlay). Substitui o `DialogService` do PrimeNG.\n * Requer o CSS do CDK Overlay no app (`@angular/cdk/overlay-prebuilt.css`).\n *\n * const ref = dialogs.open(MeuComponente, { header: 'Titulo', width: '50%', data: { ... } });\n * ref.onClose.subscribe((resultado) => ...);\n */\n@Injectable({ providedIn: 'root' })\nexport class SmzDialogService {\n private readonly overlay = inject(Overlay);\n private readonly injector = inject(Injector);\n\n public open<TResult = unknown>(content: Type<unknown>, config: Partial<SmzDialogConfig> = {}): SmzDialogRef<TResult> {\n const resolved = Object.assign(new SmzDialogConfig(), config);\n const ref = new SmzDialogRef<TResult>();\n const modal = resolved.modal !== false;\n\n // Porcentagens (ex.: `width: '60%'`) sao relativas a viewport quando aplicadas ao painel do overlay.\n const pane = smzSplitDialogSize(resolved.style, { width: resolved.width, height: resolved.height }).pane;\n\n const overlayRef = this.overlay.create({\n hasBackdrop: modal,\n positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),\n scrollStrategy: this.overlay.scrollStrategies.block(),\n ...pane,\n maxWidth: pane.maxWidth ?? '95vw',\n });\n\n if (resolved.baseZIndex != null) {\n overlayRef.hostElement.style.zIndex = String(resolved.baseZIndex + 1);\n if (overlayRef.backdropElement) overlayRef.backdropElement.style.zIndex = String(resolved.baseZIndex);\n }\n else {\n SmzZIndex.set('modal', overlayRef.hostElement, 1100);\n if (overlayRef.backdropElement) overlayRef.backdropElement.style.zIndex = String(SmzZIndex.get(overlayRef.hostElement) - 1);\n }\n\n ref.bind(() => {\n SmzZIndex.clear(overlayRef.hostElement);\n overlayRef.dispose();\n });\n\n if (resolved.closeOnEscape !== false) {\n overlayRef.keydownEvents().pipe(filter((event) => event.key === 'Escape')).subscribe(() => ref.close());\n }\n if (modal && resolved.dismissableMask) {\n overlayRef.backdropClick().subscribe(() => ref.close());\n }\n\n const injector = Injector.create({\n parent: this.injector,\n providers: [\n { provide: SmzDialogConfig, useValue: resolved },\n { provide: SmzDialogRef, useValue: ref },\n { provide: SMZ_DIALOG_CONTENT, useValue: content },\n ],\n });\n overlayRef.attach(new ComponentPortal(SmzDialogFrameComponent, null, injector));\n\n return ref;\n }\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\r\nimport { GlobalPositionStrategy, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { NgStyle, NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n OnDestroy,\r\n TemplateRef,\r\n ViewContainerRef,\r\n booleanAttribute,\r\n computed,\r\n contentChildren,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n model,\r\n output,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { filter } from 'rxjs';\r\nimport { smzFindTemplate, SmzTemplateDirective } from '../core/template.directive';\r\nimport { SmzZIndex } from '../core/zindex';\r\nimport { smzSplitDialogSize } from './dialog-size';\r\n\r\n/** Posicoes aceitas por `ui-dialog`. */\r\nexport type SmzDialogPosition = 'center' | 'top' | 'bottom' | 'left' | 'right' | 'topleft' | 'topright' | 'bottomleft' | 'bottomright';\r\n\r\n/**\r\n * Dialog declarativo. Substitui o `p-dialog` do PrimeNG.\r\n *\r\n * <ui-dialog header=\"Titulo\" [(visible)]=\"aberto\" [style]=\"{ width: '450px' }\">\r\n * conteudo\r\n * <ng-template smzTemplate=\"footer\"><button smzButton label=\"Salvar\"></button></ng-template>\r\n * </ui-dialog>\r\n */\r\n@Component({\r\n selector: 'ui-dialog',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgStyle, NgTemplateOutlet],\r\n template: `\r\n <ng-template #panel>\r\n <div\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-label]=\"header() || null\"\r\n class=\"pointer-events-auto flex flex-col border border-ui-line bg-ui-surface-2 font-ui text-ui-fg shadow-overlay\"\r\n [class]=\"(maximized() ? 'h-screen w-screen max-h-none max-w-none rounded-none ' : 'max-h-[90vh] max-w-[95vw] rounded-overlay ') + (resizable() && !maximized() ? 'resize overflow-auto ' : '') + (styleClass() ?? '')\"\r\n [ngStyle]=\"maximized() ? null : sizing().rest\"\r\n [style.width]=\"!maximized() && sizing().pane.width ? '100%' : null\"\r\n [style.height]=\"!maximized() && sizing().pane.height ? '100%' : null\"\r\n [style.transform]=\"maximized() || (dx() === 0 && dy() === 0) ? null : 'translate(' + dx() + 'px, ' + dy() + 'px)'\"\r\n >\r\n @if (headerTemplate(); as headerTpl) {\r\n <div class=\"border-b border-ui-line px-4 py-3\" [class.cursor-move]=\"draggable() && !maximized()\" (pointerdown)=\"startDrag($event)\">\r\n <ng-container [ngTemplateOutlet]=\"headerTpl\" />\r\n </div>\r\n }\r\n @else if (header() || closable()) {\r\n <div class=\"flex items-center justify-between gap-4 border-b border-ui-line px-4 py-3\" [class.cursor-move]=\"draggable() && !maximized()\" (pointerdown)=\"startDrag($event)\">\r\n <span class=\"text-ui-lg font-medium\">{{ header() }}</span>\r\n <div class=\"flex items-center gap-1\">\r\n @if (maximizable()) {\r\n <button type=\"button\" class=\"inline-flex h-8 w-8 cursor-pointer items-center justify-center rounded-full text-ui-fg-muted transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus\" [attr.aria-label]=\"maximized() ? 'Restaurar' : 'Maximizar'\" (click)=\"maximize()\">\r\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4\" fill=\"none\" aria-hidden=\"true\">\r\n @if (maximized()) { <path d=\"M5 3h8v8M3 5h8v8H3z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linejoin=\"round\" /> } @else { <rect x=\"3\" y=\"3\" width=\"10\" height=\"10\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linejoin=\"round\" /> }\r\n </svg>\r\n </button>\r\n }\r\n @if (closable()) {\r\n <button\r\n type=\"button\"\r\n class=\"inline-flex h-8 w-8 cursor-pointer items-center justify-center rounded-full text-ui-fg-muted transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus\"\r\n aria-label=\"Fechar\"\r\n (click)=\"close()\"\r\n >\r\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4\" fill=\"none\" aria-hidden=\"true\">\r\n <path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" />\r\n </svg>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n }\r\n <div class=\"min-h-0 flex-1 overflow-auto p-4\"><ng-content /></div>\r\n @if (footerTemplate(); as footerTpl) {\r\n <div class=\"flex justify-end gap-2 border-t border-ui-line px-4 py-3\">\r\n <ng-container [ngTemplateOutlet]=\"footerTpl\" />\r\n </div>\r\n }\r\n </div>\r\n </ng-template>\r\n `,\r\n})\r\nexport class SmzDialogComponent implements OnDestroy {\r\n public readonly visible = model(false);\r\n public readonly header = input<string | null | undefined>('');\r\n public readonly modal = input(true, { transform: booleanAttribute });\r\n public readonly closable = input(true, { transform: booleanAttribute });\r\n public readonly dismissableMask = input(false, { transform: booleanAttribute });\r\n public readonly closeOnEscape = input(true, { transform: booleanAttribute });\r\n public readonly style = input<Record<string, string | number | null> | null | undefined>(null);\r\n public readonly styleClass = input<string | null | undefined>('');\r\n public readonly baseZIndex = input(0);\r\n /** Permite arrastar pelo cabecalho. */\r\n public readonly draggable = input(false, { transform: booleanAttribute });\r\n /** Mostra a alca nativa de redimensionar no canto inferior direito. */\r\n public readonly resizable = input(false, { transform: booleanAttribute });\r\n /** Mostra o botao de maximizar no cabecalho padrao (com `smzTemplate=\"header\"` use `maximize()`). */\r\n public readonly maximizable = input(false, { transform: booleanAttribute });\r\n public readonly maximized = model(false);\r\n /** Posicao na tela (como o `position` do `p-dialog`). */\r\n public readonly position = input<SmzDialogPosition>('center');\r\n\r\n public readonly shown = output<void>();\r\n public readonly hidden = output<void>();\r\n\r\n private readonly panel = viewChild.required<TemplateRef<unknown>>('panel');\r\n private readonly templates = contentChildren(SmzTemplateDirective);\r\n protected readonly headerTemplate = computed(() => smzFindTemplate(this.templates(), 'header'));\r\n protected readonly footerTemplate = computed(() => smzFindTemplate(this.templates(), 'footer'));\r\n\r\n private readonly overlay = inject(Overlay);\r\n private readonly viewContainer = inject(ViewContainerRef);\r\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private overlayRef?: OverlayRef;\r\n\r\n /** `width`/`height`/`min-*`/`max-*` de `style` vao para o painel do overlay (relativos a viewport); o frame ocupa 100% dele. */\r\n protected readonly sizing = computed(() => smzSplitDialogSize(this.style()));\r\n\r\n protected readonly dx = signal(0);\r\n protected readonly dy = signal(0);\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.visible()) this.open();\r\n else this.dispose();\r\n });\r\n effect(() => {\r\n const maximized = this.maximized();\r\n const pane = this.sizing().pane;\r\n // `updateSize` do CDK so MESCLA as chaves recebidas: ao restaurar, height/max-height/min-* do maximizado\r\n // (100vh, 0) sobrevivem se nao forem repostos explicitamente (vazio = remove o estilo inline).\r\n this.overlayRef?.updateSize(maximized\r\n ? { width: '100vw', height: '100vh', maxWidth: '100vw', maxHeight: '100vh', minWidth: '0', minHeight: '0' }\r\n : { width: pane.width ?? '', height: pane.height ?? '', minWidth: pane.minWidth ?? '', minHeight: pane.minHeight ?? '', maxWidth: pane.maxWidth ?? '95vw', maxHeight: pane.maxHeight ?? '' });\r\n // A estrategia global alinha por tamanho (flush a 100vh/100vw); reaplica para voltar ao alinhamento do `position`.\r\n this.overlayRef?.updatePosition();\r\n });\r\n effect(() => {\r\n const position = this.position();\r\n this.overlayRef?.updatePositionStrategy(this.strategyFor(position));\r\n });\r\n }\r\n\r\n /** Alterna entre maximizado e normal. */\r\n public maximize(): void {\r\n this.maximized.update((value) => !value);\r\n this.dx.set(0);\r\n this.dy.set(0);\r\n }\r\n\r\n protected startDrag(event: PointerEvent): void {\r\n if (!this.draggable() || this.maximized() || (event.target as HTMLElement).closest('button')) return;\r\n event.preventDefault();\r\n const startX = event.clientX - this.dx();\r\n const startY = event.clientY - this.dy();\r\n const move = (e: PointerEvent): void => {\r\n this.dx.set(e.clientX - startX);\r\n this.dy.set(e.clientY - startY);\r\n };\r\n const up = (): void => {\r\n document.removeEventListener('pointermove', move);\r\n document.removeEventListener('pointerup', up);\r\n };\r\n document.addEventListener('pointermove', move);\r\n document.addEventListener('pointerup', up);\r\n }\r\n\r\n private strategyFor(position: SmzDialogPosition): GlobalPositionStrategy {\r\n const strategy = this.overlay.position().global();\r\n const horizontal = position.includes('left') ? 'left' : position.includes('right') ? 'right' : 'center';\r\n const vertical = position.startsWith('top') ? 'top' : position.startsWith('bottom') ? 'bottom' : position === 'left' || position === 'right' || position === 'center' ? 'center' : 'center';\r\n if (horizontal === 'left') strategy.left('0');\r\n else if (horizontal === 'right') strategy.right('0');\r\n else strategy.centerHorizontally();\r\n if (vertical === 'top') strategy.top('0');\r\n else if (vertical === 'bottom') strategy.bottom('0');\r\n else strategy.centerVertically();\r\n return strategy;\r\n }\r\n\r\n public close(): void {\r\n this.visible.set(false);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.dispose();\r\n }\r\n\r\n private open(): void {\r\n if (this.overlayRef) return;\r\n\r\n const modal = this.modal();\r\n this.overlayRef = this.overlay.create({\r\n hasBackdrop: modal,\r\n positionStrategy: this.strategyFor(this.position()),\r\n scrollStrategy: this.overlay.scrollStrategies.block(),\r\n ...(this.maximized() ? { width: '100vw', height: '100vh', maxWidth: '100vw', maxHeight: '100vh' } : { ...this.sizing().pane, maxWidth: this.sizing().pane.maxWidth ?? '95vw' }),\r\n });\r\n\r\n SmzZIndex.set('modal', this.overlayRef.hostElement, 1100 + this.baseZIndex());\r\n if (this.overlayRef.backdropElement) {\r\n this.overlayRef.backdropElement.style.zIndex = String(SmzZIndex.get(this.overlayRef.hostElement) - 1);\r\n }\r\n\r\n if (this.closeOnEscape()) {\r\n this.overlayRef.keydownEvents().pipe(filter((event) => event.key === 'Escape')).subscribe(() => this.close());\r\n }\r\n if (modal && this.dismissableMask()) {\r\n this.overlayRef.backdropClick().subscribe(() => this.close());\r\n }\r\n\r\n this.overlayRef.attach(new TemplatePortal(this.panel(), this.viewContainer));\r\n this.forwardTestId();\r\n this.shown.emit();\r\n }\r\n\r\n private dispose(): void {\r\n if (!this.overlayRef) return;\r\n SmzZIndex.clear(this.overlayRef.hostElement);\r\n this.overlayRef.dispose();\r\n this.overlayRef = undefined;\r\n this.hidden.emit();\r\n }\r\n\r\n /** O `data-testid` posto no hospedeiro vai para o painel renderizado no overlay (usado nos testes e2e). */\r\n private forwardTestId(): void {\r\n const testId = this.host.nativeElement.getAttribute('data-testid');\r\n if (testId) this.overlayRef?.overlayElement.querySelector('[role=\"dialog\"]')?.setAttribute('data-testid', testId);\r\n }\r\n}\r\n","import { ConnectedPosition, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { NgStyle } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n booleanAttribute,\n inject,\n input,\n output,\n viewChild,\n} from '@angular/core';\nimport { filter, merge } from 'rxjs';\nimport { SmzZIndex } from '../core/zindex';\n\n/** Elemento real ou ancora virtual que apenas informa o retangulo. */\nexport type SmzPopoverTarget = Element | { getBoundingClientRect(): { left: number; top: number; width: number; height: number } };\n\nconst POSITIONS: ConnectedPosition[] = [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 8 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -8 },\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetY: 8 },\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', offsetY: -8 },\n];\n\n/**\n * Painel flutuante ancorado a um elemento. Substitui o `p-popover` do PrimeNG.\n *\n * <button smzButton (click)=\"op.toggle($event)\"></button>\n * <ui-popover #op>conteudo</ui-popover>\n */\n@Component({\n selector: 'ui-popover',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgStyle],\n host: { class: 'contents' },\n template: `\n <ng-template #panel>\n <div\n role=\"dialog\"\n class=\"rounded-overlay border border-ui-line bg-ui-surface-2 p-3 font-ui text-ui-fg shadow-overlay\"\n [class]=\"styleClass() ?? ''\"\n [ngStyle]=\"style()\"\n >\n <ng-content />\n </div>\n </ng-template>\n `,\n})\nexport class SmzPopoverComponent implements OnDestroy {\n public readonly style = input<Record<string, string | number | null> | null | undefined>(null);\n public readonly styleClass = input<string | null | undefined>('');\n public readonly dismissable = input(true, { transform: booleanAttribute });\n public readonly autoZIndex = input(true, { transform: booleanAttribute });\n /** Aceito por compatibilidade; o overlay do CDK ja e anexado ao body. */\n public readonly appendTo = input<unknown>(undefined);\n\n public readonly shown = output<void>();\n public readonly hidden = output<void>();\n\n private readonly panel = viewChild.required<TemplateRef<unknown>>('panel');\n private readonly overlay = inject(Overlay);\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private overlayRef?: OverlayRef;\n private origin?: Element;\n\n public get overlayVisible(): boolean {\n return !!this.overlayRef;\n }\n\n public toggle(event: Event | null, target?: SmzPopoverTarget): void {\n if (this.overlayRef) this.hide();\n else this.show(event, target);\n }\n\n public show(event: Event | null, target?: SmzPopoverTarget): void {\n if (this.overlayRef) return;\n\n const anchor = target ?? (event?.currentTarget as SmzPopoverTarget | null) ?? (event?.target as SmzPopoverTarget);\n const origin = anchor instanceof Element ? anchor : this.toPoint(anchor);\n this.origin = anchor instanceof Element ? anchor : undefined;\n\n this.overlayRef = this.overlay.create({\n positionStrategy: this.overlay.position().flexibleConnectedTo(origin).withPositions(POSITIONS).withPush(true),\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n });\n\n if (this.autoZIndex()) SmzZIndex.set('overlay', this.overlayRef.hostElement, 1000);\n\n if (this.dismissable()) {\n merge(\n this.overlayRef.outsidePointerEvents().pipe(filter((outside) => !this.origin?.contains(outside.target as Node))),\n this.overlayRef.keydownEvents().pipe(filter((key) => key.key === 'Escape')),\n ).subscribe(() => this.hide());\n }\n\n this.overlayRef.attach(new TemplatePortal(this.panel(), this.viewContainer));\n this.forwardTestId();\n this.shown.emit();\n }\n\n public hide(): void {\n if (!this.overlayRef) return;\n SmzZIndex.clear(this.overlayRef.hostElement);\n this.overlayRef.dispose();\n this.overlayRef = undefined;\n this.origin = undefined;\n this.hidden.emit();\n }\n\n public ngOnDestroy(): void {\n this.overlayRef?.dispose();\n this.overlayRef = undefined;\n }\n\n /** Ancora virtual (objeto com `getBoundingClientRect`) vira um ponto para o CDK. */\n private toPoint(anchor: SmzPopoverTarget): { x: number; y: number; width: number; height: number } {\n const rect = anchor.getBoundingClientRect();\n return { x: rect.left, y: rect.top, width: rect.width, height: rect.height };\n }\n\n /** O `data-testid` posto no hospedeiro vai para o painel renderizado no overlay (usado nos testes e2e). */\n private forwardTestId(): void {\n const testId = this.host.nativeElement.getAttribute('data-testid');\n if (testId) this.overlayRef?.overlayElement.querySelector('[role=\"dialog\"]')?.setAttribute('data-testid', testId);\n }\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n booleanAttribute,\n computed,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output,\n viewChild,\n} from '@angular/core';\nimport { filter } from 'rxjs';\nimport { smzFindTemplate, SmzTemplateDirective } from '../core/template.directive';\nimport { SmzZIndex } from '../core/zindex';\n\nexport type SmzDrawerPosition = 'left' | 'right' | 'top' | 'bottom' | 'full';\n\nconst PANEL_BY_POSITION: Record<SmzDrawerPosition, string> = {\n left: 'h-screen w-80 max-w-full',\n right: 'h-screen w-80 max-w-full',\n top: 'h-80 max-h-full w-screen',\n bottom: 'h-80 max-h-full w-screen',\n full: 'h-screen w-screen',\n};\n\n/**\n * Painel lateral deslizante. Substitui o `p-drawer` do PrimeNG.\n *\n * <ui-drawer [(visible)]=\"aberto\" position=\"right\" header=\"Filtros\">conteudo</ui-drawer>\n */\n@Component({\n selector: 'ui-drawer',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgStyle, NgTemplateOutlet],\n template: `\n <ng-template #panel>\n <aside\n role=\"dialog\"\n aria-modal=\"true\"\n class=\"pointer-events-auto flex flex-col border-ui-line bg-ui-surface-2 font-ui text-ui-fg shadow-overlay\"\n [class]=\"panelClasses()\"\n [ngStyle]=\"style()\"\n >\n @if (headerTemplate(); as headerTpl) {\n <div class=\"border-b border-ui-line px-4 py-3\"><ng-container [ngTemplateOutlet]=\"headerTpl\" /></div>\n }\n @else if (header() || showCloseIcon()) {\n <div class=\"flex items-center justify-between gap-4 border-b border-ui-line px-4 py-3\">\n <span class=\"text-ui-lg font-medium\">{{ header() }}</span>\n @if (showCloseIcon()) {\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 cursor-pointer items-center justify-center rounded-full text-ui-fg-muted transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus\"\n aria-label=\"Fechar\"\n (click)=\"close()\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" />\n </svg>\n </button>\n }\n </div>\n }\n <div class=\"min-h-0 flex-1 overflow-auto\"><ng-content /></div>\n @if (footerTemplate(); as footerTpl) {\n <div class=\"border-t border-ui-line px-4 py-3\"><ng-container [ngTemplateOutlet]=\"footerTpl\" /></div>\n }\n </aside>\n </ng-template>\n `,\n})\nexport class SmzDrawerComponent implements OnDestroy {\n public readonly visible = model(false);\n public readonly position = input<SmzDrawerPosition>('left');\n public readonly fullScreen = input(false, { transform: booleanAttribute });\n public readonly header = input<string | null | undefined>('');\n public readonly modal = input(true, { transform: booleanAttribute });\n public readonly dismissible = input(true, { transform: booleanAttribute });\n public readonly closeOnEscape = input(true, { transform: booleanAttribute });\n public readonly showCloseIcon = input(true, { transform: booleanAttribute });\n public readonly style = input<Record<string, string | number | null> | null | undefined>(null);\n public readonly styleClass = input<string | null | undefined>('');\n /** Aceitos por compatibilidade com o `p-drawer`; sem efeito neste componente. */\n public readonly blockScroll = input(true, { transform: booleanAttribute });\n public readonly ariaCloseLabel = input<string | null | undefined>('');\n public readonly appendTo = input<unknown>(undefined);\n\n public readonly shown = output<void>();\n public readonly hidden = output<void>();\n\n private readonly panel = viewChild.required<TemplateRef<unknown>>('panel');\n private readonly templates = contentChildren(SmzTemplateDirective);\n protected readonly headerTemplate = computed(() => smzFindTemplate(this.templates(), 'header'));\n protected readonly footerTemplate = computed(() => smzFindTemplate(this.templates(), 'footer'));\n\n protected readonly effectivePosition = computed<SmzDrawerPosition>(() => (this.fullScreen() ? 'full' : this.position() ?? 'left'));\n protected readonly panelClasses = computed(() => {\n const position = this.effectivePosition();\n const edge = position === 'left' ? 'border-r' : position === 'right' ? 'border-l' : position === 'top' ? 'border-b' : position === 'bottom' ? 'border-t' : '';\n return `${PANEL_BY_POSITION[position]} ${edge} ${this.styleClass() ?? ''}`.trim();\n });\n\n private readonly overlay = inject(Overlay);\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private overlayRef?: OverlayRef;\n\n constructor() {\n effect(() => {\n if (this.visible()) this.open();\n else this.dispose();\n });\n }\n\n public close(): void {\n this.visible.set(false);\n }\n\n public ngOnDestroy(): void {\n this.dispose();\n }\n\n private open(): void {\n if (this.overlayRef) return;\n\n const position = this.effectivePosition();\n const strategy = this.overlay.position().global();\n if (position === 'left' || position === 'full' || position === 'top') strategy.top('0').left('0');\n if (position === 'right') strategy.top('0').right('0');\n if (position === 'bottom') strategy.bottom('0').left('0');\n\n this.overlayRef = this.overlay.create({\n hasBackdrop: this.modal(),\n positionStrategy: strategy,\n scrollStrategy: this.overlay.scrollStrategies.block(),\n });\n\n SmzZIndex.set('modal', this.overlayRef.hostElement, 1100);\n if (this.overlayRef.backdropElement) {\n this.overlayRef.backdropElement.style.zIndex = String(SmzZIndex.get(this.overlayRef.hostElement) - 1);\n }\n\n if (this.closeOnEscape()) {\n this.overlayRef.keydownEvents().pipe(filter((event) => event.key === 'Escape')).subscribe(() => this.close());\n }\n if (this.modal() && this.dismissible()) {\n this.overlayRef.backdropClick().subscribe(() => this.close());\n }\n\n this.overlayRef.attach(new TemplatePortal(this.panel(), this.viewContainer));\n this.forwardTestId();\n this.shown.emit();\n }\n\n private dispose(): void {\n if (!this.overlayRef) return;\n SmzZIndex.clear(this.overlayRef.hostElement);\n this.overlayRef.dispose();\n this.overlayRef = undefined;\n this.hidden.emit();\n }\n\n /** O `data-testid` posto no hospedeiro vai para o painel renderizado no overlay (usado nos testes e2e). */\n private forwardTestId(): void {\n const testId = this.host.nativeElement.getAttribute('data-testid');\n if (testId) this.overlayRef?.overlayElement.querySelector('[role=\"dialog\"]')?.setAttribute('data-testid', testId);\n }\n}\n","import { Injectable, signal } from '@angular/core';\n\nexport interface SmzToastMessage {\n /** success | info | warn | error | secondary | contrast (vocabulario antigo) */\n severity?: string;\n summary?: string;\n detail?: string;\n id?: unknown;\n /** Permite ter varios containers `ui-toast`, cada um escutando uma chave. */\n key?: string;\n /** Tempo de vida em ms (padrao do container se omitido). */\n life?: number;\n sticky?: boolean;\n closable?: boolean;\n data?: unknown;\n icon?: string;\n contentStyleClass?: string;\n styleClass?: string;\n closeIcon?: string;\n [extra: string]: unknown;\n}\n\nlet nextId = 0;\n\n/** Barramento de mensagens do toast. Substitui o `MessageService` do PrimeNG. */\n@Injectable({ providedIn: 'root' })\nexport class SmzMessageService {\n private readonly state = signal<ReadonlyArray<SmzToastMessage>>([]);\n\n /** Mensagens atualmente na fila (todas as chaves). */\n public readonly messages = this.state.asReadonly();\n\n public add(message: SmzToastMessage): void {\n this.addAll([message]);\n }\n\n public addAll(messages: SmzToastMessage[]): void {\n const prepared = messages.map((message) => ({ ...message, id: message.id ?? `smz-toast-${++nextId}` }));\n this.state.update((current) => [...current, ...prepared]);\n }\n\n public remove(message: SmzToastMessage): void {\n this.state.update((current) => current.filter((entry) => entry !== message && entry.id !== message.id));\n }\n\n /** Remove todas as mensagens, ou so as da chave informada. */\n public clear(key?: string): void {\n this.state.update((current) => (key ? current.filter((entry) => entry.key !== key) : []));\n }\n}\n","import { NgClass, NgStyle } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, computed, effect, inject, input, viewChild } from '@angular/core';\nimport { SMZ_SOFT_TONE, SmzSeverity } from '../core/severity';\nimport { SmzMessageService, SmzToastMessage } from './message.service';\n\nexport type SmzToastPosition = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right' | 'center';\n\nconst POSITION_CLASSES: Record<SmzToastPosition, string> = {\n 'top-left': 'top-4 left-4 items-start',\n 'top-center': 'top-4 left-1/2 -translate-x-1/2 items-center',\n 'top-right': 'top-4 right-4 items-end',\n 'bottom-left': 'bottom-4 left-4 items-start',\n 'bottom-center': 'bottom-4 left-1/2 -translate-x-1/2 items-center',\n 'bottom-right': 'bottom-4 right-4 items-end',\n center: 'top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 items-center',\n};\n\nconst SEVERITY_TONE: Record<string, SmzSeverity> = {\n success: 'success',\n info: 'primary',\n warn: 'warning',\n error: 'danger',\n secondary: 'secondary',\n contrast: 'secondary',\n};\n\nconst DEFAULT_LIFE = 3000;\n\n/**\n * Container de toasts: exibe as mensagens do `SmzMessageService`. Substitui o `p-toast` do PrimeNG.\n *\n * <ui-toast position=\"bottom-right\" />\n */\n@Component({\n selector: 'ui-toast',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, NgStyle],\n template: `\n <!-- Camada na top layer (Popover API): overlays do CDK (drawer/dialog) ficam la e z-index nao os supera. -->\n <div #layer popover=\"manual\" class=\"pointer-events-none fixed inset-0 m-0 h-full w-full overflow-visible border-0 bg-transparent p-0\">\n <div\n class=\"pointer-events-none fixed z-[2000] flex w-80 max-w-[95vw] flex-col gap-2\"\n [class]=\"positionClasses()\"\n [ngClass]=\"styleClass()\"\n [ngStyle]=\"style()\"\n >\n @for (message of visibleMessages(); track message.id) {\n <div\n role=\"alert\"\n aria-live=\"assertive\"\n class=\"pointer-events-auto flex items-start gap-3 rounded-overlay border px-4 py-3 font-ui shadow-overlay\"\n [class]=\"toneClasses(message)\"\n [ngClass]=\"message.styleClass\"\n (mouseenter)=\"pause(message)\"\n (mouseleave)=\"resume(message)\"\n >\n @if (message.icon) {\n <i [class]=\"message.icon\" aria-hidden=\"true\"></i>\n }\n <div class=\"min-w-0 flex-1\" [ngClass]=\"message.contentStyleClass\">\n @if (message.summary) {\n <div class=\"text-ui-md font-medium\">{{ message.summary }}</div>\n }\n @if (message.detail) {\n <div class=\"text-ui-sm\">{{ message.detail }}</div>\n }\n </div>\n @if (message.closable !== false) {\n <button\n type=\"button\"\n class=\"inline-flex h-6 w-6 shrink-0 cursor-pointer items-center justify-center rounded-full transition-colors duration-ui hover:bg-ui-fg/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus\"\n aria-label=\"Fechar\"\n (click)=\"close(message)\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-3.5 w-3.5\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" />\n </svg>\n </button>\n }\n </div>\n }\n </div>\n </div>\n `,\n})\nexport class SmzToastContainerComponent {\n public readonly position = input<SmzToastPosition>('top-right');\n public readonly key = input<string | null | undefined>(undefined);\n public readonly life = input(DEFAULT_LIFE);\n public readonly style = input<Record<string, string | number | null> | null | undefined>(null);\n public readonly styleClass = input<string | null | undefined>('');\n\n private readonly service = inject(SmzMessageService);\n private readonly timers = new Map<unknown, { handle: ReturnType<typeof setTimeout>; start: number; remaining: number }>();\n\n protected readonly positionClasses = computed(() => POSITION_CLASSES[this.position()] ?? POSITION_CLASSES['top-right']);\n protected readonly visibleMessages = computed(() => {\n const key = this.key();\n return this.service.messages().filter((message) => (key ? message.key === key : !message.key));\n });\n\n private readonly layer = viewChild<ElementRef<HTMLElement & { showPopover?: () => void; hidePopover?: () => void }>>('layer');\n\n constructor() {\n effect(() => {\n for (const message of this.visibleMessages()) this.schedule(message);\n });\n // Abre a camada quando ha mensagens (reabrindo a cada mudanca para ficar acima de overlays abertos depois) e fecha quando nao ha.\n effect(() => {\n const count = this.visibleMessages().length;\n const element = this.layer()?.nativeElement;\n if (!element || typeof element.showPopover !== 'function') return;\n try {\n if (element.matches(':popover-open')) element.hidePopover?.();\n if (count > 0) element.showPopover();\n }\n catch {\n /* sem suporte: segue com z-index */\n }\n });\n\n inject(DestroyRef).onDestroy(() => this.timers.forEach((timer) => clearTimeout(timer.handle)));\n }\n\n protected toneClasses(message: SmzToastMessage): string {\n const tone = SEVERITY_TONE[message.severity ?? 'info'] ?? 'primary';\n return `${SMZ_SOFT_TONE[tone]} bg-ui-surface-2`;\n }\n\n protected close(message: SmzToastMessage): void {\n this.clearTimer(message);\n this.service.remove(message);\n }\n\n protected pause(message: SmzToastMessage): void {\n const timer = this.timers.get(message.id);\n if (!timer) return;\n clearTimeout(timer.handle);\n timer.remaining -= Date.now() - timer.start;\n }\n\n protected resume(message: SmzToastMessage): void {\n const timer = this.timers.get(message.id);\n if (!timer || message.sticky) return;\n this.arm(message, Math.max(timer.remaining, 500));\n }\n\n private schedule(message: SmzToastMessage): void {\n if (message.sticky || this.timers.has(message.id)) return;\n this.arm(message, message.life ?? this.life());\n }\n\n private arm(message: SmzToastMessage, duration: number): void {\n const handle = setTimeout(() => this.close(message), duration);\n this.timers.set(message.id, { handle, start: Date.now(), remaining: duration });\n }\n\n private clearTimer(message: SmzToastMessage): void {\n const timer = this.timers.get(message.id);\n if (timer) clearTimeout(timer.handle);\n this.timers.delete(message.id);\n }\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n booleanAttribute,\n inject,\n input,\n output,\n viewChild,\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { filter, merge } from 'rxjs';\nimport { SmzZIndex } from '../core/zindex';\nimport { SmzTooltipDirective } from '../tooltip/tooltip.directive';\nimport { SmzUiMenuItem } from '../types/menu-item';\n\ntype MenuAnchor = Element | { x: number; y: number; width: number; height: number };\n\nconst POSITIONS = [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetY: 4 },\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', offsetY: -4 },\n] as const;\n\n/**\n * Menu de itens, inline ou em popup ancorado. Substitui o `p-menu` do PrimeNG.\n *\n * <button smzButton (click)=\"menu.toggle($event)\"></button>\n * <ui-menu #menu [model]=\"itens\" [popup]=\"true\" />\n */\n@Component({\n selector: 'ui-menu',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, NgStyle, NgTemplateOutlet, RouterLink, SmzTooltipDirective],\n template: `\n <ng-template #row let-item>\n @if (item.routerLink) {\n <a\n role=\"menuitem\"\n class=\"flex w-full cursor-pointer items-center gap-2 rounded-control px-3 py-2 text-left text-ui-md text-ui-fg no-underline transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50\"\n [routerLink]=\"item.routerLink\"\n [queryParams]=\"item.queryParams\"\n [fragment]=\"item.fragment\"\n [smzTooltip]=\"item.tooltip\"\n [ngClass]=\"item.styleClass\"\n (click)=\"activate(item, $event)\"\n >\n <ng-container [ngTemplateOutlet]=\"content\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </a>\n }\n @else if (item.url) {\n <a\n role=\"menuitem\"\n class=\"flex w-full cursor-pointer items-center gap-2 rounded-control px-3 py-2 text-left text-ui-md text-ui-fg no-underline transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50\"\n [href]=\"item.url\"\n [attr.target]=\"item.target\"\n [smzTooltip]=\"item.tooltip\"\n [ngClass]=\"item.styleClass\"\n (click)=\"activate(item, $event)\"\n >\n <ng-container [ngTemplateOutlet]=\"content\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </a>\n }\n @else {\n <button\n type=\"button\"\n role=\"menuitem\"\n class=\"flex w-full cursor-pointer items-center gap-2 rounded-control px-3 py-2 text-left text-ui-md text-ui-fg no-underline transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50\"\n [disabled]=\"item.disabled\"\n [smzTooltip]=\"item.tooltip\"\n [ngClass]=\"item.styleClass\"\n (click)=\"activate(item, $event)\"\n >\n <ng-container [ngTemplateOutlet]=\"content\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </button>\n }\n </ng-template>\n\n <ng-template #content let-item>\n @if (item.icon) {\n <i [class]=\"item.icon\" [ngClass]=\"item.iconClass\" aria-hidden=\"true\"></i>\n }\n @if (item.escape === false) {\n <span class=\"flex-1\" [ngClass]=\"item.labelStyleClass\" [innerHTML]=\"item.label\"></span>\n }\n @else {\n <span class=\"flex-1\" [ngClass]=\"item.labelStyleClass\">{{ item.label }}</span>\n }\n @if (item.badge) {\n <span class=\"rounded-full bg-ui-primary px-1.5 text-ui-xs text-ui-on-primary\" [ngClass]=\"item.badgeStyleClass\">{{ item.badge }}</span>\n }\n </ng-template>\n\n <ng-template #list>\n <div\n role=\"menu\"\n class=\"min-w-48 rounded-overlay border border-ui-line bg-ui-surface-2 p-1 font-ui text-ui-fg\"\n [class]=\"popup() ? 'shadow-overlay' : ''\"\n [ngClass]=\"styleClass()\"\n [ngStyle]=\"style()\"\n >\n @for (item of model(); track $index) {\n @if (item.visible !== false) {\n @if (item.separator) {\n <div role=\"separator\" class=\"my-1 h-px bg-ui-line\"></div>\n }\n @else if (item.items && item.items.length) {\n <div class=\"px-3 py-1.5 text-ui-xs font-medium text-ui-fg-muted\" [smzTooltip]=\"item.tooltip\">{{ item.label }}</div>\n @for (child of item.items; track $index) {\n @if (child.visible !== false) {\n @if (child.separator) {\n <div role=\"separator\" class=\"my-1 h-px bg-ui-line\"></div>\n }\n @else {\n <ng-container [ngTemplateOutlet]=\"row\" [ngTemplateOutletContext]=\"{ $implicit: child }\" />\n }\n }\n }\n }\n @else {\n <ng-container [ngTemplateOutlet]=\"row\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n }\n }\n }\n </div>\n </ng-template>\n\n @if (!popup()) {\n <ng-container [ngTemplateOutlet]=\"list\" />\n }\n `,\n})\nexport class SmzMenuListComponent implements OnDestroy {\n public readonly model = input<SmzUiMenuItem[] | null | undefined>([]);\n public readonly popup = input(false, { transform: booleanAttribute });\n public readonly style = input<Record<string, string | number | null> | null | undefined>(null);\n public readonly styleClass = input<string | null | undefined>('');\n public readonly autoZIndex = input(true, { transform: booleanAttribute });\n /** Aceitos por compatibilidade com o `p-menu`; sem efeito neste componente. */\n public readonly appendTo = input<unknown>(undefined);\n public readonly baseZIndex = input(0);\n\n public readonly shown = output<void>();\n public readonly hidden = output<void>();\n\n private readonly list = viewChild.required<TemplateRef<unknown>>('list');\n private readonly overlay = inject(Overlay);\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private overlayRef?: OverlayRef;\n private origin?: Element;\n\n public get visible(): boolean {\n return !!this.overlayRef;\n }\n\n public toggle(event: Event | null): void {\n if (this.overlayRef) this.hide();\n else this.show(event);\n }\n\n /** Abre o popup ancorado ao elemento do evento. */\n public show(event: Event | null, target?: Element): void {\n const anchor = target ?? (event?.currentTarget as Element | null) ?? (event?.target as Element | null) ?? this.host.nativeElement;\n this.open(anchor, anchor);\n }\n\n /** Abre o popup nas coordenadas da tela (uso tipico: menu de contexto). */\n public showAt(x: number, y: number): void {\n this.open({ x, y, width: 0, height: 0 }, undefined);\n }\n\n public hide(): void {\n if (!this.overlayRef) return;\n SmzZIndex.clear(this.overlayRef.hostElement);\n this.overlayRef.dispose();\n this.overlayRef = undefined;\n this.origin = undefined;\n this.hidden.emit();\n }\n\n public ngOnDestroy(): void {\n this.overlayRef?.dispose();\n this.overlayRef = undefined;\n }\n\n protected activate(item: SmzUiMenuItem, event: Event): void {\n if (item.disabled) {\n event.preventDefault();\n return;\n }\n item.command?.({ originalEvent: event, item });\n if (this.popup()) this.hide();\n }\n\n private open(anchor: MenuAnchor, origin: Element | undefined): void {\n if (this.overlayRef) this.hide();\n this.origin = origin;\n\n this.overlayRef = this.overlay.create({\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(anchor as Element)\n .withPositions([...POSITIONS])\n .withPush(true),\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n });\n\n if (this.autoZIndex()) SmzZIndex.set('menu', this.overlayRef.hostElement, 1000 + this.baseZIndex());\n\n merge(\n this.overlayRef.outsidePointerEvents().pipe(filter((outside) => !this.origin?.contains(outside.target as Node))),\n this.overlayRef.keydownEvents().pipe(filter((key) => key.key === 'Escape')),\n ).subscribe(() => this.hide());\n\n this.overlayRef.attach(new TemplatePortal(this.list(), this.viewContainer));\n this.shown.emit();\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, OnDestroy, effect, inject, input, viewChild } from '@angular/core';\nimport { booleanAttribute } from '@angular/core';\n\n/** Alvo que sabe qual elemento deve ser bloqueado (equivale ao `BlockableUI` do PrimeNG). */\nexport interface SmzBlockableUi {\n getBlockableElement(): HTMLElement;\n}\n\nexport type SmzBlockTarget = HTMLElement | SmzBlockableUi | null | undefined;\n\nfunction resolveElement(target: SmzBlockTarget): HTMLElement | null {\n if (!target) return null;\n if (target instanceof HTMLElement) return target;\n return typeof target.getBlockableElement === 'function' ? target.getBlockableElement() : null;\n}\n\n/**\n * Bloqueia a interacao com um elemento exibindo uma mascara por cima dele. Substitui o `p-blockUI` do PrimeNG.\n * Sem `target`, bloqueia o proprio pai do componente.\n *\n * <ui-block-ui [target]=\"elemento\" [blocked]=\"carregando\"><i class=\"fa-solid fa-lock\"></i></ui-block-ui>\n */\n@Component({\n selector: 'ui-block-ui',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'contents' },\n template: `\n <div\n #mask\n class=\"absolute inset-0 z-[1000] hidden items-center justify-center bg-ui-fg/30 text-ui-surface-1\"\n aria-hidden=\"true\"\n >\n <ng-content />\n </div>\n `,\n})\nexport class SmzBlockUiComponent implements OnDestroy {\n public readonly target = input<SmzBlockTarget | unknown>(null);\n public readonly blocked = input(false, { transform: booleanAttribute });\n\n private readonly mask = viewChild.required<ElementRef<HTMLElement>>('mask');\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private attachedTo: HTMLElement | null = null;\n private previousPosition = '';\n\n constructor() {\n effect(() => {\n const element = resolveElement(this.target() as SmzBlockTarget) ?? this.host.nativeElement.parentElement;\n if (this.blocked() && element) this.block(element);\n else this.unblock();\n });\n }\n\n public ngOnDestroy(): void {\n this.unblock();\n }\n\n private block(element: HTMLElement): void {\n if (this.attachedTo === element) return;\n this.unblock();\n\n this.previousPosition = element.style.position;\n if (getComputedStyle(element).position === 'static') element.style.position = 'relative';\n\n const mask = this.mask().nativeElement;\n mask.classList.remove('hidden');\n mask.classList.add('flex');\n element.appendChild(mask);\n this.attachedTo = element;\n }\n\n private unblock(): void {\n if (!this.attachedTo) return;\n\n const mask = this.mask().nativeElement;\n mask.classList.add('hidden');\n mask.classList.remove('flex');\n this.host.nativeElement.appendChild(mask);\n this.attachedTo.style.position = this.previousPosition;\n this.attachedTo = null;\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/** Barra de ferramentas simples (conteudo projetado). Substitui o `p-toolbar` do PrimeNG. */\n@Component({\n selector: 'ui-toolbar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'toolbar',\n class: 'flex flex-wrap items-center justify-between gap-2 rounded-control border border-ui-line bg-ui-surface-1 p-3 font-ui text-ui-fg',\n },\n template: '<ng-content />',\n})\nexport class SmzToolbarComponent {\n}\n","import { ConnectedPosition, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { TemplateRef, ViewContainerRef } from '@angular/core';\nimport { filter, merge, Observable, Subscription } from 'rxjs';\nimport { SmzZIndex } from './zindex';\n\nconst POSITIONS: ConnectedPosition[] = [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetY: 4 },\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', offsetY: -4 },\n];\n\nexport interface SmzAnchoredPanelOptions {\n /** O painel tem pelo menos a largura da ancora. */\n matchWidth?: boolean;\n /** Fecha ao clicar fora (padrao: true). */\n closeOnOutsideClick?: boolean;\n /** Chamado quando o painel e fechado por clique fora ou Escape. */\n onDismiss?: () => void;\n}\n\n/**\n * Painel suspenso ancorado a um elemento (CDK Overlay): base dos selects, datepicker, autocomplete etc.\n * Fecha com Escape ou clique fora (exceto na propria ancora).\n */\nexport class SmzAnchoredPanel {\n private overlayRef?: OverlayRef;\n private subscription?: Subscription;\n\n constructor(private readonly overlay: Overlay, private readonly viewContainer: ViewContainerRef) {\n }\n\n public get isOpen(): boolean {\n return !!this.overlayRef;\n }\n\n /** Elemento raiz do painel renderizado (para foco e medidas). */\n public get element(): HTMLElement | null {\n return this.overlayRef?.overlayElement ?? null;\n }\n\n public open(anchor: HTMLElement, template: TemplateRef<unknown>, options: SmzAnchoredPanelOptions = {}): void {\n if (this.overlayRef) return;\n\n this.overlayRef = this.overlay.create({\n positionStrategy: this.overlay.position().flexibleConnectedTo(anchor).withPositions(POSITIONS).withPush(true),\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n minWidth: options.matchWidth ? anchor.getBoundingClientRect().width : undefined,\n });\n\n SmzZIndex.set('overlay', this.overlayRef.hostElement, 1000);\n\n const dismiss = (): void => {\n this.close();\n options.onDismiss?.();\n };\n\n const streams: Array<Observable<unknown>> = [this.overlayRef.keydownEvents().pipe(filter((event) => event.key === 'Escape'))];\n if (options.closeOnOutsideClick !== false) {\n streams.push(\n this.overlayRef.outsidePointerEvents().pipe(filter((event) => !anchor.contains(event.target as Node))),\n );\n }\n this.subscription = merge(...streams).subscribe(dismiss);\n\n this.overlayRef.attach(new TemplatePortal(template, this.viewContainer));\n }\n\n public close(): void {\n this.subscription?.unsubscribe();\n this.subscription = undefined;\n if (!this.overlayRef) return;\n SmzZIndex.clear(this.overlayRef.hostElement);\n this.overlayRef.dispose();\n this.overlayRef = undefined;\n }\n\n public updatePosition(): void {\n this.overlayRef?.updatePosition();\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return, @typescript-eslint/explicit-module-boundary-types */\nimport { SmzObjectUtils } from './object-utils';\n\nexport type SmzFilterMode = 'contains' | 'startsWith' | 'endsWith' | 'equals' | 'notContains' | 'notEquals' | string;\n\n/** Configuracao de como ler label/valor de uma opcao (usada por select, multiselect, listbox, selectbutton, autocomplete). */\nexport interface SmzOptionConfig {\n optionLabel?: string | null;\n optionValue?: string | null;\n optionDisabled?: string | null;\n dataKey?: string | null;\n}\n\n/**\n * Texto da opcao. Sem `optionLabel`, opcoes-objeto com `label` usam esse campo (como o `p-select` do PrimeNG);\n * primitivos sao usados como estao.\n */\nexport function optionLabel(option: any, config: SmzOptionConfig): string {\n let value = option;\n if (config.optionLabel) value = SmzObjectUtils.resolveFieldData(option, config.optionLabel);\n else if (option !== null && typeof option === 'object' && option.label !== undefined) value = option.label;\n return value === null || value === undefined ? '' : String(value);\n}\n\n/**\n * Valor da opcao. Sem `optionValue` (e sem `optionLabel`), opcoes-objeto com `value` usam esse campo\n * (como o `p-select` do PrimeNG); caso contrario o proprio objeto e o valor.\n */\nexport function optionValue(option: any, config: SmzOptionConfig): any {\n if (config.optionValue) return SmzObjectUtils.resolveFieldData(option, config.optionValue);\n if (!config.optionLabel && option !== null && typeof option === 'object' && option.value !== undefined) return option.value;\n return option;\n}\n\nexport function optionDisabled(option: any, config: SmzOptionConfig): boolean {\n return config.optionDisabled ? !!SmzObjectUtils.resolveFieldData(option, config.optionDisabled) : false;\n}\n\n/** Igualdade de valores: por `dataKey` quando ha, senao comparacao profunda. */\nexport function sameValue(first: any, second: any, dataKey?: string | null): boolean {\n if (first === second) return true;\n if (first === null || first === undefined || second === null || second === undefined) return false;\n if (dataKey && typeof first === 'object' && typeof second === 'object') {\n return SmzObjectUtils.resolveFieldData(first, dataKey) === SmzObjectUtils.resolveFieldData(second, dataKey);\n }\n return SmzObjectUtils.deepEquals(first, second);\n}\n\nfunction normalize(text: string): string {\n return SmzObjectUtils.removeAccents(text).toLocaleLowerCase();\n}\n\n/** Filtra `options` por texto digitado, no modo informado (padrao: contains), ignorando acentos e caixa. */\nexport function filterOptions<T>(options: readonly T[], text: string, config: SmzOptionConfig & { filterBy?: string | null; mode?: SmzFilterMode }): T[] {\n const query = normalize(text.trim());\n if (!query) return [...options];\n\n const fields = (config.filterBy ?? config.optionLabel ?? '').split(',').map((entry) => entry.trim()).filter(Boolean);\n\n return options.filter((option) => {\n const candidates = fields.length > 0\n ? fields.map((field) => String(SmzObjectUtils.resolveFieldData(option, field) ?? ''))\n : [String(option ?? '')];\n\n return candidates.some((candidate) => {\n const target = normalize(candidate);\n switch (config.mode ?? 'contains') {\n case 'startsWith': return target.startsWith(query);\n case 'endsWith': return target.endsWith(query);\n case 'equals': return target === query;\n case 'notEquals': return target !== query;\n case 'notContains': return !target.includes(query);\n default: return target.includes(query);\n }\n });\n });\n}\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-unsafe-return, max-len */\n/* eslint-disable max-len -- classes Tailwind nos templates */\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-argument */\nimport { Overlay } from '@angular/cdk/overlay';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n booleanAttribute,\n computed,\n contentChildren,\n forwardRef,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SmzAnchoredPanel } from '../core/anchored-panel';\nimport { filterOptions, optionDisabled, optionLabel, optionValue, sameValue, SmzFilterMode, SmzOptionConfig } from '../core/option-utils';\nimport { SmzValueAccessor } from '../core/value-accessor';\nimport { SmzTemplateDirective, smzFindTemplate } from '../core/template.directive';\nimport { smzUniqueId } from '../core/object-utils';\nimport { SmzInputTextDirective } from '../input/input.directives';\n\nexport interface SmzSelectChangeEvent {\n originalEvent?: Event;\n value: any;\n}\n\n/**\n * Lista suspensa de selecao unica. Substitui o `p-select` do PrimeNG.\n *\n * <ui-select [options]=\"paises\" optionLabel=\"name\" dataKey=\"id\" [formControl]=\"pais\" [filter]=\"true\" />\n *\n * Sem `optionValue` o valor do controle e o proprio objeto da opcao.\n */\n@Component({\n selector: 'ui-select',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, NgTemplateOutlet, SmzInputTextDirective],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzSelectComponent), multi: true }],\n host: { class: 'block min-w-0' },\n template: `\n <button\n #trigger\n type=\"button\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n class=\"flex h-control w-full cursor-pointer items-center gap-2 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x text-left font-ui text-ui-md text-ui-fg transition-colors duration-ui focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50\"\n [ngClass]=\"styleClass()\"\n [id]=\"inputId() || null\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-controls]=\"open() ? listId : null\"\n [attr.aria-activedescendant]=\"open() && activeIndex() >= 0 ? listId + '-' + activeIndex() : null\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggle()\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur()\"\n >\n <span class=\"min-w-0 flex-1 truncate\" [class.text-ui-fg-subtle]=\"!hasValue()\">\n @if (hasValue() && selectedItemTemplate(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"{ $implicit: selectedOption() }\" />\n } @else {\n {{ displayLabel() }}\n }\n </span>\n @if (showClear() && hasValue() && !isDisabled()) {\n <span\n role=\"button\"\n tabindex=\"-1\"\n aria-label=\"Limpar\"\n class=\"inline-flex h-5 w-5 items-center justify-center rounded-full text-ui-fg-muted hover:bg-ui-surface-3\"\n (click)=\"clear($event)\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" />\n </svg>\n </span>\n }\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4 shrink-0 text-ui-fg-muted\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M4 6l4 4 4-4\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </button>\n\n <ng-template #panel>\n <div class=\"flex max-h-72 flex-col overflow-hidden rounded-overlay border border-ui-line bg-ui-surface-2 font-ui text-ui-md text-ui-fg shadow-overlay\">\n @if (filter()) {\n <div class=\"border-b border-ui-line p-2\">\n <input\n #filterInput\n smzInputText\n size=\"sm\"\n type=\"text\"\n role=\"searchbox\"\n autocomplete=\"off\"\n [value]=\"filterText()\"\n [attr.placeholder]=\"filterPlaceholder() || null\"\n (input)=\"onFilter($event)\"\n (keydown)=\"onKeydown($event)\"\n />\n </div>\n }\n <ul role=\"listbox\" class=\"min-h-0 flex-1 overflow-auto p-1\" [id]=\"listId\">\n @for (option of visibleOptions(); track $index; let index = $index) {\n <li\n role=\"option\"\n class=\"cursor-pointer rounded-control px-3 py-2\"\n [id]=\"listId + '-' + index\"\n [attr.aria-selected]=\"isSelected(option)\"\n [attr.aria-disabled]=\"isOptionDisabled(option) || null\"\n [class]=\"optionClasses(option, index)\"\n (mouseenter)=\"activeIndex.set(index)\"\n (click)=\"select(option, $event)\"\n >\n @if (itemTemplate(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"{ $implicit: option, index: index }\" />\n } @else {\n {{ labelOf(option) }}\n }\n </li>\n }\n @empty {\n <li class=\"px-3 py-2 text-ui-fg-muted\">{{ filterText() ? emptyFilterMessage() : emptyMessage() }}</li>\n }\n </ul>\n </div>\n </ng-template>\n `,\n})\nexport class SmzSelectComponent extends SmzValueAccessor<any> implements OnDestroy {\n public readonly options = input<readonly any[] | null | undefined>([]);\n public readonly optionLabel = input<string | null | undefined>(null);\n public readonly optionValue = input<string | null | undefined>(null);\n public readonly optionDisabled = input<string | null | undefined>(null);\n public readonly dataKey = input<string | null | undefined>(null);\n public readonly placeholder = input<string | null | undefined>('');\n public readonly filter = input(false, { transform: booleanAttribute });\n public readonly filterBy = input<string | null | undefined>(null);\n public readonly filterMatchMode = input<SmzFilterMode>('contains');\n public readonly filterPlaceholder = input<string | null | undefined>('');\n public readonly showClear = input(false, { transform: booleanAttribute });\n public readonly emptyMessage = input<string | null | undefined>('Nenhum resultado');\n public readonly emptyFilterMessage = input<string | null | undefined>('Nenhum resultado');\n public readonly styleClass = input<string | null | undefined>('');\n public readonly inputId = input<string | null | undefined>('');\n public readonly ariaLabel = input<string | null | undefined>('');\n /** Aceito por compatibilidade com o `p-select`; o painel sempre e anexado ao body pelo CDK. */\n public readonly appendTo = input<unknown>(undefined);\n\n public readonly changed = output<SmzSelectChangeEvent>();\n public readonly showed = output<void>();\n public readonly hidden = output<void>();\n\n protected readonly listId = smzUniqueId('smz-select-');\n protected readonly open = signal(false);\n protected readonly filterText = signal('');\n protected readonly activeIndex = signal(-1);\n\n protected readonly config = computed<SmzOptionConfig>(() => ({\n optionLabel: this.optionLabel(),\n optionValue: this.optionValue(),\n optionDisabled: this.optionDisabled(),\n dataKey: this.dataKey(),\n }));\n\n protected readonly visibleOptions = computed(() =>\n filterOptions(this.options() ?? [], this.filterText(), { ...this.config(), filterBy: this.filterBy(), mode: this.filterMatchMode() }),\n );\n\n /** Templates opcionais: `item` (linha da lista) e `selectedItem` (valor exibido no campo), como no `p-select`. */\n private readonly templates = contentChildren(SmzTemplateDirective);\n protected readonly itemTemplate = computed(() => smzFindTemplate(this.templates(), 'item'));\n protected readonly selectedItemTemplate = computed(() => smzFindTemplate(this.templates(), 'selectedItem'));\n\n protected readonly hasValue = computed(() => this.selectedOption() !== undefined);\n protected readonly selectedOption = computed(() => {\n const current = this.current();\n if (current === null || current === undefined) return undefined;\n return (this.options() ?? []).find((option) => sameValue(optionValue(option, this.config()), current, this.dataKey()));\n });\n protected readonly displayLabel = computed(() => {\n const selected = this.selectedOption();\n return selected === undefined ? (this.placeholder() ?? '') : optionLabel(selected, this.config());\n });\n\n private readonly overlay = inject(Overlay);\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly trigger = viewChild.required<ElementRef<HTMLButtonElement>>('trigger');\n private readonly panel = viewChild.required<TemplateRef<unknown>>('panel');\n private readonly filterInput = viewChild<ElementRef<HTMLInputElement>>('filterInput');\n private readonly anchored = new SmzAnchoredPanel(this.overlay, this.viewContainer);\n\n public ngOnDestroy(): void {\n this.anchored.close();\n }\n\n protected labelOf(option: any): string {\n return optionLabel(option, this.config());\n }\n\n protected isOptionDisabled(option: any): boolean {\n return optionDisabled(option, this.config());\n }\n\n protected isSelected(option: any): boolean {\n return sameValue(optionValue(option, this.config()), this.current(), this.dataKey());\n }\n\n protected optionClasses(option: any, index: number): string {\n if (this.isOptionDisabled(option)) return 'opacity-50 cursor-not-allowed';\n if (this.isSelected(option)) return 'bg-ui-primary/10 text-ui-primary';\n return this.activeIndex() === index ? 'bg-ui-surface-3' : '';\n }\n\n protected toggle(): void {\n if (this.open()) this.close();\n else this.openPanel();\n }\n\n protected onBlur(): void {\n if (!this.open()) this.touch();\n }\n\n protected select(option: any, event?: Event): void {\n if (this.isOptionDisabled(option)) return;\n const value = optionValue(option, this.config());\n this.commit(value);\n this.changed.emit({ originalEvent: event, value });\n this.close();\n this.trigger().nativeElement.focus();\n }\n\n protected clear(event: Event): void {\n event.stopPropagation();\n this.commit(null);\n this.changed.emit({ originalEvent: event, value: null });\n }\n\n protected onFilter(event: Event): void {\n this.filterText.set((event.target as HTMLInputElement).value);\n this.activeIndex.set(this.visibleOptions().length > 0 ? 0 : -1);\n this.anchored.updatePosition();\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const options = this.visibleOptions();\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (!this.open()) this.openPanel();\n else this.activeIndex.set(this.nextEnabled(this.activeIndex(), 1));\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (!this.open()) this.openPanel();\n else this.activeIndex.set(this.nextEnabled(this.activeIndex(), -1));\n break;\n case 'Home':\n if (this.open() && !this.filter()) { event.preventDefault(); this.activeIndex.set(this.nextEnabled(-1, 1)); }\n break;\n case 'End':\n if (this.open() && !this.filter()) { event.preventDefault(); this.activeIndex.set(this.nextEnabled(options.length, -1)); }\n break;\n case 'Enter':\n case ' ':\n if (event.key === ' ' && this.filter() && this.open()) break;\n event.preventDefault();\n if (!this.open()) this.openPanel();\n else if (this.activeIndex() >= 0 && options[this.activeIndex()] !== undefined) this.select(options[this.activeIndex()], event);\n break;\n case 'Escape':\n if (this.open()) { event.preventDefault(); this.close(); this.trigger().nativeElement.focus(); }\n break;\n case 'Tab':\n if (this.open()) this.close();\n break;\n default:\n if (!this.filter() && event.key.length === 1 && !event.ctrlKey && !event.metaKey) this.jumpToLetter(event.key);\n }\n }\n\n private openPanel(): void {\n if (this.isDisabled() || this.open()) return;\n\n this.filterText.set('');\n const selectedIndex = this.visibleOptions().findIndex((option) => this.isSelected(option));\n this.activeIndex.set(selectedIndex >= 0 ? selectedIndex : this.nextEnabled(-1, 1));\n\n this.anchored.open(this.trigger().nativeElement, this.panel(), {\n matchWidth: true,\n onDismiss: () => this.afterClose(),\n });\n this.open.set(true);\n this.showed.emit();\n if (this.filter()) setTimeout(() => this.filterInput()?.nativeElement.focus(), 0);\n }\n\n private close(): void {\n if (!this.open()) return;\n this.anchored.close();\n this.afterClose();\n }\n\n private afterClose(): void {\n this.open.set(false);\n this.filterText.set('');\n this.hidden.emit();\n this.touch();\n }\n\n private nextEnabled(from: number, step: 1 | -1): number {\n const options = this.visibleOptions();\n for (let index = from + step; index >= 0 && index < options.length; index += step) {\n if (!this.isOptionDisabled(options[index])) return index;\n }\n return from >= 0 && from < options.length ? from : -1;\n }\n\n private jumpToLetter(letter: string): void {\n const options = this.visibleOptions();\n const start = this.activeIndex() + 1;\n const lower = letter.toLocaleLowerCase();\n for (let offset = 0; offset < options.length; offset++) {\n const index = (start + offset) % options.length;\n if (this.labelOf(options[index]).toLocaleLowerCase().startsWith(lower) && !this.isOptionDisabled(options[index])) {\n this.activeIndex.set(index);\n if (!this.open()) this.select(options[index]);\n return;\n }\n }\n }\n}\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-unsafe-return, max-len */\n/* eslint-disable max-len -- classes Tailwind nos templates */\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-argument */\nimport { Overlay } from '@angular/cdk/overlay';\nimport { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n booleanAttribute,\n computed,\n contentChildren,\n forwardRef,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SmzAnchoredPanel } from '../core/anchored-panel';\nimport { smzUniqueId } from '../core/object-utils';\nimport { filterOptions, optionDisabled, optionLabel, optionValue, sameValue, SmzFilterMode, SmzOptionConfig } from '../core/option-utils';\nimport { SmzValueAccessor } from '../core/value-accessor';\nimport { SmzTemplateDirective, smzFindTemplate } from '../core/template.directive';\nimport { SmzInputTextDirective } from '../input/input.directives';\n\nexport interface SmzMultiSelectChangeEvent {\n originalEvent?: Event;\n value: any[];\n itemValue?: any;\n}\n\n/**\n * Lista suspensa de selecao multipla. Substitui o `p-multiselect` do PrimeNG.\n *\n * <ui-multi-select [options]=\"itens\" optionLabel=\"name\" dataKey=\"id\" [formControl]=\"selecionados\" />\n */\n@Component({\n selector: 'ui-multi-select',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, NgStyle, NgTemplateOutlet, SmzInputTextDirective],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzMultiSelectComponent), multi: true }],\n host: { class: 'block min-w-0' },\n template: `\n <button\n #trigger\n type=\"button\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n class=\"flex h-control w-full cursor-pointer items-center gap-2 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x text-left font-ui text-ui-md text-ui-fg transition-colors duration-ui focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50\"\n [ngClass]=\"styleClass()\"\n [id]=\"inputId() || null\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-controls]=\"open() ? listId : null\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggle()\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur()\"\n >\n <span class=\"min-w-0 flex-1 truncate\" [class.text-ui-fg-subtle]=\"selectedOptions().length === 0\">\n @if (selectedOptions().length > 0 && selectedItemsTemplate(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"{ $implicit: selectedValues(), options: selectedOptions() }\" />\n } @else {\n {{ displayLabel() }}\n }\n </span>\n @if (showClear() && selectedOptions().length > 0 && !isDisabled()) {\n <span\n role=\"button\"\n tabindex=\"-1\"\n aria-label=\"Limpar\"\n class=\"inline-flex h-5 w-5 items-center justify-center rounded-full text-ui-fg-muted hover:bg-ui-surface-3\"\n (click)=\"clear($event)\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" />\n </svg>\n </span>\n }\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4 shrink-0 text-ui-fg-muted\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M4 6l4 4 4-4\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </button>\n\n <ng-template #panel>\n <div class=\"flex max-h-72 flex-col overflow-hidden rounded-overlay border border-ui-line bg-ui-surface-2 font-ui text-ui-md text-ui-fg shadow-overlay\" [ngStyle]=\"panelStyle()\">\n <div class=\"flex items-center gap-2 border-b border-ui-line p-2\">\n @if (showToggleAll()) {\n <button\n type=\"button\"\n role=\"checkbox\"\n class=\"inline-flex h-5 w-5 shrink-0 cursor-pointer items-center justify-center rounded border\"\n [class]=\"allSelected() ? 'border-ui-primary bg-ui-primary text-ui-on-primary' : 'border-ui-line-strong bg-ui-surface-1 text-transparent'\"\n [attr.aria-checked]=\"allSelected()\"\n aria-label=\"Selecionar todos\"\n (click)=\"toggleAll($event)\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-3.5 w-3.5\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M3 8.5l3.2 3L13 4.5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </button>\n }\n @if (filter()) {\n <input\n #filterInput\n smzInputText\n size=\"sm\"\n type=\"text\"\n role=\"searchbox\"\n autocomplete=\"off\"\n [value]=\"filterText()\"\n [attr.placeholder]=\"filterPlaceholder() || null\"\n (input)=\"onFilter($event)\"\n (keydown)=\"onKeydown($event)\"\n />\n }\n </div>\n <ul role=\"listbox\" aria-multiselectable=\"true\" class=\"min-h-0 flex-1 overflow-auto p-1\" [id]=\"listId\">\n @for (option of visibleOptions(); track $index; let index = $index) {\n <li\n role=\"option\"\n class=\"flex cursor-pointer items-center gap-2 rounded-control px-3 py-2\"\n [attr.aria-selected]=\"isSelected(option)\"\n [class]=\"optionRowClass(option, index)\"\n (mouseenter)=\"activeIndex.set(index)\"\n (click)=\"toggleOption(option, $event)\"\n >\n <span\n class=\"inline-flex h-4 w-4 shrink-0 items-center justify-center rounded border\"\n [class]=\"isSelected(option) ? 'border-ui-primary bg-ui-primary text-ui-on-primary' : 'border-ui-line-strong bg-ui-surface-1 text-transparent'\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M3 8.5l3.2 3L13 4.5\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span class=\"min-w-0 flex-1 truncate\">\n @if (itemTemplate(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"{ $implicit: option, index: index }\" />\n } @else {\n {{ labelOf(option) }}\n }\n </span>\n </li>\n }\n @empty {\n <li class=\"px-3 py-2 text-ui-fg-muted\">{{ filterText() ? emptyFilterMessage() : emptyMessage() }}</li>\n }\n </ul>\n </div>\n </ng-template>\n `,\n})\nexport class SmzMultiSelectComponent extends SmzValueAccessor<any[]> implements OnDestroy {\n public readonly options = input<readonly any[] | null | undefined>([]);\n public readonly optionLabel = input<string | null | undefined>(null);\n public readonly optionValue = input<string | null | undefined>(null);\n public readonly optionDisabled = input<string | null | undefined>(null);\n public readonly dataKey = input<string | null | undefined>(null);\n public readonly placeholder = input<string | null | undefined>('');\n public readonly filter = input(false, { transform: booleanAttribute });\n public readonly filterBy = input<string | null | undefined>(null);\n public readonly filterMatchMode = input<SmzFilterMode>('contains');\n public readonly filterPlaceholder = input<string | null | undefined>('');\n public readonly showClear = input(false, { transform: booleanAttribute });\n public readonly showToggleAll = input(true, { transform: booleanAttribute });\n public readonly emptyMessage = input<string | null | undefined>('Nenhum resultado');\n public readonly emptyFilterMessage = input<string | null | undefined>('Nenhum resultado');\n public readonly maxSelectedLabels = input(3);\n /** Texto quando ha mais itens que `maxSelectedLabels`; `{0}` vira a quantidade. */\n public readonly selectedItemsLabel = input<string | null | undefined>('{0} itens selecionados');\n public readonly panelStyle = input<Record<string, string | number | null> | null | undefined>(null);\n public readonly styleClass = input<string | null | undefined>('');\n public readonly inputId = input<string | null | undefined>('');\n public readonly autofocusFilter = input(true, { transform: booleanAttribute });\n /** Aceitos por compatibilidade com o `p-multiselect`; sem efeito. */\n public readonly appendTo = input<unknown>(undefined);\n public readonly display = input<string | null | undefined>('comma');\n\n public readonly changed = output<SmzMultiSelectChangeEvent>();\n public readonly panelHide = output<void>();\n public readonly panelShow = output<void>();\n\n protected readonly listId = smzUniqueId('smz-multiselect-');\n protected readonly open = signal(false);\n protected readonly filterText = signal('');\n protected readonly activeIndex = signal(-1);\n\n protected readonly config = computed<SmzOptionConfig>(() => ({\n optionLabel: this.optionLabel(),\n optionValue: this.optionValue(),\n optionDisabled: this.optionDisabled(),\n dataKey: this.dataKey(),\n }));\n\n protected readonly visibleOptions = computed(() =>\n filterOptions(this.options() ?? [], this.filterText(), { ...this.config(), filterBy: this.filterBy(), mode: this.filterMatchMode() }),\n );\n\n /** Templates opcionais: `item` (linha da lista) e `selectedItems` (valor exibido no campo; `$implicit` = valores selecionados), como no `p-multiselect`. */\n private readonly templates = contentChildren(SmzTemplateDirective);\n protected readonly itemTemplate = computed(() => smzFindTemplate(this.templates(), 'item'));\n protected readonly selectedItemsTemplate = computed(() => smzFindTemplate(this.templates(), 'selectedItems'));\n\n protected readonly selectedValues = computed<any[]>(() => (Array.isArray(this.current()) ? (this.current() as any[]) : []));\n protected readonly selectedOptions = computed(() =>\n (this.options() ?? []).filter((option) => this.selectedValues().some((value) => sameValue(optionValue(option, this.config()), value, this.dataKey()))),\n );\n protected readonly allSelected = computed(() => {\n const enabled = this.visibleOptions().filter((option) => !optionDisabled(option, this.config()));\n return enabled.length > 0 && enabled.every((option) => this.isSelected(option));\n });\n protected readonly displayLabel = computed(() => {\n const selected = this.selectedOptions();\n if (selected.length === 0) return this.placeholder() ?? '';\n if (selected.length > this.maxSelectedLabels()) {\n return (this.selectedItemsLabel() ?? '{0}').replace('{0}', String(selected.length));\n }\n return selected.map((option) => optionLabel(option, this.config())).join(', ');\n });\n\n private readonly overlay = inject(Overlay);\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly trigger = viewChild.required<ElementRef<HTMLButtonElement>>('trigger');\n private readonly panel = viewChild.required<TemplateRef<unknown>>('panel');\n private readonly filterInput = viewChild<ElementRef<HTMLInputElement>>('filterInput');\n private readonly anchored = new SmzAnchoredPanel(this.overlay, this.viewContainer);\n\n public ngOnDestroy(): void {\n this.anchored.close();\n }\n\n protected labelOf(option: any): string {\n return optionLabel(option, this.config());\n }\n\n protected isSelected(option: any): boolean {\n const value = optionValue(option, this.config());\n return this.selectedValues().some((selected) => sameValue(value, selected, this.dataKey()));\n }\n\n protected optionRowClass(option: any, index: number): string {\n if (optionDisabled(option, this.config())) return 'opacity-50 cursor-not-allowed';\n if (this.activeIndex() === index) return 'bg-ui-surface-3';\n return this.selectedValues().length > 0 && this.isSelected(option) ? 'bg-ui-primary/10' : '';\n }\n\n protected toggle(): void {\n if (this.open()) this.close();\n else this.openPanel();\n }\n\n protected onBlur(): void {\n if (!this.open()) this.touch();\n }\n\n protected toggleOption(option: any, event: Event): void {\n if (optionDisabled(option, this.config())) return;\n const value = optionValue(option, this.config());\n const next = this.isSelected(option)\n ? this.selectedValues().filter((selected) => !sameValue(value, selected, this.dataKey()))\n : [...this.selectedValues(), value];\n this.commit(next);\n this.changed.emit({ originalEvent: event, value: next, itemValue: value });\n }\n\n protected toggleAll(event: Event): void {\n const enabled = this.visibleOptions().filter((option) => !optionDisabled(option, this.config()));\n const enabledValues = enabled.map((option) => optionValue(option, this.config()));\n const keep = this.selectedValues().filter((selected) => !enabledValues.some((value) => sameValue(value, selected, this.dataKey())));\n const next = this.allSelected() ? keep : [...keep, ...enabledValues];\n this.commit(next);\n this.changed.emit({ originalEvent: event, value: next });\n }\n\n protected clear(event: Event): void {\n event.stopPropagation();\n this.commit([]);\n this.changed.emit({ originalEvent: event, value: [] });\n }\n\n protected onFilter(event: Event): void {\n this.filterText.set((event.target as HTMLInputElement).value);\n this.activeIndex.set(this.visibleOptions().length > 0 ? 0 : -1);\n this.anchored.updatePosition();\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const options = this.visibleOptions();\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (!this.open()) this.openPanel();\n else this.activeIndex.set(Math.min(options.length - 1, this.activeIndex() + 1));\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (!this.open()) this.openPanel();\n else this.activeIndex.set(Math.max(0, this.activeIndex() - 1));\n break;\n case 'Enter':\n case ' ':\n if (event.key === ' ' && this.filter() && this.open()) break;\n event.preventDefault();\n if (!this.open()) this.openPanel();\n else if (options[this.activeIndex()] !== undefined) this.toggleOption(options[this.activeIndex()], event);\n break;\n case 'Escape':\n if (this.open()) { event.preventDefault(); this.close(); this.trigger().nativeElement.focus(); }\n break;\n case 'Tab':\n if (this.open()) this.close();\n break;\n default:\n break;\n }\n }\n\n private openPanel(): void {\n if (this.isDisabled() || this.open()) return;\n this.filterText.set('');\n this.activeIndex.set(this.visibleOptions().length > 0 ? 0 : -1);\n this.anchored.open(this.trigger().nativeElement, this.panel(), { matchWidth: true, onDismiss: () => this.afterClose() });\n this.open.set(true);\n this.panelShow.emit();\n if (this.filter() && this.autofocusFilter()) setTimeout(() => this.filterInput()?.nativeElement.focus(), 0);\n }\n\n private close(): void {\n if (!this.open()) return;\n this.anchored.close();\n this.afterClose();\n }\n\n private afterClose(): void {\n this.open.set(false);\n this.filterText.set('');\n this.panelHide.emit();\n this.touch();\n }\n}\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-unsafe-return, max-len */\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument */\nimport { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, booleanAttribute, computed, forwardRef, input, output } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { optionDisabled, optionLabel, optionValue, sameValue, SmzOptionConfig } from '../core/option-utils';\nimport { SmzValueAccessor } from '../core/value-accessor';\n\nexport interface SmzSelectButtonChangeEvent {\n originalEvent?: Event;\n value: any;\n}\n\n/**\n * Grupo de botoes de selecao unica ou multipla. Substitui o `p-selectbutton` do PrimeNG.\n *\n * <ui-select-button [options]=\"tipos\" optionLabel=\"label\" optionValue=\"value\" [(ngModel)]=\"tipo\" />\n */\n@Component({\n selector: 'ui-select-button',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzSelectButtonComponent), multi: true }],\n host: { class: 'inline-flex' },\n template: `\n <div role=\"group\" class=\"inline-flex gap-1 rounded-control bg-ui-surface-3 p-1\" [ngClass]=\"styleClass()\">\n @for (option of options(); track $index) {\n <button\n type=\"button\"\n class=\"inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-control px-control-x font-ui text-ui-md font-medium transition-colors duration-ui focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50\"\n [class]=\"buttonClasses(option)\"\n [attr.aria-pressed]=\"isSelected(option)\"\n [disabled]=\"isDisabled() || isOptionDisabled(option)\"\n (click)=\"toggle(option, $event)\"\n (blur)=\"touch()\"\n >\n @if (iconOf(option); as icon) {\n <i [class]=\"icon\" aria-hidden=\"true\"></i>\n }\n {{ labelOf(option) }}\n </button>\n }\n </div>\n `,\n})\nexport class SmzSelectButtonComponent extends SmzValueAccessor<any> {\n public readonly options = input<readonly any[] | null | undefined>([]);\n public readonly optionLabel = input<string | null | undefined>(null);\n public readonly optionValue = input<string | null | undefined>(null);\n public readonly optionDisabled = input<string | null | undefined>(null);\n public readonly dataKey = input<string | null | undefined>(null);\n public readonly multiple = input(false, { transform: booleanAttribute });\n public readonly allowEmpty = input(true, { transform: booleanAttribute });\n public readonly size = input<'small' | 'large' | null | undefined>(null);\n public readonly styleClass = input<string | null | undefined>('');\n /** Aceito por compatibilidade com o `p-selectbutton`; sem efeito. */\n public readonly appendTo = input<unknown>(undefined);\n\n public readonly changed = output<SmzSelectButtonChangeEvent>();\n\n /** Sem `optionLabel`/`optionValue`, opcoes-objeto com `label`/`value` sao lidas automaticamente (como no PrimeNG). */\n private readonly sample = computed<any>(() => (this.options() ?? [])[0]);\n protected readonly config = computed<SmzOptionConfig>(() => ({\n optionLabel: this.optionLabel() ?? (typeof this.sample() === 'object' && this.sample() !== null && 'label' in this.sample() ? 'label' : null),\n optionValue: this.optionValue() ?? (typeof this.sample() === 'object' && this.sample() !== null && 'value' in this.sample() ? 'value' : null),\n optionDisabled: this.optionDisabled(),\n dataKey: this.dataKey(),\n }));\n\n protected labelOf(option: any): string {\n return optionLabel(option, this.config());\n }\n\n protected iconOf(option: any): string | null {\n return option && typeof option === 'object' && typeof option.icon === 'string' ? option.icon : null;\n }\n\n protected isOptionDisabled(option: any): boolean {\n return optionDisabled(option, this.config());\n }\n\n protected isSelected(option: any): boolean {\n const value = optionValue(option, this.config());\n const current = this.current();\n return this.multiple()\n ? Array.isArray(current) && current.some((selected) => sameValue(value, selected, this.dataKey()))\n : sameValue(value, current, this.dataKey());\n }\n\n protected buttonClasses(option: any): string {\n const size = this.size() === 'small' ? 'h-[calc(var(--smz-control-h-sm)-0.5rem)] text-ui-sm' : this.size() === 'large' ? 'h-[calc(var(--smz-control-h-lg)-0.5rem)] text-ui-lg' : 'h-[calc(var(--smz-control-h)-0.5rem)]';\n const tone = this.isSelected(option) ? 'bg-ui-surface-1 text-ui-fg shadow-card' : 'text-ui-fg-muted hover:text-ui-fg';\n return `${size} ${tone}`;\n }\n\n protected toggle(option: any, event: Event): void {\n const value = optionValue(option, this.config());\n const selected = this.isSelected(option);\n\n if (this.multiple()) {\n const current = Array.isArray(this.current()) ? (this.current() as any[]) : [];\n const nextList = selected ? current.filter((entry) => !sameValue(value, entry, this.dataKey())) : [...current, value];\n if (nextList.length === 0 && !this.allowEmpty()) return;\n this.commit(nextList);\n this.changed.emit({ originalEvent: event, value: nextList });\n return;\n }\n\n if (selected && !this.allowEmpty()) return;\n const next = selected ? null : value;\n this.commit(next);\n this.changed.emit({ originalEvent: event, value: next });\n }\n}\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-unsafe-return, max-len */\n/* eslint-disable max-len -- classes Tailwind nos templates */\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument */\nimport { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n booleanAttribute,\n computed,\n contentChildren,\n forwardRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { filterOptions, optionDisabled, optionLabel, optionValue, sameValue, SmzFilterMode, SmzOptionConfig } from '../core/option-utils';\nimport { smzFindTemplate, SmzTemplateDirective } from '../core/template.directive';\nimport { SmzValueAccessor } from '../core/value-accessor';\nimport { SmzInputTextDirective } from '../input/input.directives';\n\nexport interface SmzListboxClickEvent {\n originalEvent: Event;\n option: any;\n value: any;\n}\n\nexport interface SmzListboxChangeEvent {\n originalEvent?: Event;\n value: any;\n}\n\n/**\n * Lista de selecao (unica ou multipla) sempre visivel. Substitui o `p-listbox` do PrimeNG.\n * Aceita os templates `header`, `item`, `footer` e `empty` via `smzTemplate`.\n *\n * <ui-listbox [options]=\"itens\" optionLabel=\"name\" dataKey=\"id\" [(ngModel)]=\"selecionado\">\n * <ng-template smzTemplate=\"item\" let-item>{{ item.name }}</ng-template>\n * </ui-listbox>\n */\n@Component({\n selector: 'ui-listbox',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, NgStyle, NgTemplateOutlet, SmzInputTextDirective],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzListboxComponent), multi: true }],\n host: { class: 'block min-w-0' },\n template: `\n <div class=\"flex flex-col overflow-hidden rounded-control border border-ui-line bg-ui-surface-1 font-ui text-ui-md text-ui-fg\" [ngClass]=\"styleClass()\" [ngStyle]=\"style()\">\n @if (headerTemplate(); as headerTpl) {\n <div class=\"border-b border-ui-line p-2\"><ng-container [ngTemplateOutlet]=\"headerTpl\" /></div>\n }\n @if (filter()) {\n <div class=\"border-b border-ui-line p-2\">\n <input smzInputText size=\"sm\" type=\"text\" role=\"searchbox\" autocomplete=\"off\" [value]=\"filterText()\" (input)=\"onFilter($event)\" />\n </div>\n }\n <ul role=\"listbox\" class=\"min-h-0 flex-1 overflow-auto p-1\" [attr.aria-multiselectable]=\"multiple()\" [ngStyle]=\"listStyle()\">\n @for (option of visibleOptions(); track $index; let index = $index) {\n <li\n role=\"option\"\n class=\"flex cursor-pointer items-center gap-2 rounded-control px-3 py-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus\"\n [attr.aria-selected]=\"isSelected(option)\"\n [attr.tabindex]=\"index === 0 ? 0 : -1\"\n [class]=\"rowClass(option)\"\n (click)=\"onItemClick(option, $event)\"\n (keydown.enter)=\"onItemClick(option, $event)\"\n (keydown.arrowdown)=\"focusSibling($event, 1)\"\n (keydown.arrowup)=\"focusSibling($event, -1)\"\n >\n @if (checkbox()) {\n <span\n class=\"inline-flex h-4 w-4 shrink-0 items-center justify-center rounded border\"\n [class]=\"isSelected(option) ? 'border-ui-primary bg-ui-primary text-ui-on-primary' : 'border-ui-line-strong bg-ui-surface-1 text-transparent'\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M3 8.5l3.2 3L13 4.5\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n }\n @if (itemTemplate(); as itemTpl) {\n <ng-container [ngTemplateOutlet]=\"itemTpl\" [ngTemplateOutletContext]=\"{ $implicit: option, index: index }\" />\n }\n @else {\n <span class=\"min-w-0 flex-1 truncate\">{{ labelOf(option) }}</span>\n }\n </li>\n }\n @empty {\n @if (emptyTemplate(); as emptyTpl) {\n <li><ng-container [ngTemplateOutlet]=\"emptyTpl\" /></li>\n }\n @else {\n <li class=\"px-3 py-2 text-ui-fg-muted\">{{ filterText() ? emptyFilterMessage() : emptyMessage() }}</li>\n }\n }\n </ul>\n @if (footerTemplate(); as footerTpl) {\n <div class=\"border-t border-ui-line p-2\"><ng-container [ngTemplateOutlet]=\"footerTpl\" /></div>\n }\n </div>\n `,\n})\nexport class SmzListboxComponent extends SmzValueAccessor<any> {\n public readonly options = input<readonly any[] | null | undefined>([]);\n public readonly optionLabel = input<string | null | undefined>(null);\n public readonly optionValue = input<string | null | undefined>(null);\n public readonly optionDisabled = input<string | null | undefined>(null);\n public readonly dataKey = input<string | null | undefined>(null);\n public readonly multiple = input(false, { transform: booleanAttribute });\n public readonly checkbox = input(false, { transform: booleanAttribute });\n public readonly filter = input(false, { transform: booleanAttribute });\n public readonly filterBy = input<string | null | undefined>(null);\n public readonly filterMatchMode = input<SmzFilterMode>('contains');\n /** Aceito por compatibilidade com o `p-listbox`; selecao multipla sempre alterna por clique. */\n public readonly metaKeySelection = input(false, { transform: booleanAttribute });\n public readonly readonly = input(false, { transform: booleanAttribute });\n public readonly emptyMessage = input<string | null | undefined>('Nenhum resultado');\n public readonly emptyFilterMessage = input<string | null | undefined>('Nenhum resultado');\n public readonly listStyle = input<Record<string, string | number | null> | null | undefined>(null);\n public readonly style = input<Record<string, string | number | null> | null | undefined>(null);\n public readonly styleClass = input<string | null | undefined>('');\n\n public readonly changed = output<SmzListboxChangeEvent>();\n public readonly clicked = output<SmzListboxClickEvent>();\n\n /** Elemento hospedeiro (compatibilidade com `Listbox.el` do PrimeNG). */\n public readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n protected readonly filterText = signal('');\n private readonly templates = contentChildren(SmzTemplateDirective);\n protected readonly headerTemplate = computed(() => smzFindTemplate(this.templates(), 'header'));\n protected readonly itemTemplate = computed(() => smzFindTemplate(this.templates(), 'item'));\n protected readonly footerTemplate = computed(() => smzFindTemplate(this.templates(), 'footer'));\n protected readonly emptyTemplate = computed(() => smzFindTemplate(this.templates(), 'empty'));\n\n protected readonly config = computed<SmzOptionConfig>(() => ({\n optionLabel: this.optionLabel(),\n optionValue: this.optionValue(),\n optionDisabled: this.optionDisabled(),\n dataKey: this.dataKey(),\n }));\n protected readonly visibleOptions = computed(() =>\n filterOptions(this.options() ?? [], this.filterText(), { ...this.config(), filterBy: this.filterBy(), mode: this.filterMatchMode() }),\n );\n\n protected labelOf(option: any): string {\n return optionLabel(option, this.config());\n }\n\n protected isSelected(option: any): boolean {\n const value = optionValue(option, this.config());\n const current = this.current();\n return this.multiple()\n ? Array.isArray(current) && current.some((selected) => sameValue(value, selected, this.dataKey()))\n : sameValue(value, current, this.dataKey());\n }\n\n protected rowClass(option: any): string {\n if (this.isDisabled() || optionDisabled(option, this.config())) return 'opacity-50 cursor-not-allowed';\n return this.isSelected(option) && !this.checkbox() ? 'bg-ui-primary/10 text-ui-primary' : 'hover:bg-ui-surface-3';\n }\n\n protected onFilter(event: Event): void {\n this.filterText.set((event.target as HTMLInputElement).value);\n }\n\n protected onItemClick(option: any, event: Event): void {\n if (this.isDisabled() || this.readonly() || optionDisabled(option, this.config())) return;\n\n const value = optionValue(option, this.config());\n const selected = this.isSelected(option);\n let next: any;\n\n if (this.multiple()) {\n const current = Array.isArray(this.current()) ? (this.current() as any[]) : [];\n next = selected ? current.filter((entry) => !sameValue(value, entry, this.dataKey())) : [...current, value];\n }\n else {\n next = selected ? null : value;\n }\n\n this.commit(next);\n this.changed.emit({ originalEvent: event, value: next });\n this.clicked.emit({ originalEvent: event, option, value });\n this.touch();\n }\n\n protected focusSibling(event: Event, step: 1 | -1): void {\n event.preventDefault();\n const row = event.currentTarget as HTMLElement;\n const sibling = (step === 1 ? row.nextElementSibling : row.previousElementSibling) as HTMLElement | null;\n sibling?.focus();\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n/** Campo com icone sobreposto ao input. Substitui o `p-iconfield` do PrimeNG. */\n@Component({\n selector: 'ui-icon-field',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'relative block [&>input]:w-full [&>input]:pl-9' },\n template: '<ng-content />',\n})\nexport class SmzIconFieldComponent {\n}\n\n/** Icone dentro de um `ui-icon-field`. Substitui o `p-inputicon` do PrimeNG. */\n@Component({\n selector: 'ui-input-icon',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'pointer-events-none absolute left-3 top-1/2 inline-flex -translate-y-1/2 items-center text-ui-fg-muted' },\n template: '<i [class]=\"styleClass()\" aria-hidden=\"true\"></i><ng-content />',\n})\nexport class SmzInputIconComponent {\n public readonly styleClass = input<string | null | undefined>('');\n}\n\n/** Agrupa input e complementos lado a lado. Substitui o `p-inputgroup` do PrimeNG. */\n@Component({\n selector: 'ui-input-group',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'flex items-stretch [&>*:not(:first-child)]:rounded-l-none [&>*:not(:last-child)]:rounded-r-none [&>*:not(:first-child)]:-ml-px' },\n template: '<ng-content />',\n})\nexport class SmzInputGroupComponent {\n}\n\n/** Complemento de um `ui-input-group`. Substitui o `p-inputgroupaddon` do PrimeNG. */\n@Component({\n selector: 'ui-input-group-addon',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'inline-flex items-center rounded-control border border-ui-line-strong bg-ui-surface-3 px-input-x-sm font-ui text-ui-md text-ui-fg-muted' },\n template: '<ng-content />',\n})\nexport class SmzInputGroupAddonComponent {\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Injectable, signal } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n/** Textos e calendario localizados usados pelos componentes do kit. Mesmas chaves do `Translation` do PrimeNG. */\nexport interface SmzTranslation {\n startsWith?: string;\n contains?: string;\n notContains?: string;\n endsWith?: string;\n equals?: string;\n notEquals?: string;\n noFilter?: string;\n lt?: string;\n lte?: string;\n gt?: string;\n gte?: string;\n is?: string;\n isNot?: string;\n before?: string;\n after?: string;\n dateIs?: string;\n dateIsNot?: string;\n dateBefore?: string;\n dateAfter?: string;\n clear?: string;\n apply?: string;\n matchAll?: string;\n matchAny?: string;\n addRule?: string;\n removeRule?: string;\n accept?: string;\n reject?: string;\n choose?: string;\n upload?: string;\n cancel?: string;\n close?: string;\n pending?: string;\n dayNames?: string[];\n dayNamesShort?: string[];\n dayNamesMin?: string[];\n monthNames?: string[];\n monthNamesShort?: string[];\n chooseYear?: string;\n chooseMonth?: string;\n chooseDate?: string;\n prevDecade?: string;\n nextDecade?: string;\n prevYear?: string;\n nextYear?: string;\n prevMonth?: string;\n nextMonth?: string;\n am?: string;\n pm?: string;\n today?: string;\n weekHeader?: string;\n firstDayOfWeek?: number;\n showMonthAfterYear?: boolean;\n dateFormat?: string;\n weak?: string;\n medium?: string;\n strong?: string;\n passwordPrompt?: string;\n emptyMessage?: string;\n emptyFilterMessage?: string;\n [key: string]: any;\n}\n\nconst DEFAULTS: SmzTranslation = {\n startsWith: 'Starts with',\n contains: 'Contains',\n notContains: 'Not contains',\n endsWith: 'Ends with',\n equals: 'Equals',\n notEquals: 'Not equals',\n noFilter: 'No Filter',\n lt: 'Less than',\n lte: 'Less than or equal to',\n gt: 'Greater than',\n gte: 'Greater than or equal to',\n is: 'Is',\n isNot: 'Is not',\n before: 'Before',\n after: 'After',\n dateIs: 'Date is',\n dateIsNot: 'Date is not',\n dateBefore: 'Date is before',\n dateAfter: 'Date is after',\n clear: 'Clear',\n apply: 'Apply',\n matchAll: 'Match All',\n matchAny: 'Match Any',\n addRule: 'Add Rule',\n removeRule: 'Remove Rule',\n accept: 'Yes',\n reject: 'No',\n choose: 'Choose',\n upload: 'Upload',\n cancel: 'Cancel',\n close: 'Close',\n pending: 'Pending',\n dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n chooseYear: 'Choose Year',\n chooseMonth: 'Choose Month',\n chooseDate: 'Choose Date',\n prevDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n prevYear: 'Previous Year',\n nextYear: 'Next Year',\n prevMonth: 'Previous Month',\n nextMonth: 'Next Month',\n am: 'am',\n pm: 'pm',\n today: 'Today',\n weekHeader: 'Wk',\n firstDayOfWeek: 0,\n dateFormat: 'mm/dd/yy',\n weak: 'Weak',\n medium: 'Medium',\n strong: 'Strong',\n passwordPrompt: 'Enter a password',\n emptyMessage: 'No results found',\n emptyFilterMessage: 'No results found',\n};\n\n/** Chaves de traducao usadas pelos componentes (mesmos valores do `TranslationKeys` do PrimeNG). */\nexport const SmzTranslationKeys = {\n STARTS_WITH: 'startsWith',\n CONTAINS: 'contains',\n NOT_CONTAINS: 'notContains',\n ENDS_WITH: 'endsWith',\n EQUALS: 'equals',\n NOT_EQUALS: 'notEquals',\n NO_FILTER: 'noFilter',\n LT: 'lt',\n LTE: 'lte',\n GT: 'gt',\n GTE: 'gte',\n IS: 'is',\n IS_NOT: 'isNot',\n BEFORE: 'before',\n AFTER: 'after',\n CLEAR: 'clear',\n APPLY: 'apply',\n MATCH_ALL: 'matchAll',\n MATCH_ANY: 'matchAny',\n ADD_RULE: 'addRule',\n REMOVE_RULE: 'removeRule',\n ACCEPT: 'accept',\n REJECT: 'reject',\n CHOOSE: 'choose',\n UPLOAD: 'upload',\n CANCEL: 'cancel',\n PENDING: 'pending',\n EMPTY_MESSAGE: 'emptyMessage',\n EMPTY_FILTER_MESSAGE: 'emptyFilterMessage',\n} as const;\n\n/**\n * Textos e nomes de calendario dos componentes do kit. O app (ou a core) chama `setTranslation` com o locale ativo.\n * Substitui `PrimeNG.setTranslation` / `getTranslation`.\n */\n@Injectable({ providedIn: 'root' })\nexport class SmzLocaleService {\n private readonly state = signal<SmzTranslation>({ ...DEFAULTS });\n\n /** Traducao atual (signal: componentes reagem a mudancas de idioma). */\n public readonly translation = this.state.asReadonly();\n\n /** Emite quando a traducao muda (para componentes que guardam rotulos em cache). */\n public readonly translationObserver = new Subject<SmzTranslation>();\n\n /** Modos de filtro oferecidos por tipo de coluna (`text`, `numeric`, `date`). */\n public filterMatchModeOptions: Record<string, string[]> = {\n text: ['startsWith', 'contains', 'notContains', 'endsWith', 'equals', 'notEquals'],\n numeric: ['equals', 'notEquals', 'lt', 'lte', 'gt', 'gte'],\n date: ['dateIs', 'dateIsNot', 'dateBefore', 'dateAfter'],\n };\n\n public setTranslation(translation: SmzTranslation | null | undefined): void {\n this.state.set({ ...DEFAULTS, ...(translation ?? {}) });\n this.translationObserver.next(this.state());\n }\n\n public getTranslation<T = string>(key: string): T {\n return this.state()[key] as T;\n }\n}\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-unsafe-return, max-len */\n/* eslint-disable max-len -- classes Tailwind nos templates */\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SmzValueAccessor } from '../core/value-accessor';\n\nexport interface SmzInputNumberInputEvent {\n originalEvent: Event;\n value: number | null;\n formattedValue: string;\n}\n\n/**\n * Campo numerico com formatacao por locale (decimal ou moeda). Substitui o `p-inputnumber` do PrimeNG.\n *\n * <ui-input-number [formControl]=\"preco\" mode=\"currency\" currency=\"BRL\" locale=\"pt-BR\" />\n *\n * O texto e reformatado ao sair do campo; enquanto digita, o valor numerico ja e propagado ao formulario.\n */\n@Component({\n selector: 'ui-input-number',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzInputNumberComponent), multi: true }],\n host: { class: 'flex min-w-0' },\n template: `\n <div class=\"relative flex w-full items-stretch\">\n <input\n #field\n type=\"text\"\n inputmode=\"decimal\"\n autocomplete=\"off\"\n class=\"h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50\"\n [class.pr-14]=\"showButtons()\"\n [attr.id]=\"inputId() || null\"\n [attr.name]=\"name() || null\"\n [attr.placeholder]=\"placeholder() || null\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"current()\"\n role=\"spinbutton\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"readonly()\"\n [value]=\"text()\"\n (focus)=\"onFocus()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur($event)\"\n (keydown)=\"onKeydown($event)\"\n />\n @if (showClear() && current() !== null && !isDisabled()) {\n <button\n type=\"button\"\n tabindex=\"-1\"\n aria-label=\"Limpar\"\n class=\"absolute top-1/2 inline-flex h-6 w-6 -translate-y-1/2 cursor-pointer items-center justify-center rounded-full text-ui-fg-muted hover:bg-ui-surface-3\"\n [class]=\"showButtons() ? 'right-9' : 'right-2'\"\n (click)=\"clear()\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" />\n </svg>\n </button>\n }\n @if (showButtons()) {\n <div class=\"absolute inset-y-px right-px flex w-8 flex-col overflow-hidden rounded-r-control border-l border-ui-line-strong\">\n <button type=\"button\" tabindex=\"-1\" aria-label=\"Aumentar\" class=\"flex flex-1 cursor-pointer items-center justify-center bg-ui-surface-1 text-ui-fg-muted hover:bg-ui-surface-3 disabled:cursor-not-allowed disabled:opacity-50\" [disabled]=\"isDisabled()\" (click)=\"spin(1)\">\n <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" aria-hidden=\"true\"><path d=\"M4 10l4-4 4 4\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg>\n </button>\n <button type=\"button\" tabindex=\"-1\" aria-label=\"Diminuir\" class=\"flex flex-1 cursor-pointer items-center justify-center border-t border-ui-line-strong bg-ui-surface-1 text-ui-fg-muted hover:bg-ui-surface-3 disabled:cursor-not-allowed disabled:opacity-50\" [disabled]=\"isDisabled()\" (click)=\"spin(-1)\">\n <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" aria-hidden=\"true\"><path d=\"M4 6l4 4 4-4\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg>\n </button>\n </div>\n }\n </div>\n `,\n})\nexport class SmzInputNumberComponent extends SmzValueAccessor<number> {\n public readonly mode = input<'decimal' | 'currency' | string>('decimal');\n public readonly locale = input<string | null | undefined>(undefined);\n public readonly localeMatcher = input<string | null | undefined>(undefined);\n public readonly currency = input<string | null | undefined>(undefined);\n public readonly currencyDisplay = input<string | null | undefined>(undefined);\n public readonly useGrouping = input(true, { transform: booleanAttribute });\n public readonly minFractionDigits = input<number | null | undefined>(undefined);\n public readonly maxFractionDigits = input<number | null | undefined>(undefined);\n public readonly min = input<number | null | undefined>(undefined);\n public readonly max = input<number | null | undefined>(undefined);\n public readonly step = input(1);\n public readonly prefix = input<string | null | undefined>('');\n public readonly suffix = input<string | null | undefined>('');\n public readonly showButtons = input(false, { transform: booleanAttribute });\n public readonly showClear = input(false, { transform: booleanAttribute });\n public readonly allowEmpty = input(true, { transform: booleanAttribute });\n public readonly placeholder = input<string | null | undefined>('');\n public readonly readonly = input(false, { transform: booleanAttribute });\n public readonly inputId = input<string | null | undefined>('');\n public readonly name = input<string | null | undefined>('');\n\n public readonly inputed = output<SmzInputNumberInputEvent>();\n public readonly keyDown = output<KeyboardEvent>();\n public readonly blurred = output<Event>();\n public readonly focused = output<void>();\n\n private readonly field = viewChild.required<ElementRef<HTMLInputElement>>('field');\n private readonly editing = signal(false);\n private readonly typed = signal('');\n\n private readonly formatter = computed(() => {\n const isCurrency = this.mode() === 'currency';\n const options: Intl.NumberFormatOptions = {\n style: isCurrency ? 'currency' : 'decimal',\n useGrouping: this.useGrouping(),\n };\n if (isCurrency) {\n options.currency = this.currency() || 'BRL';\n if (this.currencyDisplay()) options.currencyDisplay = this.currencyDisplay() as Intl.NumberFormatOptions['currencyDisplay'];\n }\n if (this.minFractionDigits() != null) options.minimumFractionDigits = this.minFractionDigits() as number;\n if (this.maxFractionDigits() != null) options.maximumFractionDigits = this.maxFractionDigits() as number;\n if (options.minimumFractionDigits != null && options.maximumFractionDigits != null && options.minimumFractionDigits > options.maximumFractionDigits) {\n options.maximumFractionDigits = options.minimumFractionDigits;\n }\n return new Intl.NumberFormat(this.locale() || undefined, options);\n });\n\n private readonly decimalSeparator = computed(() =>\n new Intl.NumberFormat(this.locale() || undefined).formatToParts(1.1).find((part) => part.type === 'decimal')?.value ?? '.',\n );\n\n protected readonly text = computed(() => (this.editing() ? this.typed() : this.format(this.current())));\n\n public override writeValue(value: number | null): void {\n super.writeValue(typeof value === 'number' && !Number.isNaN(value) ? value : null);\n if (!this.editing()) this.typed.set('');\n }\n\n protected onFocus(): void {\n this.editing.set(true);\n this.typed.set(this.rawText(this.current()));\n this.focused.emit();\n setTimeout(() => this.field().nativeElement.select(), 0);\n }\n\n protected onInput(event: Event): void {\n const element = event.target as HTMLInputElement;\n const sanitized = this.sanitize(element.value);\n if (sanitized !== element.value) element.value = sanitized;\n this.typed.set(sanitized);\n\n const value = this.parse(sanitized);\n this.commit(value);\n this.inputed.emit({ originalEvent: event, value, formattedValue: this.format(value) });\n }\n\n protected onBlur(event: Event): void {\n const parsed = this.parse(this.typed());\n this.editing.set(false);\n\n if (parsed === null) {\n if (!this.allowEmpty()) this.commit(this.clamp(0));\n }\n else {\n this.commit(this.clamp(this.round(parsed)));\n }\n\n this.typed.set('');\n this.field().nativeElement.value = this.format(this.current());\n this.touch();\n this.blurred.emit(event);\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n this.keyDown.emit(event);\n if (event.defaultPrevented || this.readonly()) return;\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n this.spin(1);\n }\n else if (event.key === 'ArrowDown') {\n event.preventDefault();\n this.spin(-1);\n }\n }\n\n protected spin(direction: 1 | -1): void {\n if (this.isDisabled() || this.readonly()) return;\n const base = this.current() ?? 0;\n const next = this.clamp(this.round(base + direction * this.step()));\n this.commit(next);\n this.typed.set(this.rawText(next));\n if (!this.editing()) this.field().nativeElement.value = this.format(next);\n this.inputed.emit({ originalEvent: new Event('input'), value: next, formattedValue: this.format(next) });\n }\n\n protected clear(): void {\n this.commit(null);\n this.typed.set('');\n this.field().nativeElement.value = '';\n }\n\n private format(value: number | null): string {\n if (value === null || value === undefined || Number.isNaN(value)) return '';\n return `${this.prefix() ?? ''}${this.formatter().format(value)}${this.suffix() ?? ''}`;\n }\n\n /** Texto editavel: numero sem prefixo/sufixo/agrupamento, com o separador decimal do locale. */\n private rawText(value: number | null): string {\n if (value === null || value === undefined) return '';\n return String(value).replace('.', this.decimalSeparator());\n }\n\n private sanitize(text: string): string {\n const decimal = this.decimalSeparator();\n const allowed = new RegExp(`[^0-9\\\\-${decimal === '.' ? '\\\\.' : decimal}]`, 'g');\n let cleaned = text.replace(allowed, '');\n cleaned = cleaned.replace(/(?!^)-/g, '');\n const first = cleaned.indexOf(decimal);\n if (first >= 0) cleaned = cleaned.slice(0, first + 1) + cleaned.slice(first + 1).split(decimal).join('');\n return cleaned;\n }\n\n private parse(text: string): number | null {\n if (!text || text === '-' || text === this.decimalSeparator()) return null;\n const value = Number(text.replace(this.decimalSeparator(), '.'));\n return Number.isNaN(value) ? null : value;\n }\n\n private round(value: number): number {\n const digits = this.maxFractionDigits() ?? this.formatter().resolvedOptions().maximumFractionDigits ?? 3;\n const factor = Math.pow(10, digits);\n return Math.round((value + Number.EPSILON) * factor) / factor;\n }\n\n private clamp(value: number): number {\n const min = this.min();\n const max = this.max();\n if (min != null && value < min) return min;\n if (max != null && value > max) return max;\n return value;\n }\n}\n","/* eslint-disable quotes -- o formato usa aspas simples como delimitador literal */\nimport { SmzTranslation } from '../core/locale.service';\n\nconst pad = (value: number, length = 2): string => String(value).padStart(length, '0');\n\nconst escapeRegExp = (text: string): string => text.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\ntype Token = { kind: 'literal'; value: string } | { kind: 'field'; value: string };\n\n/** Quebra um formato estilo jQuery UI (`dd/mm/yy`) em tokens de campo e literais (texto entre aspas simples). */\nfunction tokenize(format: string): Token[] {\n const tokens: Token[] = [];\n const fields = ['yy', 'y', 'MM', 'M', 'mm', 'm', 'dd', 'd', 'DD', 'D', 'oo', 'o', '@', '!'];\n let index = 0;\n\n while (index < format.length) {\n if (format[index] === \"'\") {\n if (format[index + 1] === \"'\") {\n tokens.push({ kind: 'literal', value: \"'\" });\n index += 2;\n continue;\n }\n const end = format.indexOf(\"'\", index + 1);\n const stop = end === -1 ? format.length : end;\n tokens.push({ kind: 'literal', value: format.slice(index + 1, stop) });\n index = stop + 1;\n continue;\n }\n\n const field = fields.find((candidate) => format.startsWith(candidate, index));\n if (field) {\n tokens.push({ kind: 'field', value: field });\n index += field.length;\n }\n else {\n tokens.push({ kind: 'literal', value: format[index] });\n index += 1;\n }\n }\n return tokens;\n}\n\nfunction dayOfYear(date: Date): number {\n return Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000);\n}\n\n/** Formata uma data (so a parte de data) no formato estilo jQuery UI: d, dd, o, oo, D, DD, m, mm, M, MM, y, yy, @, !. */\nexport function smzFormatDate(date: Date, format: string, translation: SmzTranslation): string {\n return tokenize(format)\n .map((token) => {\n if (token.kind === 'literal') return token.value;\n switch (token.value) {\n case 'd': return String(date.getDate());\n case 'dd': return pad(date.getDate());\n case 'o': return String(dayOfYear(date));\n case 'oo': return pad(dayOfYear(date), 3);\n case 'D': return translation.dayNamesShort?.[date.getDay()] ?? '';\n case 'DD': return translation.dayNames?.[date.getDay()] ?? '';\n case 'm': return String(date.getMonth() + 1);\n case 'mm': return pad(date.getMonth() + 1);\n case 'M': return translation.monthNamesShort?.[date.getMonth()] ?? '';\n case 'MM': return translation.monthNames?.[date.getMonth()] ?? '';\n case 'y': return String(date.getFullYear()).slice(-2);\n case 'yy': return String(date.getFullYear());\n case '@': return String(date.getTime());\n case '!': return String(date.getTime() * 10000 + 621355968000000000);\n default: return '';\n }\n })\n .join('');\n}\n\n/** Interpreta um texto de data no formato dado; retorna `null` quando nao bate ou a data nao existe. */\nexport function smzParseDate(text: string, format: string, translation: SmzTranslation): Date | null {\n const tokens = tokenize(format);\n const groups: string[] = [];\n const names = (list?: string[]): string => (list ?? []).map(escapeRegExp).join('|');\n\n const pattern = tokens\n .map((token) => {\n if (token.kind === 'literal') return escapeRegExp(token.value);\n groups.push(token.value);\n switch (token.value) {\n case 'd': case 'm': case 'o': return '(\\\\d{1,2})';\n case 'dd': case 'mm': return '(\\\\d{2})';\n case 'oo': return '(\\\\d{3})';\n case 'y': return '(\\\\d{2})';\n case 'yy': return '(\\\\d{4})';\n case 'D': return `(${names(translation.dayNamesShort)})`;\n case 'DD': return `(${names(translation.dayNames)})`;\n case 'M': return `(${names(translation.monthNamesShort)})`;\n case 'MM': return `(${names(translation.monthNames)})`;\n case '@': case '!': return '(\\\\d+)';\n default: return '';\n }\n })\n .join('');\n\n const match = new RegExp(`^${pattern}$`, 'i').exec(text.trim());\n if (!match) return null;\n\n const now = new Date();\n let year = now.getFullYear();\n let month = 0;\n let day = 1;\n let dayOfYearValue = -1;\n\n for (let i = 0; i < groups.length; i++) {\n const raw = match[i + 1];\n switch (groups[i]) {\n case 'd': case 'dd': day = Number(raw); break;\n case 'o': case 'oo': dayOfYearValue = Number(raw); break;\n case 'm': case 'mm': month = Number(raw) - 1; break;\n case 'M': month = (translation.monthNamesShort ?? []).findIndex((name) => name.toLowerCase() === raw.toLowerCase()); break;\n case 'MM': month = (translation.monthNames ?? []).findIndex((name) => name.toLowerCase() === raw.toLowerCase()); break;\n case 'y': { const short = Number(raw); year = short <= (now.getFullYear() % 100) + 10 ? 2000 + short : 1900 + short; break; }\n case 'yy': year = Number(raw); break;\n case '@': return new Date(Number(raw));\n case '!': return new Date((Number(raw) - 621355968000000000) / 10000);\n default: break;\n }\n }\n\n if (month < 0 || month > 11) return null;\n if (dayOfYearValue > 0) {\n month = 0;\n day = dayOfYearValue;\n }\n\n const date = new Date(year, month, day);\n if (dayOfYearValue < 0 && (date.getFullYear() !== year || date.getMonth() !== month || date.getDate() !== day)) return null;\n return date;\n}\n\nexport const smzSameDay = (first: Date | null | undefined, second: Date | null | undefined): boolean =>\n !!first && !!second && first.getFullYear() === second.getFullYear() && first.getMonth() === second.getMonth() && first.getDate() === second.getDate();\n\nexport const smzStartOfDay = (date: Date): Date => new Date(date.getFullYear(), date.getMonth(), date.getDate());\n\nexport const smzTwoDigits = pad;\n\n/** Primeiro dia exibido na grade do mes: volta ate o `firstDayOfWeek`. */\nexport function smzCalendarStart(year: number, month: number, firstDayOfWeek: number): Date {\n const first = new Date(year, month, 1);\n const offset = (first.getDay() - firstDayOfWeek + 7) % 7;\n return new Date(year, month, 1 - offset);\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\nimport { Overlay } from '@angular/cdk/overlay';\nimport { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SmzAnchoredPanel } from '../core/anchored-panel';\nimport { SmzLocaleService } from '../core/locale.service';\nimport { SmzValueAccessor } from '../core/value-accessor';\nimport { smzCalendarStart, smzFormatDate, smzParseDate, smzSameDay, smzStartOfDay, smzTwoDigits } from './date-utils';\n\nexport type SmzDatePickerValue = Date | Date[] | null;\nexport type SmzDateSelectionMode = 'single' | 'multiple' | 'range';\ntype View = 'date' | 'month' | 'year';\n\ninterface DayCell {\n date: Date;\n label: number;\n inMonth: boolean;\n today: boolean;\n disabled: boolean;\n}\n\n/**\n * Seletor de data (e hora). Substitui o `p-datepicker` do PrimeNG.\n *\n * <ui-date-picker [formControl]=\"data\" dateFormat=\"dd/mm/yy\" [showTime]=\"true\" />\n *\n * Formato de texto no estilo jQuery UI (`dd/mm/yy`, `MM d, yy`...). Os nomes de mes e dia vem do `SmzLocaleService`.\n */\n@Component({\n selector: 'ui-date-picker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzDatePickerComponent), multi: true }],\n host: { class: 'block min-w-0' },\n template: `\n <div #anchor class=\"relative flex w-full items-stretch\" [ngClass]=\"styleClass()\">\n <input\n #field\n type=\"text\"\n autocomplete=\"off\"\n class=\"h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger\"\n [class.pr-10]=\"showIcon()\"\n [attr.id]=\"inputId() || null\"\n [attr.placeholder]=\"placeholder() || null\"\n [attr.aria-haspopup]=\"'dialog'\"\n [attr.aria-expanded]=\"open()\"\n [readOnly]=\"readonlyInput()\"\n [disabled]=\"isDisabled()\"\n [value]=\"text()\"\n (focus)=\"onFocus()\"\n (click)=\"onFieldClick()\"\n (input)=\"onTyping($event)\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur($event)\"\n />\n @if (showIcon()) {\n <button\n type=\"button\"\n aria-label=\"Abrir calendario\"\n class=\"absolute inset-y-0 right-0 inline-flex w-10 cursor-pointer items-center justify-center rounded-r-control text-ui-fg-muted hover:text-ui-fg disabled:cursor-not-allowed disabled:opacity-50\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggle()\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4\" fill=\"none\" aria-hidden=\"true\">\n <rect x=\"2\" y=\"3\" width=\"12\" height=\"11\" rx=\"2\" stroke=\"currentColor\" stroke-width=\"1.5\" />\n <path d=\"M2 6.5h12M5.5 1.5v3M10.5 1.5v3\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" />\n </svg>\n </button>\n }\n </div>\n\n <ng-template #panel>\n <div class=\"w-72 rounded-overlay border border-ui-line bg-ui-surface-2 p-3 font-ui text-ui-md text-ui-fg shadow-overlay\" role=\"dialog\" aria-label=\"Calendario\" (mousedown)=\"$event.preventDefault()\">\n @if (!timeOnly()) {\n <div class=\"mb-2 flex items-center justify-between gap-1\">\n <button type=\"button\" class=\"inline-flex h-8 w-8 cursor-pointer items-center justify-center rounded-full hover:bg-ui-surface-3\" [attr.aria-label]=\"translation().prevMonth\" (click)=\"shift(-1)\">\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4\" fill=\"none\" aria-hidden=\"true\"><path d=\"M10 4l-4 4 4 4\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg>\n </button>\n <div class=\"flex items-center gap-1 font-medium\">\n @if (view() === 'date') {\n <button type=\"button\" class=\"cursor-pointer rounded-control px-2 py-1 hover:bg-ui-surface-3\" (click)=\"view.set('month')\">{{ monthName() }}</button>\n }\n @if (view() !== 'year') {\n <button type=\"button\" class=\"cursor-pointer rounded-control px-2 py-1 hover:bg-ui-surface-3\" (click)=\"view.set('year')\">{{ viewYear() }}</button>\n }\n @else {\n <span class=\"px-2 py-1\">{{ decadeStart() }} - {{ decadeStart() + 9 }}</span>\n }\n </div>\n <button type=\"button\" class=\"inline-flex h-8 w-8 cursor-pointer items-center justify-center rounded-full hover:bg-ui-surface-3\" [attr.aria-label]=\"translation().nextMonth\" (click)=\"shift(1)\">\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4\" fill=\"none\" aria-hidden=\"true\"><path d=\"M6 4l4 4-4 4\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg>\n </button>\n </div>\n\n @if (view() === 'date') {\n <div class=\"grid grid-cols-7 gap-y-1 text-center\" role=\"grid\">\n @for (name of weekdayNames(); track $index) {\n <span class=\"py-1 text-ui-xs font-medium text-ui-fg-muted\">{{ name }}</span>\n }\n @for (cell of cells(); track cell.date.getTime()) {\n <button\n type=\"button\"\n class=\"mx-auto inline-flex h-8 w-8 cursor-pointer items-center justify-center rounded-full text-ui-sm transition-colors duration-ui disabled:cursor-not-allowed disabled:opacity-40\"\n [class]=\"dayClasses(cell)\"\n [disabled]=\"cell.disabled\"\n [attr.aria-selected]=\"isSelected(cell.date)\"\n (click)=\"pickDay(cell)\"\n >\n {{ cell.label }}\n </button>\n }\n </div>\n }\n @else if (view() === 'month') {\n <div class=\"grid grid-cols-3 gap-1\">\n @for (name of monthNamesShort(); track $index; let month = $index) {\n <button type=\"button\" class=\"cursor-pointer rounded-control px-2 py-3 text-ui-sm hover:bg-ui-surface-3\" [class]=\"month === viewMonth() ? 'bg-ui-primary/10 text-ui-primary' : ''\" (click)=\"pickMonth(month)\">{{ name }}</button>\n }\n </div>\n }\n @else {\n <div class=\"grid grid-cols-2 gap-1\">\n @for (year of decadeYears(); track year) {\n <button type=\"button\" class=\"cursor-pointer rounded-control px-2 py-3 text-ui-sm hover:bg-ui-surface-3\" [class]=\"year === viewYear() ? 'bg-ui-primary/10 text-ui-primary' : ''\" (click)=\"pickYear(year)\">{{ year }}</button>\n }\n </div>\n }\n }\n\n @if (showTime() || timeOnly()) {\n <div class=\"flex items-center justify-center gap-1\" [class]=\"timeOnly() ? '' : 'mt-3 border-t border-ui-line pt-3'\">\n <div class=\"flex flex-col items-center\">\n <button type=\"button\" class=\"h-6 w-8 cursor-pointer rounded hover:bg-ui-surface-3\" aria-label=\"Aumentar hora\" (click)=\"stepTime('h', 1)\">+</button>\n <span class=\"w-8 text-center text-ui-lg tabular-nums\">{{ displayHour() }}</span>\n <button type=\"button\" class=\"h-6 w-8 cursor-pointer rounded hover:bg-ui-surface-3\" aria-label=\"Diminuir hora\" (click)=\"stepTime('h', -1)\">-</button>\n </div>\n <span class=\"pb-0.5 text-ui-lg\">:</span>\n <div class=\"flex flex-col items-center\">\n <button type=\"button\" class=\"h-6 w-8 cursor-pointer rounded hover:bg-ui-surface-3\" aria-label=\"Aumentar minuto\" (click)=\"stepTime('m', 1)\">+</button>\n <span class=\"w-8 text-center text-ui-lg tabular-nums\">{{ twoDigits(minute()) }}</span>\n <button type=\"button\" class=\"h-6 w-8 cursor-pointer rounded hover:bg-ui-surface-3\" aria-label=\"Diminuir minuto\" (click)=\"stepTime('m', -1)\">-</button>\n </div>\n @if (showSeconds()) {\n <span class=\"pb-0.5 text-ui-lg\">:</span>\n <div class=\"flex flex-col items-center\">\n <button type=\"button\" class=\"h-6 w-8 cursor-pointer rounded hover:bg-ui-surface-3\" aria-label=\"Aumentar segundo\" (click)=\"stepTime('s', 1)\">+</button>\n <span class=\"w-8 text-center text-ui-lg tabular-nums\">{{ twoDigits(second()) }}</span>\n <button type=\"button\" class=\"h-6 w-8 cursor-pointer rounded hover:bg-ui-surface-3\" aria-label=\"Diminuir segundo\" (click)=\"stepTime('s', -1)\">-</button>\n </div>\n }\n @if (hourFormat() === '12') {\n <button type=\"button\" class=\"ml-2 h-8 w-10 cursor-pointer rounded-control border border-ui-line-strong text-ui-sm hover:bg-ui-surface-3\" (click)=\"stepTime('h', 12)\">{{ hour() >= 12 ? translation().pm : translation().am }}</button>\n }\n </div>\n }\n\n @if (showButtonBar()) {\n <div class=\"smz-datepicker-buttonbar mt-3 flex items-center justify-between border-t border-ui-line pt-2\">\n <button type=\"button\" class=\"cursor-pointer rounded-control px-3 py-1 text-ui-sm text-ui-primary hover:bg-ui-primary/10\" (click)=\"goToday()\">{{ translation().today }}</button>\n <button type=\"button\" class=\"cursor-pointer rounded-control px-3 py-1 text-ui-sm text-ui-primary hover:bg-ui-primary/10\" (click)=\"clearValue()\">{{ translation().clear }}</button>\n </div>\n }\n </div>\n </ng-template>\n `,\n})\nexport class SmzDatePickerComponent extends SmzValueAccessor<SmzDatePickerValue> implements OnDestroy {\n public readonly selectionMode = input<SmzDateSelectionMode>('single');\n public readonly dateFormat = input<string | null | undefined>(undefined);\n public readonly showTime = input(false, { transform: booleanAttribute });\n public readonly timeOnly = input(false, { transform: booleanAttribute });\n public readonly showSeconds = input(false, { transform: booleanAttribute });\n public readonly hourFormat = input<'12' | '24'>('24');\n public readonly minDate = input<Date | null | undefined>(null);\n public readonly maxDate = input<Date | null | undefined>(null);\n public readonly showButtonBar = input(false, { transform: booleanAttribute });\n public readonly showIcon = input(false, { transform: booleanAttribute });\n public readonly showOnFocus = input(true, { transform: booleanAttribute });\n public readonly keepInvalid = input(false, { transform: booleanAttribute });\n public readonly readonlyInput = input(false, { transform: booleanAttribute });\n public readonly placeholder = input<string | null | undefined>('');\n public readonly inputId = input<string | null | undefined>('');\n public readonly styleClass = input<string | null | undefined>('');\n /** Aceitos por compatibilidade com o `p-datepicker`; sem efeito. */\n public readonly appendTo = input<unknown>(undefined);\n public readonly touchUI = input(false, { transform: booleanAttribute });\n public readonly focusTrap = input(true, { transform: booleanAttribute });\n\n public readonly selected = output<Date>();\n public readonly cleared = output<void>();\n public readonly opened = output<void>();\n public readonly closed = output<void>();\n public readonly blurred = output<Event>();\n\n private readonly locale = inject(SmzLocaleService);\n protected readonly translation = this.locale.translation;\n protected readonly open = signal(false);\n protected readonly view = signal<View>('date');\n private readonly viewDate = signal<Date>(new Date());\n private readonly typed = signal<string | null>(null);\n protected readonly hour = signal(0);\n protected readonly minute = signal(0);\n protected readonly second = signal(0);\n\n protected readonly viewYear = computed(() => this.viewDate().getFullYear());\n protected readonly viewMonth = computed(() => this.viewDate().getMonth());\n protected readonly decadeStart = computed(() => Math.floor(this.viewYear() / 10) * 10);\n protected readonly decadeYears = computed(() => Array.from({ length: 10 }, (_, index) => this.decadeStart() + index));\n protected readonly monthName = computed(() => this.translation().monthNames?.[this.viewMonth()] ?? '');\n protected readonly monthNamesShort = computed(() => this.translation().monthNamesShort ?? []);\n protected readonly effectiveFormat = computed(() => this.dateFormat() ?? this.translation().dateFormat ?? 'dd/mm/yy');\n\n protected readonly weekdayNames = computed(() => {\n const names = this.translation().dayNamesMin ?? [];\n const first = this.translation().firstDayOfWeek ?? 0;\n return names.map((_, index) => names[(index + first) % names.length]);\n });\n\n protected readonly cells = computed<DayCell[]>(() => {\n const first = this.translation().firstDayOfWeek ?? 0;\n const start = smzCalendarStart(this.viewYear(), this.viewMonth(), first);\n const today = new Date();\n return Array.from({ length: 42 }, (_, index) => {\n const date = new Date(start.getFullYear(), start.getMonth(), start.getDate() + index);\n return { date, label: date.getDate(), inMonth: date.getMonth() === this.viewMonth(), today: smzSameDay(date, today), disabled: this.isOutOfRange(date) };\n });\n });\n\n protected readonly displayHour = computed(() => {\n if (this.hourFormat() === '24') return smzTwoDigits(this.hour());\n const value = this.hour() % 12;\n return smzTwoDigits(value === 0 ? 12 : value);\n });\n\n protected readonly text = computed(() => {\n const typed = this.typed();\n return typed !== null ? typed : this.formatValue(this.current());\n });\n\n private readonly overlay = inject(Overlay);\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly anchorRef = viewChild.required<ElementRef<HTMLElement>>('anchor');\n private readonly fieldRef = viewChild.required<ElementRef<HTMLInputElement>>('field');\n private readonly panel = viewChild.required<TemplateRef<unknown>>('panel');\n private readonly anchored = new SmzAnchoredPanel(this.overlay, this.viewContainer);\n\n /**\n * Aceita `Date`, string (ISO ou parseavel) e numero (timestamp), como o `p-datepicker`.\n * Valores invalidos viram `null` em vez de lancar. O modelo do formulario so muda quando o usuario escolhe uma data.\n */\n public override writeValue(value: SmzDatePickerValue | string | number): void {\n const coerced = coerceDateValue(value);\n super.writeValue(coerced);\n this.typed.set(null);\n this.syncViewTo(coerced);\n }\n\n public ngOnDestroy(): void {\n this.anchored.close();\n }\n\n protected twoDigits(value: number): string {\n return smzTwoDigits(value);\n }\n\n protected toggle(): void {\n if (this.open()) this.close();\n else this.openPanel();\n }\n\n protected onFocus(): void {\n if (this.showOnFocus()) this.openPanel();\n }\n\n protected onFieldClick(): void {\n this.openPanel();\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Enter') {\n this.commitTyped();\n this.close();\n }\n else if (event.key === 'Escape' || event.key === 'Tab') {\n this.close();\n }\n else if (event.key === 'ArrowDown' && !this.open()) {\n event.preventDefault();\n this.openPanel();\n }\n }\n\n protected onTyping(event: Event): void {\n this.typed.set((event.target as HTMLInputElement).value);\n }\n\n protected onBlur(event: Event): void {\n if (this.open()) return;\n this.commitTyped();\n this.touch();\n this.blurred.emit(event);\n }\n\n protected shift(direction: -1 | 1): void {\n const date = this.viewDate();\n if (this.view() === 'date') this.viewDate.set(new Date(date.getFullYear(), date.getMonth() + direction, 1));\n else if (this.view() === 'month') this.viewDate.set(new Date(date.getFullYear() + direction, date.getMonth(), 1));\n else this.viewDate.set(new Date(date.getFullYear() + direction * 10, date.getMonth(), 1));\n this.anchored.updatePosition();\n }\n\n protected pickMonth(month: number): void {\n this.viewDate.set(new Date(this.viewYear(), month, 1));\n this.view.set('date');\n }\n\n protected pickYear(year: number): void {\n this.viewDate.set(new Date(year, this.viewMonth(), 1));\n this.view.set('month');\n }\n\n protected isSelected(date: Date): boolean {\n const value = this.current();\n if (Array.isArray(value)) return value.some((entry) => smzSameDay(entry, date));\n return smzSameDay(value, date);\n }\n\n protected isInRange(date: Date): boolean {\n const value = this.current();\n if (this.selectionMode() !== 'range' || !Array.isArray(value) || !value[0] || !value[1]) return false;\n const day = smzStartOfDay(date).getTime();\n return day > smzStartOfDay(value[0]).getTime() && day < smzStartOfDay(value[1]).getTime();\n }\n\n protected dayClasses(cell: DayCell): string {\n if (this.isSelected(cell.date)) return 'bg-ui-primary text-ui-on-primary';\n if (this.isInRange(cell.date)) return 'bg-ui-primary/10 text-ui-primary';\n if (cell.today) return 'border border-ui-primary text-ui-primary hover:bg-ui-surface-3';\n return cell.inMonth ? 'hover:bg-ui-surface-3' : 'text-ui-fg-subtle hover:bg-ui-surface-3';\n }\n\n protected pickDay(cell: DayCell): void {\n const date = this.withTime(cell.date);\n const mode = this.selectionMode();\n const current = this.current();\n\n if (mode === 'multiple') {\n const list = Array.isArray(current) ? current : [];\n const exists = list.some((entry) => smzSameDay(entry, date));\n this.commit(exists ? list.filter((entry) => !smzSameDay(entry, date)) : [...list, date]);\n }\n else if (mode === 'range') {\n const range = Array.isArray(current) ? current : [];\n if (range.length === 1 || (range.length === 2 && range[1] !== null)) {\n if (range.length === 1 && range[0]) {\n const [start, end] = range[0].getTime() <= date.getTime() ? [range[0], date] : [date, range[0]];\n this.commit([start, end]);\n }\n else {\n this.commit([date]);\n }\n }\n else {\n this.commit([date]);\n }\n }\n else {\n this.commit(date);\n }\n\n this.typed.set(null);\n this.selected.emit(date);\n if (!cell.inMonth) this.viewDate.set(new Date(date.getFullYear(), date.getMonth(), 1));\n\n const done = mode === 'single' ? !this.showTime() : mode === 'range' ? Array.isArray(this.current()) && (this.current() as Date[]).length === 2 : false;\n if (done) this.close();\n }\n\n protected goToday(): void {\n const today = new Date();\n this.pickDay({ date: smzStartOfDay(today), label: today.getDate(), inMonth: true, today: true, disabled: false });\n this.viewDate.set(new Date(today.getFullYear(), today.getMonth(), 1));\n if (this.selectionMode() === 'single') this.close();\n }\n\n protected clearValue(): void {\n this.commit(null);\n this.typed.set(null);\n this.cleared.emit();\n this.close();\n }\n\n protected stepTime(unit: 'h' | 'm' | 's', delta: number): void {\n if (unit === 'h') this.hour.set((this.hour() + delta + 24) % 24);\n if (unit === 'm') this.minute.set((this.minute() + delta + 60) % 60);\n if (unit === 's') this.second.set((this.second() + delta + 60) % 60);\n\n const value = this.current();\n const base = Array.isArray(value) ? value[value.length - 1] : value;\n if (base) {\n const updated = this.withTime(base);\n this.commit(Array.isArray(value) ? [...value.slice(0, -1), updated] : updated);\n this.typed.set(null);\n }\n else if (this.timeOnly()) {\n this.commit(this.withTime(new Date()));\n }\n }\n\n private openPanel(): void {\n if (this.isDisabled() || this.readonlyInput() || this.open()) return;\n this.view.set('date');\n this.syncViewTo(this.current());\n this.anchored.open(this.anchorRef().nativeElement, this.panel(), {\n onDismiss: () => this.afterClose(),\n });\n this.open.set(true);\n this.opened.emit();\n }\n\n private close(): void {\n if (!this.open()) return;\n this.anchored.close();\n this.afterClose();\n }\n\n private afterClose(): void {\n this.open.set(false);\n this.commitTyped();\n this.closed.emit();\n this.touch();\n }\n\n private syncViewTo(value: SmzDatePickerValue): void {\n const base = Array.isArray(value) ? value[value.length - 1] ?? null : value;\n const reference = base ?? new Date();\n this.viewDate.set(new Date(reference.getFullYear(), reference.getMonth(), 1));\n this.hour.set(reference.getHours());\n this.minute.set(reference.getMinutes());\n this.second.set(this.showSeconds() ? reference.getSeconds() : 0);\n }\n\n private withTime(date: Date): Date {\n if (!this.showTime() && !this.timeOnly()) return smzStartOfDay(date);\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), this.hour(), this.minute(), this.showSeconds() ? this.second() : 0);\n }\n\n private isOutOfRange(date: Date): boolean {\n const min = this.minDate();\n const max = this.maxDate();\n const day = smzStartOfDay(date).getTime();\n return (!!min && day < smzStartOfDay(min).getTime()) || (!!max && day > smzStartOfDay(max).getTime());\n }\n\n private formatSingle(date: Date): string {\n const translation = this.translation();\n const dateText = this.timeOnly() ? '' : smzFormatDate(date, this.effectiveFormat(), translation);\n if (!this.showTime() && !this.timeOnly()) return dateText;\n\n let hours = date.getHours();\n let suffix = '';\n if (this.hourFormat() === '12') {\n suffix = ` ${hours >= 12 ? translation.pm : translation.am}`;\n hours = hours % 12 === 0 ? 12 : hours % 12;\n }\n const time = `${smzTwoDigits(hours)}:${smzTwoDigits(date.getMinutes())}${this.showSeconds() ? ':' + smzTwoDigits(date.getSeconds()) : ''}${suffix}`;\n return dateText ? `${dateText} ${time}` : time;\n }\n\n private formatValue(value: SmzDatePickerValue): string {\n if (!value) return '';\n if (!Array.isArray(value)) return this.formatSingle(value);\n if (this.selectionMode() === 'range') return value.filter(Boolean).map((entry) => this.formatSingle(entry)).join(' - ');\n return value.map((entry) => this.formatSingle(entry)).join(', ');\n }\n\n private parseSingle(text: string): Date | null {\n let rest = text.trim();\n let hours = 0;\n let minutes = 0;\n let seconds = 0;\n\n if (this.showTime() || this.timeOnly()) {\n const match = /(\\d{1,2}):(\\d{2})(?::(\\d{2}))?\\s*(am|pm)?$/i.exec(rest);\n if (match) {\n hours = Number(match[1]);\n minutes = Number(match[2]);\n seconds = match[3] ? Number(match[3]) : 0;\n if (match[4]) hours = (hours % 12) + (match[4].toLowerCase() === 'pm' ? 12 : 0);\n rest = rest.slice(0, match.index).trim();\n }\n else if (this.timeOnly()) {\n return null;\n }\n }\n\n const base = this.timeOnly() ? new Date() : smzParseDate(rest, this.effectiveFormat(), this.translation());\n if (!base) return null;\n const date = new Date(base.getFullYear(), base.getMonth(), base.getDate(), hours, minutes, seconds);\n return this.isOutOfRange(date) ? null : date;\n }\n\n /** Interpreta o texto digitado; se invalido, descarta (ou mantem, com `keepInvalid`). */\n private commitTyped(): void {\n const text = this.typed();\n if (text === null) return;\n\n const mode = this.selectionMode();\n if (text.trim() === '') {\n this.commit(null);\n this.typed.set(null);\n return;\n }\n\n let parsed: SmzDatePickerValue = null;\n if (mode === 'single') {\n parsed = this.parseSingle(text);\n }\n else {\n const separator = mode === 'range' ? ' - ' : ',';\n const parts = text.split(separator).map((entry) => this.parseSingle(entry));\n parsed = parts.every((entry) => entry !== null) ? (parts as Date[]) : null;\n }\n\n if (parsed !== null) {\n this.commit(parsed);\n this.typed.set(null);\n }\n else if (!this.keepInvalid()) {\n this.typed.set(null);\n }\n }\n}\n\nfunction toDate(value: unknown): Date | null {\n if (value instanceof Date) return Number.isNaN(value.getTime()) ? null : value;\n if (typeof value === 'string' || typeof value === 'number') {\n if (value === '') return null;\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? null : date;\n }\n return null;\n}\n\nfunction coerceDateValue(value: unknown): SmzDatePickerValue {\n if (Array.isArray(value)) {\n const dates = value.map(toDate).filter((date): date is Date => date !== null);\n return dates.length > 0 ? dates : null;\n }\n return toDate(value);\n}\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-unsafe-return, max-len */\n/* eslint-disable max-len -- classes Tailwind nos templates */\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument */\nimport { Overlay } from '@angular/cdk/overlay';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n booleanAttribute,\n computed,\n contentChildren,\n effect,\n forwardRef,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SmzAnchoredPanel } from '../core/anchored-panel';\nimport { optionLabel } from '../core/option-utils';\nimport { smzFindTemplate, SmzTemplateDirective } from '../core/template.directive';\nimport { SmzValueAccessor } from '../core/value-accessor';\n\nexport interface SmzAutoCompleteCompleteEvent {\n originalEvent?: Event;\n query: string;\n}\n\nexport interface SmzAutoCompleteSelectEvent {\n originalEvent?: Event;\n value: any;\n}\n\n/**\n * Campo de texto com sugestoes. Substitui o `p-autocomplete` do PrimeNG.\n * O componente nao busca: ao digitar emite `completeMethod` e o consumidor atualiza `suggestions`.\n *\n * <ui-auto-complete [(ngModel)]=\"texto\" [suggestions]=\"sugestoes\" (completeMethod)=\"buscar($event)\" [dropdown]=\"true\" />\n */\n@Component({\n selector: 'ui-auto-complete',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, NgTemplateOutlet],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzAutoCompleteComponent), multi: true }],\n host: { class: 'block min-w-0' },\n template: `\n <div #anchor class=\"relative flex w-full items-stretch\" [ngClass]=\"styleClass()\">\n <input\n #field\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n aria-autocomplete=\"list\"\n class=\"h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger\"\n [class]=\"dropdown() ? 'pr-10' : ''\"\n [attr.id]=\"inputId() || null\"\n [attr.placeholder]=\"placeholder() || null\"\n [attr.aria-expanded]=\"open()\"\n [disabled]=\"isDisabled()\"\n [value]=\"text()\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeydown($event)\"\n (focus)=\"focused.emit()\"\n (blur)=\"onBlur($event)\"\n />\n @if (showClear() && text() && !isDisabled()) {\n <button type=\"button\" tabindex=\"-1\" aria-label=\"Limpar\" class=\"absolute top-1/2 inline-flex h-6 w-6 -translate-y-1/2 cursor-pointer items-center justify-center rounded-full text-ui-fg-muted hover:bg-ui-surface-3\" [class]=\"dropdown() ? 'right-11' : 'right-2'\" (click)=\"clear()\">\n <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" aria-hidden=\"true\"><path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" /></svg>\n </button>\n }\n @if (dropdown()) {\n <button type=\"button\" tabindex=\"-1\" aria-label=\"Mostrar sugestoes\" class=\"absolute inset-y-0 right-0 inline-flex w-10 cursor-pointer items-center justify-center rounded-r-control text-ui-fg-muted hover:text-ui-fg disabled:cursor-not-allowed disabled:opacity-50\" [disabled]=\"isDisabled()\" (mousedown)=\"$event.preventDefault()\" (click)=\"toggleDropdown()\">\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4\" fill=\"none\" aria-hidden=\"true\"><path d=\"M4 6l4 4 4-4\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg>\n </button>\n }\n </div>\n\n <ng-template #panel>\n <div class=\"max-h-72 overflow-auto rounded-overlay border border-ui-line bg-ui-surface-2 font-ui text-ui-md text-ui-fg shadow-overlay\" (mousedown)=\"$event.preventDefault()\">\n @if (headerTemplate(); as headerTpl) {\n <ng-container [ngTemplateOutlet]=\"headerTpl\" />\n }\n <ul role=\"listbox\" class=\"p-1\">\n @for (item of suggestions(); track $index; let index = $index) {\n <li\n role=\"option\"\n class=\"cursor-pointer rounded-control px-3 py-2\"\n [class]=\"activeIndex() === index ? 'bg-ui-surface-3' : ''\"\n [attr.aria-selected]=\"activeIndex() === index\"\n (mouseenter)=\"activeIndex.set(index)\"\n (click)=\"select(item, $event)\"\n >\n @if (itemTemplate(); as itemTpl) {\n <ng-container [ngTemplateOutlet]=\"itemTpl\" [ngTemplateOutletContext]=\"{ $implicit: item, index: index }\" />\n }\n @else {\n {{ labelOf(item) }}\n }\n </li>\n }\n @empty {\n <li class=\"px-3 py-2 text-ui-fg-muted\">{{ emptyMessage() }}</li>\n }\n </ul>\n </div>\n </ng-template>\n `,\n})\nexport class SmzAutoCompleteComponent extends SmzValueAccessor<any> implements OnDestroy {\n public readonly suggestions = input<readonly any[] | null | undefined>([]);\n public readonly field = input<string | null | undefined>(null);\n public readonly dropdown = input(false, { transform: booleanAttribute });\n public readonly emptyMessage = input<string | null | undefined>('');\n public readonly minLength = input(1);\n public readonly delay = input(300);\n public readonly forceSelection = input(false, { transform: booleanAttribute });\n public readonly showClear = input(false, { transform: booleanAttribute });\n public readonly placeholder = input<string | null | undefined>('');\n public readonly inputId = input<string | null | undefined>('');\n public readonly styleClass = input<string | null | undefined>('');\n /** Aceito por compatibilidade com o `p-autocomplete`; sem efeito. */\n public readonly appendTo = input<unknown>(undefined);\n\n public readonly completeMethod = output<SmzAutoCompleteCompleteEvent>();\n public readonly selectedItem = output<SmzAutoCompleteSelectEvent>();\n public readonly cleared = output<void>();\n public readonly blurred = output<Event>();\n public readonly focused = output<void>();\n\n protected readonly open = signal(false);\n protected readonly activeIndex = signal(-1);\n private readonly typed = signal<string | null>(null);\n private searching = false;\n private timer?: ReturnType<typeof setTimeout>;\n\n private readonly templates = contentChildren(SmzTemplateDirective);\n protected readonly headerTemplate = computed(() => smzFindTemplate(this.templates(), 'header'));\n protected readonly itemTemplate = computed(() => smzFindTemplate(this.templates(), 'item'));\n protected readonly text = computed(() => {\n const typed = this.typed();\n if (typed !== null) return typed;\n const value = this.current();\n return value === null || value === undefined ? '' : this.labelOf(value);\n });\n\n private readonly overlay = inject(Overlay);\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly anchorRef = viewChild.required<ElementRef<HTMLElement>>('anchor');\n private readonly fieldRef = viewChild.required<ElementRef<HTMLInputElement>>('field');\n private readonly panel = viewChild.required<TemplateRef<unknown>>('panel');\n private readonly anchored = new SmzAnchoredPanel(this.overlay, this.viewContainer);\n\n constructor() {\n super();\n // Quando o consumidor entrega novas sugestoes depois de uma busca, mostra o painel.\n effect(() => {\n const list = this.suggestions() ?? [];\n if (!this.searching) return;\n this.searching = false;\n this.activeIndex.set(list.length > 0 ? 0 : -1);\n if (list.length > 0 || this.emptyMessage()) this.openPanel();\n else this.closePanel();\n });\n }\n\n public override writeValue(value: any): void {\n super.writeValue(value);\n this.typed.set(null);\n }\n\n public ngOnDestroy(): void {\n clearTimeout(this.timer);\n this.anchored.close();\n }\n\n protected labelOf(item: any): string {\n return optionLabel(item, { optionLabel: this.field() });\n }\n\n protected onInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.typed.set(value);\n this.commit(value === '' ? null : value);\n this.scheduleSearch(value, event);\n }\n\n protected onBlur(event: Event): void {\n if (this.forceSelection() && this.typed() !== null) {\n this.commit(null);\n this.typed.set(null);\n }\n this.closePanel();\n this.touch();\n this.blurred.emit(event);\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const list = this.suggestions() ?? [];\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (!this.open()) this.triggerSearch(this.text(), event);\n else this.activeIndex.set(Math.min(list.length - 1, this.activeIndex() + 1));\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.activeIndex.set(Math.max(0, this.activeIndex() - 1));\n break;\n case 'Enter':\n if (this.open() && list[this.activeIndex()] !== undefined) {\n event.preventDefault();\n this.select(list[this.activeIndex()], event);\n }\n break;\n case 'Escape':\n case 'Tab':\n this.closePanel();\n break;\n default:\n break;\n }\n }\n\n protected select(item: any, event: Event): void {\n this.commit(item);\n this.typed.set(null);\n this.closePanel();\n this.selectedItem.emit({ originalEvent: event, value: item });\n this.fieldRef().nativeElement.focus();\n }\n\n protected clear(): void {\n this.commit(null);\n this.typed.set('');\n this.closePanel();\n this.cleared.emit();\n this.fieldRef().nativeElement.focus();\n }\n\n protected toggleDropdown(): void {\n if (this.open()) {\n this.closePanel();\n return;\n }\n this.fieldRef().nativeElement.focus();\n this.triggerSearch('', new Event('click'));\n }\n\n private scheduleSearch(query: string, event: Event): void {\n clearTimeout(this.timer);\n if (query.length < this.minLength()) {\n this.closePanel();\n return;\n }\n this.timer = setTimeout(() => this.triggerSearch(query, event), this.delay());\n }\n\n private triggerSearch(query: string, event: Event): void {\n this.searching = true;\n this.completeMethod.emit({ originalEvent: event, query });\n }\n\n private openPanel(): void {\n if (!this.open()) {\n this.anchored.open(this.anchorRef().nativeElement, this.panel(), { matchWidth: true, onDismiss: () => this.open.set(false) });\n this.open.set(true);\n }\n else {\n this.anchored.updatePosition();\n }\n }\n\n private closePanel(): void {\n if (!this.open()) return;\n this.anchored.close();\n this.open.set(false);\n }\n}\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-unsafe-return, max-len */\r\n/* eslint-disable max-len -- classes Tailwind nos templates */\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n booleanAttribute,\r\n computed,\r\n forwardRef,\r\n input,\r\n output,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { SmzValueAccessor } from '../core/value-accessor';\r\n\r\ninterface MaskSlot {\r\n /** Posicao do caractere dentro do texto formatado. */\r\n position: number;\r\n test: RegExp;\r\n}\r\n\r\ninterface ParsedMask {\r\n /** Caractere literal por posicao (`null` onde ha slot). */\r\n literals: Array<string | null>;\r\n slots: MaskSlot[];\r\n /** Quantidade de slots obrigatorios (os demais, depois de `?`, sao opcionais). */\r\n required: number;\r\n}\r\n\r\n/**\r\n * Campo com mascara de entrada. Substitui o `p-inputmask` do PrimeNG.\r\n * Na mascara: `9` = digito, `a` = letra (ou `characterPattern`), `*` = letra ou digito; demais caracteres sao literais.\r\n *\r\n * <ui-input-mask mask=\"(99) 99999-9999\" [formControl]=\"telefone\" [unmask]=\"true\" />\r\n */\r\n@Component({\r\n selector: 'ui-input-mask',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzInputMaskComponent), multi: true }],\r\n host: { class: 'flex min-w-0' },\r\n template: `\r\n <input\r\n #field\r\n [attr.type]=\"type()\"\r\n class=\"h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger\"\r\n [attr.id]=\"inputId() || null\"\r\n [attr.name]=\"name() || null\"\r\n [attr.placeholder]=\"placeholder() || null\"\r\n [disabled]=\"isDisabled()\"\r\n [readOnly]=\"readonly()\"\r\n [value]=\"display()\"\r\n (focus)=\"onFocus()\"\r\n (input)=\"onInput($event)\"\r\n (keydown)=\"onKeydown($event)\"\r\n (blur)=\"onBlur($event)\"\r\n />\r\n `,\r\n})\r\nexport class SmzInputMaskComponent extends SmzValueAccessor<string> {\r\n public readonly mask = input<string | null | undefined>('');\r\n public readonly slotChar = input('_');\r\n public readonly characterPattern = input<string | null | undefined>('[A-Za-z]');\r\n public readonly unmask = input(false, { transform: booleanAttribute });\r\n public readonly autoClear = input(true, { transform: booleanAttribute });\r\n public readonly placeholder = input<string | null | undefined>('');\r\n public readonly readonly = input(false, { transform: booleanAttribute });\r\n public readonly inputId = input<string | null | undefined>('');\r\n public readonly name = input<string | null | undefined>('');\r\n /** Tipo do `<input>` nativo (`text`, `tel`, `password`...). */\r\n public readonly type = input<string>('text');\r\n\r\n public readonly inputed = output<Event>();\r\n public readonly blurred = output<Event>();\r\n public readonly completed = output<void>();\r\n\r\n private readonly field = viewChild.required<ElementRef<HTMLInputElement>>('field');\r\n /** Caracteres dos slots preenchidos, em ordem. */\r\n private readonly entered = signal<string[]>([]);\r\n private readonly focusedState = signal(false);\r\n\r\n protected readonly parsed = computed<ParsedMask>(() => {\r\n const literals: Array<string | null> = [];\r\n const slots: MaskSlot[] = [];\r\n let required = -1;\r\n const letters = new RegExp(`^${this.characterPattern() || '[A-Za-z]'}$`);\r\n\r\n for (const symbol of this.mask() ?? '') {\r\n if (symbol === '?') {\r\n required = slots.length;\r\n continue;\r\n }\r\n if (symbol === '9') slots.push({ position: literals.length, test: /^[0-9]$/ });\r\n else if (symbol === 'a') slots.push({ position: literals.length, test: letters });\r\n else if (symbol === '*') slots.push({ position: literals.length, test: /^[A-Za-z0-9]$/ });\r\n literals.push(symbol === '9' || symbol === 'a' || symbol === '*' ? null : symbol);\r\n }\r\n return { literals, slots, required: required < 0 ? slots.length : required };\r\n });\r\n\r\n protected readonly display = computed(() => {\r\n const { literals } = this.parsed();\r\n const entered = this.entered();\r\n if (entered.length === 0 && !this.focusedState()) return '';\r\n\r\n const required = this.parsed().required;\r\n let slotIndex = 0;\r\n let text = '';\r\n for (const literal of literals) {\r\n if (literal !== null) {\r\n text += literal;\r\n continue;\r\n }\r\n // Slots opcionais so aparecem depois de preenchidos.\r\n if (slotIndex >= required && slotIndex >= entered.length) break;\r\n text += entered[slotIndex++] ?? this.slotChar();\r\n }\r\n return text;\r\n });\r\n\r\n /**\r\n * Aceita `number` alem de `string` (ex.: `FormControl` com `5`): o valor e convertido para texto antes de distribuir\r\n * nos slots, senao `text.length` e `undefined` e o campo abre vazio.\r\n */\r\n public override writeValue(value: string | number | null): void {\r\n super.writeValue(value === null || value === undefined ? null : String(value));\r\n this.entered.set(this.fitToSlots(value === null || value === undefined ? '' : String(value)));\r\n }\r\n\r\n protected onFocus(): void {\r\n this.focusedState.set(true);\r\n // So reposiciona o cursor se o usuario nao selecionou texto (ex.: selecionar tudo para substituir).\r\n setTimeout(() => {\r\n const element = this.field().nativeElement;\r\n if (element.selectionStart === element.selectionEnd) this.moveCaret(this.entered().length);\r\n }, 0);\r\n }\r\n\r\n protected onKeydown(event: KeyboardEvent): void {\r\n if (this.readonly()) return;\r\n\r\n if (event.key === 'Backspace' || event.key === 'Delete') {\r\n event.preventDefault();\r\n const element = this.field().nativeElement;\r\n const selectionStart = element.selectionStart ?? 0;\r\n const selectionEnd = element.selectionEnd ?? selectionStart;\r\n const slots = this.parsed().slots;\r\n const next = [...this.entered()];\r\n\r\n let focusSlot: number;\r\n if (selectionEnd > selectionStart) {\r\n const first = slots.findIndex((slot) => slot.position >= selectionStart);\r\n const last = slots.reduce((found, slot, index) => (slot.position < selectionEnd ? index : found), -1);\r\n if (first >= 0 && last >= first) next.splice(first, last - first + 1);\r\n focusSlot = Math.max(first, 0);\r\n }\r\n else if (event.key === 'Backspace') {\r\n const slotIndex = slots.reduce((found, slot, index) => (slot.position < selectionStart ? index : found), -1);\r\n if (slotIndex >= 0 && slotIndex < next.length) next.splice(slotIndex, 1);\r\n focusSlot = Math.max(slotIndex, 0);\r\n }\r\n else {\r\n const slotIndex = slots.findIndex((slot) => slot.position >= selectionStart);\r\n if (slotIndex >= 0 && slotIndex < next.length) next.splice(slotIndex, 1);\r\n focusSlot = Math.max(slotIndex, 0);\r\n }\r\n\r\n this.apply(next);\r\n setTimeout(() => this.moveCaret(focusSlot));\r\n }\r\n }\r\n\r\n /**\r\n * Sem `maxlength` no `<input>`: numa mascara fixa o texto exibido ja tem o tamanho maximo (ex.: \"5__.___.___-__\"),\r\n * e o navegador bloquearia a insercao de qualquer caractere novo. `fitToSlots` descarta o que nao cabe.\r\n */\r\n protected onInput(event: Event): void {\r\n const element = event.target as HTMLInputElement;\r\n const entered = this.fitToSlots(element.value);\r\n this.apply(entered);\r\n const caretSlot = entered.length;\r\n element.value = this.display();\r\n this.moveCaret(caretSlot);\r\n this.inputed.emit(event);\r\n }\r\n\r\n protected onBlur(event: Event): void {\r\n this.focusedState.set(false);\r\n if (this.entered().length < this.parsed().required && this.autoClear()) {\r\n this.entered.set([]);\r\n this.commit(null);\r\n }\r\n this.field().nativeElement.value = this.display();\r\n this.touch();\r\n this.blurred.emit(event);\r\n }\r\n\r\n /** Redistribui os caracteres de `text` nos slots, descartando o que nao cabe ou nao combina. */\r\n private fitToSlots(text: string): string[] {\r\n const { literals, slots } = this.parsed();\r\n const result: string[] = [];\r\n // Texto ja formatado: pula os literais da mascara na mesma posicao.\r\n const looksFormatted = text.length === literals.length && literals.every((literal, index) => literal === null || text[index] === literal);\r\n\r\n for (let index = 0; index < text.length && result.length < slots.length; index++) {\r\n const char = text[index];\r\n if (looksFormatted && literals[index] !== null) continue;\r\n if (char === this.slotChar()) continue;\r\n const slot = slots[result.length];\r\n if (slot.test.test(char)) result.push(char);\r\n }\r\n return result;\r\n }\r\n\r\n private apply(entered: string[]): void {\r\n this.entered.set(entered);\r\n if (entered.length === 0) {\r\n this.commit(null);\r\n return;\r\n }\r\n\r\n const complete = entered.length >= this.parsed().required;\r\n this.commit(this.unmask() ? entered.join('') : this.display());\r\n if (complete) this.completed.emit();\r\n }\r\n\r\n private moveCaret(slotIndex: number): void {\r\n const { literals, slots } = this.parsed();\r\n const position = slotIndex >= slots.length ? literals.length : slots[slotIndex].position;\r\n this.field().nativeElement.setSelectionRange(position, position);\r\n }\r\n}\r\n","/* eslint-disable max-len -- classes Tailwind nos templates */\nimport { ChangeDetectionStrategy, Component, booleanAttribute, computed, forwardRef, inject, input, signal } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SmzLocaleService } from '../core/locale.service';\nimport { SmzValueAccessor } from '../core/value-accessor';\n\nconst DEFAULT_MEDIUM = '^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{6,})';\nconst DEFAULT_STRONG = '^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.{8,})';\n\n/**\n * Campo de senha com alternancia de visibilidade e medidor de forca. Substitui o `p-password` do PrimeNG.\n *\n * <ui-password [formControl]=\"senha\" [toggleMask]=\"true\" [feedback]=\"true\" />\n */\n@Component({\n selector: 'ui-password',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzPasswordComponent), multi: true }],\n host: { class: 'block min-w-0' },\n template: `\n <div class=\"relative flex w-full items-stretch\">\n <input\n [type]=\"visible() ? 'text' : 'password'\"\n autocomplete=\"off\"\n class=\"h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger\"\n [class.pr-10]=\"toggleMask()\"\n [attr.id]=\"inputId() || null\"\n [attr.placeholder]=\"placeholder() || null\"\n [disabled]=\"isDisabled()\"\n [value]=\"current() ?? ''\"\n (input)=\"onInput($event)\"\n (blur)=\"touch()\"\n />\n @if (toggleMask()) {\n <button\n type=\"button\"\n class=\"absolute inset-y-0 right-0 inline-flex w-10 cursor-pointer items-center justify-center rounded-r-control text-ui-fg-muted hover:text-ui-fg disabled:cursor-not-allowed disabled:opacity-50\"\n [attr.aria-label]=\"visible() ? 'Ocultar senha' : 'Mostrar senha'\"\n [disabled]=\"isDisabled()\"\n (click)=\"visible.set(!visible())\"\n >\n @if (visible()) {\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M1.5 8s2.5-4.5 6.5-4.5S14.5 8 14.5 8 12 12.5 8 12.5 1.5 8 1.5 8z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linejoin=\"round\" />\n <circle cx=\"8\" cy=\"8\" r=\"2\" stroke=\"currentColor\" stroke-width=\"1.5\" />\n </svg>\n }\n @else {\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M2 2l12 12M6.3 4.2A6.6 6.6 0 0 1 8 3.5c4 0 6.5 4.5 6.5 4.5a11 11 0 0 1-2 2.5M9.7 11.8A6.6 6.6 0 0 1 8 12.5C4 12.5 1.5 8 1.5 8a11 11 0 0 1 2.3-2.7\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n }\n </button>\n }\n </div>\n @if (feedback() && !isDisabled()) {\n <div class=\"mt-2\" aria-live=\"polite\">\n <div class=\"h-1 w-full overflow-hidden rounded-full bg-ui-surface-3\">\n <div class=\"h-full rounded-full transition-all duration-ui\" [class]=\"meterClass()\" [style.width.%]=\"meterWidth()\"></div>\n </div>\n <div class=\"mt-1 text-ui-xs text-ui-fg-muted\">{{ meterLabel() }}</div>\n </div>\n }\n `,\n})\nexport class SmzPasswordComponent extends SmzValueAccessor<string> {\n public readonly toggleMask = input(false, { transform: booleanAttribute });\n public readonly feedback = input(true, { transform: booleanAttribute });\n public readonly promptLabel = input<string | null | undefined>(undefined);\n public readonly weakLabel = input<string | null | undefined>(undefined);\n public readonly mediumLabel = input<string | null | undefined>(undefined);\n public readonly strongLabel = input<string | null | undefined>(undefined);\n public readonly mediumRegex = input<string | null | undefined>(DEFAULT_MEDIUM);\n public readonly strongRegex = input<string | null | undefined>(DEFAULT_STRONG);\n public readonly placeholder = input<string | null | undefined>('');\n public readonly inputId = input<string | null | undefined>('');\n\n private readonly locale = inject(SmzLocaleService);\n protected readonly visible = signal(false);\n\n private readonly strength = computed<0 | 1 | 2 | 3>(() => {\n const value = this.current() ?? '';\n if (!value) return 0;\n if (new RegExp(this.strongRegex() || DEFAULT_STRONG).test(value)) return 3;\n if (new RegExp(this.mediumRegex() || DEFAULT_MEDIUM).test(value)) return 2;\n return 1;\n });\n\n protected readonly meterWidth = computed(() => [0, 33, 66, 100][this.strength()]);\n protected readonly meterClass = computed(() => ['bg-transparent', 'bg-ui-danger', 'bg-ui-warning', 'bg-ui-success'][this.strength()]);\n protected readonly meterLabel = computed(() => {\n const t = this.locale.translation();\n return [\n this.promptLabel() || t.passwordPrompt,\n this.weakLabel() || t.weak,\n this.mediumLabel() || t.medium,\n this.strongLabel() || t.strong,\n ][this.strength()];\n });\n\n protected onInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.commit(value === '' ? null : value);\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, forwardRef, input, output } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SmzValueAccessor } from '../core/value-accessor';\n\n/**\n * Seletor de cor (amostra com o seletor nativo do navegador). Substitui o `p-colorpicker` do PrimeNG.\n * O valor e a cor em hexadecimal **sem** o `#` (mesmo formato do PrimeNG), por exemplo `ff0000`.\n *\n * <ui-color-picker [formControl]=\"cor\" />\n */\n@Component({\n selector: 'ui-color-picker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzColorPickerComponent), multi: true }],\n host: { class: 'inline-flex' },\n template: `\n <input\n type=\"color\"\n class=\"h-control w-12 cursor-pointer rounded-control border border-ui-line-strong bg-ui-surface-1 p-1 focus:outline-none focus:ring-2 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50\"\n [attr.id]=\"inputId() || null\"\n [disabled]=\"isDisabled()\"\n [value]=\"hex()\"\n (input)=\"onInput($event)\"\n (blur)=\"touch()\"\n />\n `,\n})\nexport class SmzColorPickerComponent extends SmzValueAccessor<string> {\n public readonly inputId = input<string | null | undefined>('');\n /** Aceito por compatibilidade com o `p-colorpicker`; sem efeito. */\n public readonly appendTo = input<unknown>(undefined);\n /** Emitido quando o usuario escolhe uma cor (equivale ao `onChange` do `p-colorpicker`). */\n public readonly changed = output<{ originalEvent: Event; value: string }>();\n\n protected readonly hex = computed(() => {\n const raw = (this.current() ?? '').replace('#', '');\n return /^[0-9a-fA-F]{6}$/.test(raw) ? `#${raw.toLowerCase()}` : '#000000';\n });\n\n protected onInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value.replace('#', '');\n this.commit(value);\n this.changed.emit({ originalEvent: event, value });\n }\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, booleanAttribute, computed, contentChildren, effect, inject, input, model, signal } from '@angular/core';\nimport { smzFindTemplate, SmzTemplateDirective } from '../core/template.directive';\n\nexport type SmzTabValue = string | number;\n\n/**\n * Abas. Substituem o `p-tabs` / `p-tablist` / `p-tab` / `p-tabpanels` / `p-tabpanel` do PrimeNG.\n *\n * <ui-tabs [(value)]=\"aba\">\n * <ui-tab-list><ui-tab [value]=\"0\">Um</ui-tab><ui-tab [value]=\"1\">Dois</ui-tab></ui-tab-list>\n * <ui-tab-panels><ui-tab-panel [value]=\"0\">...</ui-tab-panel><ui-tab-panel [value]=\"1\">...</ui-tab-panel></ui-tab-panels>\n * </ui-tabs>\n *\n * Com `lazy`, o conteudo so e criado quando o painel e aberto pela primeira vez (use `<ng-template smzTemplate=\"content\">`).\n */\n@Component({\n selector: 'ui-tabs',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'block font-ui text-ui-fg' },\n template: '<ng-content />',\n})\nexport class SmzTabsComponent {\n public readonly value = model<SmzTabValue | null>(0);\n public readonly lazy = input(false, { transform: booleanAttribute });\n /** Aceito por compatibilidade com o `p-tabs`; sem efeito. */\n public readonly scrollable = input(false, { transform: booleanAttribute });\n\n public select(value: SmzTabValue): void {\n if (this.value() !== value) this.value.set(value);\n }\n}\n\n@Component({\n selector: 'ui-tab-list',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { role: 'tablist', class: 'flex flex-wrap border-b border-ui-line' },\n template: '<ng-content />',\n})\nexport class SmzTabListComponent {\n}\n\n@Component({\n selector: 'ui-tab',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'tab',\n '[attr.aria-selected]': 'active()',\n '[attr.aria-disabled]': 'disabled() || null',\n '[attr.tabindex]': 'disabled() ? -1 : 0',\n '[class]': 'classes()',\n '(click)': 'activate()',\n '(keydown.enter)': 'activate()',\n '(keydown.space)': 'activate($event)',\n },\n template: '<ng-content />',\n})\nexport class SmzTabComponent {\n public readonly value = input.required<SmzTabValue>();\n public readonly disabled = input(false, { transform: booleanAttribute });\n\n private readonly tabs = inject(SmzTabsComponent);\n protected readonly active = computed(() => this.tabs.value() === this.value());\n protected readonly classes = computed(\n () =>\n 'inline-flex -mb-px items-center gap-2 border-b-2 px-4 py-3 text-ui-md font-medium transition-colors duration-ui focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ui-focus ' +\n (this.disabled() ? 'cursor-not-allowed opacity-50 ' : 'cursor-pointer ') +\n (this.active() ? 'border-ui-primary text-ui-primary' : 'border-transparent text-ui-fg-muted hover:text-ui-fg'),\n );\n\n protected activate(event?: Event): void {\n event?.preventDefault();\n if (!this.disabled()) this.tabs.select(this.value());\n }\n}\n\n@Component({\n selector: 'ui-tab-panels',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'block pt-4' },\n template: '<ng-content />',\n})\nexport class SmzTabPanelsComponent {\n}\n\n@Component({\n selector: 'ui-tab-panel',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet],\n host: { role: 'tabpanel', '[class.hidden]': '!active()' },\n template: `\n @if (!tabs.lazy() || visited()) {\n @if (contentTemplate(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n }\n @else {\n <ng-content />\n }\n }\n `,\n})\nexport class SmzTabPanelComponent {\n public readonly value = input.required<SmzTabValue>();\n\n protected readonly tabs = inject(SmzTabsComponent);\n protected readonly active = computed(() => this.tabs.value() === this.value());\n protected readonly visited = signal(false);\n private readonly templates = contentChildren(SmzTemplateDirective);\n protected readonly contentTemplate = computed(() => smzFindTemplate(this.templates(), 'content'));\n\n constructor() {\n // Lazy: o painel passa a existir na primeira vez que fica ativo e permanece criado depois.\n effect(() => {\n if (this.active()) this.visited.set(true);\n });\n }\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\nimport { ChangeDetectionStrategy, Component, booleanAttribute, computed, inject, input, model, output } from '@angular/core';\n\nexport type SmzAccordionValue = string | number;\n\n/**\n * Acordeao. Substitui o `p-accordion` / `p-accordion-panel` / `p-accordion-header` / `p-accordion-content` do PrimeNG.\n *\n * <ui-accordion [multiple]=\"true\">\n * <ui-accordion-panel [value]=\"1\"><ui-accordion-header>Titulo</ui-accordion-header><ui-accordion-content>...</ui-accordion-content></ui-accordion-panel>\n * </ui-accordion>\n */\n@Component({\n selector: 'ui-accordion',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'block overflow-hidden rounded-control border border-ui-line font-ui text-ui-fg' },\n template: '<ng-content />',\n})\nexport class SmzAccordionComponent {\n public readonly value = model<SmzAccordionValue | SmzAccordionValue[] | null>(null);\n public readonly multiple = input(false, { transform: booleanAttribute });\n /** Um painel foi aberto (equivale ao `onOpen` do `p-accordion`). */\n public readonly opened = output<{ value: SmzAccordionValue }>();\n /** Um painel foi fechado (equivale ao `onClose`). */\n public readonly closed = output<{ value: SmzAccordionValue }>();\n /** Aceito por compatibilidade com o `p-accordion`; sem efeito. */\n public readonly transitionOptions = input<string | null | undefined>(null);\n\n public isOpen(value: SmzAccordionValue): boolean {\n const current = this.value();\n return Array.isArray(current) ? current.includes(value) : current === value;\n }\n\n public toggle(value: SmzAccordionValue): void {\n const open = this.isOpen(value);\n (open ? this.closed : this.opened).emit({ value });\n if (this.multiple()) {\n const current = Array.isArray(this.value()) ? (this.value() as SmzAccordionValue[]) : this.value() === null ? [] : [this.value() as SmzAccordionValue];\n this.value.set(open ? current.filter((entry) => entry !== value) : [...current, value]);\n }\n else {\n this.value.set(open ? null : value);\n }\n }\n}\n\n@Component({\n selector: 'ui-accordion-panel',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'block border-b border-ui-line last:border-b-0' },\n template: '<ng-content />',\n})\nexport class SmzAccordionPanelComponent {\n public readonly value = input.required<SmzAccordionValue>();\n\n private readonly accordion = inject(SmzAccordionComponent);\n public readonly open = computed(() => this.accordion.isOpen(this.value()));\n\n public toggle(): void {\n this.accordion.toggle(this.value());\n }\n}\n\n@Component({\n selector: 'ui-accordion-header',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'button',\n tabindex: '0',\n '[attr.aria-expanded]': 'panel.open()',\n class: 'flex w-full cursor-pointer items-center justify-between gap-2 bg-ui-surface-1 px-4 py-3 text-ui-md font-medium transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ui-focus',\n '(click)': 'panel.toggle()',\n '(keydown.enter)': 'panel.toggle()',\n '(keydown.space)': 'panel.toggle(); $event.preventDefault()',\n },\n template: `\n <span class=\"min-w-0 flex-1\"><ng-content /></span>\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4 shrink-0 text-ui-fg-muted transition-transform duration-ui\" [class.rotate-180]=\"panel.open()\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M4 6l4 4 4-4\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n `,\n})\nexport class SmzAccordionHeaderComponent {\n protected readonly panel = inject(SmzAccordionPanelComponent);\n}\n\n@Component({\n selector: 'ui-accordion-content',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { role: 'region', '[class.hidden]': '!panel.open()', class: 'block px-4 py-3' },\n template: '<ng-content />',\n})\nexport class SmzAccordionContentComponent {\n protected readonly panel = inject(SmzAccordionPanelComponent);\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment */\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, contentChildren, input } from '@angular/core';\nimport { smzFindTemplate, SmzTemplateDirective } from '../core/template.directive';\n\nexport type SmzTimelineAlign = 'left' | 'right' | 'alternate' | 'top' | 'bottom';\n\n/**\n * Linha do tempo. Substitui o `p-timeline` do PrimeNG.\n * Templates (via `smzTemplate`): `marker`, `content` e `opposite`, todos com o evento como `$implicit`.\n *\n * <ui-timeline [value]=\"eventos\" align=\"alternate\">\n * <ng-template smzTemplate=\"content\" let-event>{{ event.titulo }}</ng-template>\n * </ui-timeline>\n */\n@Component({\n selector: 'ui-timeline',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, NgTemplateOutlet],\n host: { class: 'block font-ui text-ui-fg' },\n template: `\n @if (horizontal()) {\n <!-- Nao usar a classe grid do Tailwind: o CSS legado do core (.grid, PrimeFlex) a sobrescreve com display:flex !important.\n Grade de 3 linhas (conteudo de cima / marcadores / conteudo de baixo) com subgrade por item: todos os marcadores ficam na mesma linha. -->\n <div style=\"display: grid; grid-template-rows: auto auto auto\" [style.grid-template-columns]=\"'repeat(' + (value() ?? []).length + ', minmax(0, 1fr))'\" [ngClass]=\"styleClass()\">\n @for (event of value() ?? []; track $index; let index = $index; let first = $first; let last = $last) {\n <div class=\"tl-item min-w-0\" style=\"display: grid; grid-row: span 3; grid-template-rows: subgrid\">\n <div class=\"flex min-w-0 flex-col justify-end px-2 pb-2 text-center\" style=\"grid-row: 1\">\n @if (contentOnTop(index)) {\n @if (contentTemplate(); as content) {\n <ng-container [ngTemplateOutlet]=\"content\" [ngTemplateOutletContext]=\"{ $implicit: event, index: index }\" />\n }\n } @else if (oppositeTemplate(); as opposite) {\n <ng-container [ngTemplateOutlet]=\"opposite\" [ngTemplateOutletContext]=\"{ $implicit: event, index: index }\" />\n }\n </div>\n <div class=\"flex items-center\" style=\"grid-row: 2\">\n <span class=\"h-0.5 flex-1\" [class]=\"first ? 'bg-transparent' : 'bg-ui-line'\"></span>\n @if (markerTemplate(); as marker) {\n <ng-container [ngTemplateOutlet]=\"marker\" [ngTemplateOutletContext]=\"{ $implicit: event, index: index }\" />\n }\n @else {\n <span class=\"block h-4 w-4 shrink-0 rounded-full border-2 border-ui-primary bg-ui-surface-1\"></span>\n }\n <span class=\"h-0.5 flex-1\" [class]=\"last ? 'bg-transparent' : 'bg-ui-line'\"></span>\n </div>\n <div class=\"flex min-w-0 flex-col px-2 pt-2 text-center\" style=\"grid-row: 3\">\n @if (!contentOnTop(index)) {\n @if (contentTemplate(); as content) {\n <ng-container [ngTemplateOutlet]=\"content\" [ngTemplateOutletContext]=\"{ $implicit: event, index: index }\" />\n }\n } @else if (oppositeTemplate(); as opposite) {\n <ng-container [ngTemplateOutlet]=\"opposite\" [ngTemplateOutletContext]=\"{ $implicit: event, index: index }\" />\n }\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"flex flex-col\" [ngClass]=\"styleClass()\">\n @for (event of value() ?? []; track $index; let index = $index; let last = $last) {\n <div class=\"flex min-w-0 flex-1\" [class]=\"horizontal() ? 'flex-col' : (rowReverse(index) ? 'flex-row-reverse' : 'flex-row')\">\n <div class=\"flex-1\" [class]=\"oppositeClass(index)\">\n @if (oppositeTemplate(); as opposite) {\n <ng-container [ngTemplateOutlet]=\"opposite\" [ngTemplateOutletContext]=\"{ $implicit: event, index: index }\" />\n }\n </div>\n <div class=\"flex items-center\" [class]=\"horizontal() ? 'flex-row' : 'flex-col'\">\n @if (markerTemplate(); as marker) {\n <ng-container [ngTemplateOutlet]=\"marker\" [ngTemplateOutletContext]=\"{ $implicit: event, index: index }\" />\n }\n @else {\n <span class=\"block h-4 w-4 shrink-0 rounded-full border-2 border-ui-primary bg-ui-surface-1\"></span>\n }\n @if (!last) {\n <span class=\"bg-ui-line\" [class]=\"horizontal() ? 'h-0.5 w-full min-w-8 flex-1' : 'min-h-8 w-0.5 flex-1'\"></span>\n }\n </div>\n <div class=\"flex-1 pb-4\" [class]=\"contentClass(index)\">\n @if (contentTemplate(); as content) {\n <ng-container [ngTemplateOutlet]=\"content\" [ngTemplateOutletContext]=\"{ $implicit: event, index: index }\" />\n }\n </div>\n </div>\n }\n </div>\n }\n `,\n})\nexport class SmzUiTimelineComponent {\n public readonly value = input<readonly any[] | null | undefined>([]);\n public readonly align = input<SmzTimelineAlign | string | null | undefined>('left');\n public readonly layout = input<'vertical' | 'horizontal'>('vertical');\n public readonly styleClass = input<string | null | undefined>('');\n\n private readonly templates = contentChildren(SmzTemplateDirective);\n protected readonly markerTemplate = computed(() => smzFindTemplate(this.templates(), 'marker'));\n protected readonly contentTemplate = computed(() => smzFindTemplate(this.templates(), 'content'));\n protected readonly oppositeTemplate = computed(() => smzFindTemplate(this.templates(), 'opposite'));\n protected readonly horizontal = computed(() => this.layout() === 'horizontal' || this.align() === 'top' || this.align() === 'bottom');\n\n /** No layout horizontal, o conteudo fica acima da linha em `top` e nos itens impares de `alternate`/`right`. */\n protected contentOnTop(index: number): boolean {\n const align = this.align();\n return align === 'top' || align === 'right' || (align === 'alternate' && index % 2 === 1);\n }\n\n protected rowReverse(index: number): boolean {\n const align = this.align();\n return align === 'right' || (align === 'alternate' && index % 2 === 1);\n }\n\n protected oppositeClass(index: number): string {\n // Em `left`/`right` o lado oposto fica sem largura, como no PrimeNG, a menos que haja template de oposto.\n const align = this.align();\n if ((align === 'left' || align === 'right') && !this.oppositeTemplate()) return 'flex-[0_0_0px] p-0';\n return this.rowReverse(index) ? 'pl-4 text-left' : 'pr-4 text-right';\n }\n\n protected contentClass(index: number): string {\n return this.rowReverse(index) ? 'pr-4 text-right' : 'pl-4';\n }\n}\n","import { Directive, ElementRef, OnDestroy, booleanAttribute, inject, input } from '@angular/core';\n\n/**\n * Alterna classes de um elemento alvo ao clicar no hospedeiro (menus e paineis). Substitui o `pStyleClass` do PrimeNG.\n * O alvo vem de `smzStyleClass`: `@next`, `@prev`, `@parent`, `@grandparent` ou um seletor CSS.\n *\n * <button smzStyleClass=\"@next\" enterFromClass=\"hidden\" enterActiveClass=\"animate-scalein\" leaveToClass=\"hidden\" leaveActiveClass=\"animate-fadeout\" [hideOnOutsideClick]=\"true\"></button>\n *\n * As classes `*ActiveClass` sao removidas ao fim da animacao (evento `animationend`).\n */\n@Directive({\n selector: '[smzStyleClass]',\n host: { '(click)': 'onClick($event)' },\n})\nexport class SmzStyleClassDirective implements OnDestroy {\n public readonly selector = input<string>('', { alias: 'smzStyleClass' });\n public readonly enterFromClass = input<string>('');\n public readonly enterActiveClass = input<string>('');\n public readonly enterToClass = input<string>('');\n public readonly leaveFromClass = input<string>('');\n public readonly leaveActiveClass = input<string>('');\n public readonly leaveToClass = input<string>('');\n public readonly hideOnOutsideClick = input(false, { transform: booleanAttribute });\n public readonly toggleClass = input<string>('');\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private documentListener?: (event: MouseEvent) => void;\n\n public ngOnDestroy(): void {\n this.unbindOutsideClick();\n }\n\n protected onClick(event: Event): void {\n const target = this.resolveTarget();\n if (!target) return;\n\n if (this.toggleClass()) {\n target.classList.toggle(this.toggleClass());\n return;\n }\n\n if (target.offsetParent === null) this.enter(target);\n else this.leave(target);\n event.stopPropagation();\n }\n\n private resolveTarget(): HTMLElement | null {\n const selector = this.selector();\n const host = this.host.nativeElement;\n switch (selector) {\n case '@next': return host.nextElementSibling as HTMLElement | null;\n case '@prev': return host.previousElementSibling as HTMLElement | null;\n case '@parent': return host.parentElement;\n case '@grandparent': return host.parentElement?.parentElement ?? null;\n default: return selector ? document.querySelector<HTMLElement>(selector) : null;\n }\n }\n\n private classes(value: string): string[] {\n return value.split(/\\s+/).filter(Boolean);\n }\n\n private apply(target: HTMLElement, remove: string, add: string[]): void {\n target.classList.remove(...this.classes(remove));\n if (add.length) target.classList.add(...add);\n }\n\n private enter(target: HTMLElement): void {\n const active = this.classes(this.enterActiveClass());\n this.apply(target, this.enterFromClass(), [...active, ...this.classes(this.enterToClass())]);\n this.afterAnimation(target, active);\n if (this.hideOnOutsideClick()) this.bindOutsideClick(target);\n }\n\n private leave(target: HTMLElement): void {\n const active = this.classes(this.leaveActiveClass());\n this.apply(target, this.leaveFromClass(), active);\n this.afterAnimation(target, active, () => target.classList.add(...this.classes(this.leaveToClass())));\n this.unbindOutsideClick();\n }\n\n private afterAnimation(target: HTMLElement, active: string[], done?: () => void): void {\n const finish = (): void => {\n target.classList.remove(...active);\n done?.();\n };\n if (active.length === 0) {\n finish();\n return;\n }\n const handle = setTimeout(finish, 500);\n target.addEventListener('animationend', () => {\n clearTimeout(handle);\n finish();\n }, { once: true });\n }\n\n private bindOutsideClick(target: HTMLElement): void {\n this.unbindOutsideClick();\n this.documentListener = (event: MouseEvent): void => {\n const node = event.target as Node;\n if (this.host.nativeElement.contains(node) || target.contains(node)) return;\n if (target.offsetParent !== null) this.leave(target);\n };\n document.addEventListener('click', this.documentListener, true);\n }\n\n private unbindOutsideClick(): void {\n if (this.documentListener) document.removeEventListener('click', this.documentListener, true);\n this.documentListener = undefined;\n }\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\nimport { NgClass } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ChangeDetectionStrategy, Component, booleanAttribute, computed, input, model, output } from '@angular/core';\nimport { SmzSelectComponent } from '../select/select.component';\n\nexport interface SmzPageEvent {\n first: number;\n rows: number;\n page: number;\n pageCount: number;\n}\n\n\n/**\n * Paginador. Substitui o `p-paginator` do PrimeNG.\n * O template do relatorio aceita `{currentPage}`, `{totalPages}`, `{rows}`, `{first}`, `{last}` e `{totalRecords}`.\n *\n * <ui-paginator [first]=\"primeiro\" [rows]=\"10\" [totalRecords]=\"120\" (pageChanged)=\"mudou($event)\" />\n */\n@Component({\n selector: 'ui-paginator',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, FormsModule, SmzSelectComponent],\n host: { class: 'block' },\n template: `\n @if (visible()) {\n <nav class=\"smz-paginator flex flex-wrap items-center justify-center gap-1 py-2 font-ui text-ui-sm text-ui-fg\" aria-label=\"Paginacao\" [ngClass]=\"styleClass()\">\n @if (showCurrentPageReport()) {\n <span class=\"mr-2 text-ui-fg-muted\">{{ report() }}</span>\n }\n <button type=\"button\" class=\"inline-flex h-control-lg min-w-control-lg cursor-pointer items-center justify-center rounded-full px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent\" aria-label=\"Primeira pagina\" [disabled]=\"isFirst()\" (click)=\"goTo(0)\">\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4\" fill=\"none\" aria-hidden=\"true\"><path d=\"M8 4L4 8l4 4M12 4L8 8l4 4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg>\n </button>\n <button type=\"button\" class=\"inline-flex h-control-lg min-w-control-lg cursor-pointer items-center justify-center rounded-full px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent\" aria-label=\"Pagina anterior\" [disabled]=\"isFirst()\" (click)=\"goTo(page() - 1)\">\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4\" fill=\"none\" aria-hidden=\"true\"><path d=\"M10 4L6 8l4 4\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg>\n </button>\n @if (showPageLinks() && totalRecords() > 0) {\n @for (link of links(); track link) {\n <button\n type=\"button\"\n class=\"inline-flex h-control-lg min-w-control-lg cursor-pointer items-center justify-center rounded-full px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent\"\n [class]=\"link === page() + 1 ? 'smz-paginator-page-selected bg-ui-primary/10 font-medium text-ui-primary' : ''\"\n [attr.aria-current]=\"link === page() + 1 ? 'page' : null\"\n (click)=\"goTo(link - 1)\"\n >\n {{ link }}\n </button>\n }\n }\n <button type=\"button\" class=\"inline-flex h-control-lg min-w-control-lg cursor-pointer items-center justify-center rounded-full px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent\" aria-label=\"Proxima pagina\" [disabled]=\"isLast()\" (click)=\"goTo(page() + 1)\">\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4\" fill=\"none\" aria-hidden=\"true\"><path d=\"M6 4l4 4-4 4\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg>\n </button>\n <button type=\"button\" class=\"inline-flex h-control-lg min-w-control-lg cursor-pointer items-center justify-center rounded-full px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent\" aria-label=\"Ultima pagina\" [disabled]=\"isLast()\" (click)=\"goTo(pageCount() - 1)\">\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4\" fill=\"none\" aria-hidden=\"true\"><path d=\"M4 4l4 4-4 4M8 4l4 4-4 4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg>\n </button>\n @if (rowsPerPageOptions() && rowsPerPageOptions()!.length > 0) {\n <ui-select class=\"smz-paginator-rpp ml-2 w-24\" [options]=\"rowsPerPageOptions()\" [ngModel]=\"rows()\" (changed)=\"changeRows($event.value)\" />\n }\n </nav>\n }\n `,\n})\nexport class SmzPaginatorComponent {\n public readonly first = model(0);\n public readonly rows = model(10);\n public readonly totalRecords = input(0);\n public readonly pageLinkSize = input(5);\n public readonly rowsPerPageOptions = input<number[] | null | undefined>(null);\n public readonly showCurrentPageReport = input(false, { transform: booleanAttribute });\n public readonly currentPageReportTemplate = input<string | null | undefined>('{currentPage} / {totalPages}');\n public readonly alwaysShow = input(true, { transform: booleanAttribute });\n public readonly showPageLinks = input(true, { transform: booleanAttribute });\n public readonly styleClass = input<string | null | undefined>('');\n /** Aceitos por compatibilidade com o `p-paginator`; sem efeito. */\n public readonly dropdownAppendTo = input<unknown>(undefined);\n public readonly showFirstLastIcon = input(true, { transform: booleanAttribute });\n\n public readonly pageChanged = output<SmzPageEvent>();\n\n protected readonly pageCount = computed(() => Math.max(1, Math.ceil(this.totalRecords() / Math.max(1, this.rows()))));\n protected readonly page = computed(() => Math.floor(this.first() / Math.max(1, this.rows())));\n protected readonly isFirst = computed(() => this.page() === 0);\n protected readonly isLast = computed(() => this.page() >= this.pageCount() - 1);\n protected readonly visible = computed(() => this.alwaysShow() || this.pageCount() > 1);\n\n protected readonly links = computed(() => {\n if (this.totalRecords() <= 0) return [];\n const size = Math.min(this.pageLinkSize(), this.pageCount());\n const start = Math.max(0, Math.min(this.page() - Math.floor(size / 2), this.pageCount() - size));\n return Array.from({ length: size }, (_, index) => start + index + 1);\n });\n\n protected readonly report = computed(() => {\n const total = this.totalRecords();\n const first = total === 0 ? 0 : this.first() + 1;\n const last = Math.min(this.first() + this.rows(), total);\n return (this.currentPageReportTemplate() ?? '')\n .replace('{currentPage}', String(this.page() + 1))\n .replace('{totalPages}', String(this.pageCount()))\n .replace('{rows}', String(this.rows()))\n .replace('{first}', String(first))\n .replace('{last}', String(last))\n .replace('{totalRecords}', String(total));\n });\n\n /** Vai para a pagina (base 0) e emite `pageChanged`. */\n public goTo(page: number): void {\n const target = Math.max(0, Math.min(page, this.pageCount() - 1));\n if (target === this.page()) return;\n this.first.set(target * this.rows());\n this.pageChanged.emit({ first: this.first(), rows: this.rows(), page: target, pageCount: this.pageCount() });\n }\n\n protected changeRows(rows: number): void {\n if (!rows || rows === this.rows()) return;\n this.rows.set(rows);\n this.first.set(0);\n this.pageChanged.emit({ first: 0, rows, page: 0, pageCount: this.pageCount() });\n }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-return */\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/explicit-module-boundary-types */\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n TemplateRef,\n booleanAttribute,\n computed,\n contentChild,\n contentChildren,\n inject,\n input,\n model,\n signal,\n} from '@angular/core';\nimport { SmzObjectUtils } from '../core/object-utils';\nimport { smzFindTemplate, SmzTemplateDirective } from '../core/template.directive';\nimport { SmzPaginatorComponent } from '../paginator/paginator.component';\n\nexport type SmzDataViewLayout = 'list' | 'grid';\n\n/**\n * Colecao de itens em lista ou grade, com filtro e paginacao. Substitui o `p-dataview` do PrimeNG.\n * Templates: `header`, `list`, `grid`, `empty` e `footer`, declarados por referencia (`<ng-template let-items #list>`)\n * ou por `smzTemplate`. Os de `list` e `grid` recebem a pagina atual como `$implicit`.\n */\n@Component({\n selector: 'ui-data-view',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, NgTemplateOutlet, SmzPaginatorComponent],\n host: { class: 'block font-ui text-ui-fg' },\n template: `\n <div [ngClass]=\"styleClass()\">\n @if (headerTemplate(); as headerTpl) {\n <div class=\"mb-3\"><ng-container [ngTemplateOutlet]=\"headerTpl\" /></div>\n }\n @if (pageItems().length > 0) {\n @if (layout() === 'grid' && gridTemplate()) {\n <ng-container [ngTemplateOutlet]=\"gridTemplate()!\" [ngTemplateOutletContext]=\"{ $implicit: pageItems() }\" />\n }\n @else if (listTemplate()) {\n <ng-container [ngTemplateOutlet]=\"listTemplate()!\" [ngTemplateOutletContext]=\"{ $implicit: pageItems() }\" />\n }\n }\n @else if (emptyTemplate(); as emptyTpl) {\n <ng-container [ngTemplateOutlet]=\"emptyTpl\" />\n }\n @if (paginator()) {\n <ui-paginator [first]=\"first()\" [rows]=\"rows()\" [totalRecords]=\"filtered().length\" [alwaysShow]=\"false\" (pageChanged)=\"onPage($event.first)\" />\n }\n @if (footerTemplate(); as footerTpl) {\n <div class=\"mt-3\"><ng-container [ngTemplateOutlet]=\"footerTpl\" /></div>\n }\n </div>\n `,\n})\nexport class SmzDataViewComponent {\n public readonly value = input<readonly any[] | null | undefined>([]);\n public readonly layout = input<SmzDataViewLayout | string | null | undefined>('list');\n public readonly paginator = input(false, { transform: booleanAttribute });\n public readonly rows = input(10);\n public readonly first = model(0);\n public readonly filterBy = input<string | null | undefined>(null);\n public readonly styleClass = input<string | null | undefined>('');\n /** Aceito por compatibilidade com o `p-dataview`; o container da grade e definido no template do consumidor. */\n public readonly gridStyleClass = input<string | null | undefined>('');\n\n /** Elemento hospedeiro (compatibilidade com `DataView.el` do PrimeNG). */\n public readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n private readonly query = signal('');\n private readonly templates = contentChildren(SmzTemplateDirective);\n private readonly refHeader = contentChild<TemplateRef<unknown>>('header');\n private readonly refList = contentChild<TemplateRef<unknown>>('list');\n private readonly refGrid = contentChild<TemplateRef<unknown>>('grid');\n private readonly refEmpty = contentChild<TemplateRef<unknown>>('empty');\n private readonly refFooter = contentChild<TemplateRef<unknown>>('footer');\n\n protected readonly headerTemplate = computed(() => this.refHeader() ?? smzFindTemplate(this.templates(), 'header'));\n protected readonly listTemplate = computed(() => this.refList() ?? smzFindTemplate(this.templates(), 'list'));\n protected readonly gridTemplate = computed(() => this.refGrid() ?? smzFindTemplate(this.templates(), 'grid'));\n protected readonly emptyTemplate = computed(() => this.refEmpty() ?? smzFindTemplate(this.templates(), 'empty'));\n protected readonly footerTemplate = computed(() => this.refFooter() ?? smzFindTemplate(this.templates(), 'footer'));\n\n protected readonly filtered = computed(() => {\n const items = this.value() ?? [];\n const query = this.query().trim().toLocaleLowerCase();\n const fields = (this.filterBy() ?? '').split(',').map((field) => field.trim()).filter(Boolean);\n if (!query || fields.length === 0) return items;\n return items.filter((item) => fields.some((field) => String(SmzObjectUtils.resolveFieldData(item, field) ?? '').toLocaleLowerCase().includes(query)));\n });\n\n protected readonly pageItems = computed(() => {\n const items = this.filtered();\n return this.paginator() ? items.slice(this.first(), this.first() + this.rows()) : items;\n });\n\n /** Filtra os itens por texto nos campos de `filterBy` e volta para a primeira pagina. */\n public filter(value: string): void {\n this.query.set(value ?? '');\n this.first.set(0);\n }\n\n protected onPage(first: number): void {\n this.first.set(first);\n }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-return */\n/* eslint-disable max-len -- classes Tailwind nos templates */\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/explicit-module-boundary-types */\nimport { CdkDrag, CdkDropList, CdkDropListGroup, CdkDragDrop } from '@angular/cdk/drag-drop';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, booleanAttribute, computed, contentChildren, input, output, signal } from '@angular/core';\nimport { SmzObjectUtils } from '../core/object-utils';\nimport { smzFindTemplate, SmzTemplateDirective } from '../core/template.directive';\n\nexport interface SmzPickListMoveEvent {\n items: any[];\n}\n\ntype Side = 'source' | 'target';\n\n/**\n * Duas listas de transferencia de itens. Substitui o `p-picklist` do PrimeNG.\n * `source` e `target` sao arrays do consumidor: o componente os altera in-place e emite o que foi movido.\n * Template `item` (via `smzTemplate`) recebe o item como `$implicit`.\n */\n@Component({\n selector: 'ui-pick-list',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CdkDropListGroup, CdkDropList, CdkDrag, NgTemplateOutlet],\n host: { class: 'block font-ui text-ui-md text-ui-fg' },\n template: `\n <div class=\"flex flex-wrap items-stretch gap-3\" cdkDropListGroup [class]=\"responsive() ? 'flex-col md:flex-row' : 'flex-row'\">\n <div class=\"flex min-w-0 flex-1 flex-col rounded-control border border-ui-line bg-ui-surface-1\">\n <div class=\"border-b border-ui-line bg-ui-surface-3 px-3 py-2 font-medium\">{{ sourceHeader() }}</div>\n <div class=\"border-b border-ui-line p-2\">\n <input class=\"h-control-sm w-full rounded-control border border-ui-line-strong bg-ui-surface-1 px-control-x-sm text-ui-sm focus:outline-none focus:ring-2 focus:ring-ui-focus\" type=\"text\" [placeholder]=\"sourceFilterPlaceholder() ?? ''\" (input)=\"sourceQuery.set($any($event.target).value)\" />\n </div>\n <ul class=\"min-h-40 flex-1 overflow-auto p-1\" cdkDropList [cdkDropListData]=\"sourceView()\" [cdkDropListDisabled]=\"!dragdrop()\" (cdkDropListDropped)=\"dropped($event, 'source')\" [style]=\"listStyle()\" role=\"listbox\" aria-multiselectable=\"true\">\n @for (item of sourceView(); track $index) {\n <li cdkDrag [cdkDragData]=\"item\" role=\"option\" class=\"cursor-pointer rounded-control px-3 py-2\" [class]=\"rowClass('source', item)\" [attr.aria-selected]=\"isSelected('source', item)\" (click)=\"toggle('source', item)\" (dblclick)=\"moveOne('source', item)\">\n @if (itemTemplate(); as tpl) { <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" /> } @else { {{ label(item) }} }\n </li>\n }\n </ul>\n </div>\n\n <div class=\"flex items-center justify-center gap-2\" [class]=\"responsive() ? 'flex-row md:flex-col' : 'flex-col'\">\n <button type=\"button\" class=\"h-8 w-10 cursor-pointer rounded-control border border-ui-line-strong text-ui-fg hover:bg-ui-surface-3 disabled:cursor-not-allowed disabled:opacity-40\" aria-label=\"Mover selecionados para o destino\" [disabled]=\"selectedSource().length === 0\" (click)=\"moveSelected('source')\">&rsaquo;</button>\n <button type=\"button\" class=\"h-8 w-10 cursor-pointer rounded-control border border-ui-line-strong text-ui-fg hover:bg-ui-surface-3 disabled:cursor-not-allowed disabled:opacity-40\" aria-label=\"Mover todos para o destino\" [disabled]=\"source().length === 0\" (click)=\"moveAll('source')\">&raquo;</button>\n <button type=\"button\" class=\"h-8 w-10 cursor-pointer rounded-control border border-ui-line-strong text-ui-fg hover:bg-ui-surface-3 disabled:cursor-not-allowed disabled:opacity-40\" aria-label=\"Mover selecionados para a origem\" [disabled]=\"selectedTarget().length === 0\" (click)=\"moveSelected('target')\">&lsaquo;</button>\n <button type=\"button\" class=\"h-8 w-10 cursor-pointer rounded-control border border-ui-line-strong text-ui-fg hover:bg-ui-surface-3 disabled:cursor-not-allowed disabled:opacity-40\" aria-label=\"Mover todos para a origem\" [disabled]=\"target().length === 0\" (click)=\"moveAll('target')\">&laquo;</button>\n </div>\n\n <div class=\"flex min-w-0 flex-1 flex-col rounded-control border border-ui-line bg-ui-surface-1\">\n <div class=\"border-b border-ui-line bg-ui-surface-3 px-3 py-2 font-medium\">{{ targetHeader() }}</div>\n <div class=\"border-b border-ui-line p-2\">\n <input class=\"h-control-sm w-full rounded-control border border-ui-line-strong bg-ui-surface-1 px-control-x-sm text-ui-sm focus:outline-none focus:ring-2 focus:ring-ui-focus\" type=\"text\" [placeholder]=\"targetFilterPlaceholder() ?? ''\" (input)=\"targetQuery.set($any($event.target).value)\" />\n </div>\n <ul class=\"min-h-40 flex-1 overflow-auto p-1\" cdkDropList [cdkDropListData]=\"targetView()\" [cdkDropListDisabled]=\"!dragdrop()\" (cdkDropListDropped)=\"dropped($event, 'target')\" [style]=\"listStyle()\" role=\"listbox\" aria-multiselectable=\"true\">\n @for (item of targetView(); track $index) {\n <li cdkDrag [cdkDragData]=\"item\" role=\"option\" class=\"cursor-pointer rounded-control px-3 py-2\" [class]=\"rowClass('target', item)\" [attr.aria-selected]=\"isSelected('target', item)\" (click)=\"toggle('target', item)\" (dblclick)=\"moveOne('target', item)\">\n @if (itemTemplate(); as tpl) { <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" /> } @else { {{ label(item) }} }\n </li>\n }\n </ul>\n </div>\n </div>\n `,\n})\nexport class SmzPickListComponent {\n public readonly source = input<any[]>([]);\n public readonly target = input<any[]>([]);\n public readonly sourceHeader = input<string | null | undefined>('');\n public readonly targetHeader = input<string | null | undefined>('');\n public readonly sourceFilterPlaceholder = input<string | null | undefined>('');\n public readonly targetFilterPlaceholder = input<string | null | undefined>('');\n public readonly filterBy = input<string | null | undefined>(null);\n public readonly dragdrop = input(false, { transform: booleanAttribute });\n public readonly responsive = input(false, { transform: booleanAttribute });\n public readonly listStyle = input<Record<string, string | number | null> | null | undefined>(null);\n /** Aceitos por compatibilidade com o `p-picklist`; sem efeito (nao ha botoes de reordenacao). */\n public readonly showSourceControls = input(true, { transform: booleanAttribute });\n public readonly showTargetControls = input(true, { transform: booleanAttribute });\n\n public readonly movedToTarget = output<SmzPickListMoveEvent>();\n public readonly movedToSource = output<SmzPickListMoveEvent>();\n public readonly movedAllToTarget = output<SmzPickListMoveEvent>();\n public readonly movedAllToSource = output<SmzPickListMoveEvent>();\n\n protected readonly sourceQuery = signal('');\n protected readonly targetQuery = signal('');\n /** Incrementado a cada alteracao in-place dos arrays do consumidor. */\n private readonly tick = signal(0);\n private readonly selection = signal<{ source: any[]; target: any[] }>({ source: [], target: [] });\n\n private readonly templates = contentChildren(SmzTemplateDirective);\n protected readonly itemTemplate = computed(() => smzFindTemplate(this.templates(), 'item'));\n protected readonly selectedSource = computed(() => this.selection().source);\n protected readonly selectedTarget = computed(() => this.selection().target);\n\n protected readonly sourceView = computed(() => (this.tick(), this.filtered(this.source(), this.sourceQuery())));\n protected readonly targetView = computed(() => (this.tick(), this.filtered(this.target(), this.targetQuery())));\n\n protected label(item: any): string {\n const field = this.filterBy();\n const value = field ? SmzObjectUtils.resolveFieldData(item, field) : item;\n return value === null || value === undefined ? '' : String(value);\n }\n\n protected isSelected(side: Side, item: any): boolean {\n return this.selection()[side].includes(item);\n }\n\n protected rowClass(side: Side, item: any): string {\n return this.isSelected(side, item) ? 'bg-ui-primary/10 text-ui-primary' : 'hover:bg-ui-surface-3';\n }\n\n protected toggle(side: Side, item: any): void {\n const current = this.selection()[side];\n const next = current.includes(item) ? current.filter((entry) => entry !== item) : [...current, item];\n this.selection.update((state) => ({ ...state, [side]: next }));\n }\n\n protected moveOne(side: Side, item: any): void {\n this.transfer(side, [item], false);\n }\n\n protected moveSelected(side: Side): void {\n this.transfer(side, [...this.selection()[side]], false);\n }\n\n protected moveAll(side: Side): void {\n this.transfer(side, [...(side === 'source' ? this.source() : this.target())], true);\n }\n\n protected dropped(event: CdkDragDrop<any[]>, side: Side): void {\n const from: Side = event.previousContainer === event.container ? side : side === 'source' ? 'target' : 'source';\n if (event.previousContainer === event.container) return;\n this.transfer(from, [event.item.data], false);\n }\n\n private transfer(from: Side, items: any[], all: boolean): void {\n if (items.length === 0) return;\n const origin = from === 'source' ? this.source() : this.target();\n const destination = from === 'source' ? this.target() : this.source();\n\n for (const item of items) {\n const index = origin.indexOf(item);\n if (index >= 0) origin.splice(index, 1);\n destination.push(item);\n }\n\n this.selection.update((state) => ({ ...state, [from]: [] }));\n this.tick.update((value) => value + 1);\n\n const payload = { items };\n if (from === 'source') (all ? this.movedAllToTarget : this.movedToTarget).emit(payload);\n else (all ? this.movedAllToSource : this.movedToSource).emit(payload);\n }\n\n private filtered(items: any[], query: string): any[] {\n const text = query.trim().toLocaleLowerCase();\n if (!text) return [...items];\n return items.filter((item) => this.label(item).toLocaleLowerCase().includes(text));\n }\n}\n","/* eslint-disable eqeqeq, max-len -- semantica de comparacao frouxa herdada do filtro original (ex.: 1 == \"1\") */\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-argument, @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/typedef */\nimport { Injectable } from '@angular/core';\nimport { SmzObjectUtils } from './object-utils';\n\nexport type SmzFilterFunction = (value: any, filter: any, filterLocale?: string) => boolean;\n\nconst isEmptyFilter = (filter: any): boolean => filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '');\nconst normalize = (value: any, locale?: string): string => SmzObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(locale);\n\n/**\n * Funcoes de filtro por modo (`contains`, `equals`, `dateIs`...) usadas pela tabela. Substitui o `FilterService` do PrimeNG.\n * Modos proprios podem ser adicionados com `register`.\n */\n@Injectable({ providedIn: 'root' })\nexport class SmzFilterService {\n public filters: Record<string, SmzFilterFunction> = {\n startsWith: (value, filter, locale) => {\n if (isEmptyFilter(filter)) return true;\n if (value === undefined || value === null) return false;\n return normalize(value, locale).slice(0, normalize(filter, locale).length) === normalize(filter, locale);\n },\n contains: (value, filter, locale) => {\n if (isEmptyFilter(filter)) return true;\n if (value === undefined || value === null) return false;\n return normalize(value, locale).indexOf(normalize(filter, locale)) !== -1;\n },\n notContains: (value, filter, locale) => {\n if (isEmptyFilter(filter)) return true;\n if (value === undefined || value === null) return true;\n return normalize(value, locale).indexOf(normalize(filter, locale)) === -1;\n },\n endsWith: (value, filter, locale) => {\n if (isEmptyFilter(filter)) return true;\n if (value === undefined || value === null) return false;\n const filterValue = normalize(filter, locale);\n const stringValue = normalize(value, locale);\n return stringValue.indexOf(filterValue, stringValue.length - filterValue.length) !== -1;\n },\n equals: (value, filter, locale) => {\n if (isEmptyFilter(filter)) return true;\n if (value === undefined || value === null) return false;\n if (value.getTime && filter.getTime) return value.getTime() === filter.getTime();\n if (value == filter) return true;\n return normalize(value, locale) == normalize(filter, locale);\n },\n notEquals: (value, filter, locale) => {\n if (isEmptyFilter(filter)) return false;\n if (value === undefined || value === null) return true;\n if (value.getTime && filter.getTime) return value.getTime() !== filter.getTime();\n if (value == filter) return false;\n return normalize(value, locale) != normalize(filter, locale);\n },\n in: (value, filter) => {\n if (filter === undefined || filter === null || filter.length === 0) return true;\n for (const entry of filter) {\n if (SmzObjectUtils.equals(value, entry)) return true;\n }\n return false;\n },\n between: (value, filter) => {\n if (filter == null || filter[0] == null || filter[1] == null) return true;\n if (value === undefined || value === null) return false;\n if (value.getTime) return filter[0].getTime() <= value.getTime() && value.getTime() <= filter[1].getTime();\n return filter[0] <= value && value <= filter[1];\n },\n lt: (value, filter) => {\n if (filter === undefined || filter === null) return true;\n if (value === undefined || value === null) return false;\n if (value.getTime && filter.getTime) return value.getTime() < filter.getTime();\n return value < filter;\n },\n lte: (value, filter) => {\n if (filter === undefined || filter === null) return true;\n if (value === undefined || value === null) return false;\n if (value.getTime && filter.getTime) return value.getTime() <= filter.getTime();\n return value <= filter;\n },\n gt: (value, filter) => {\n if (filter === undefined || filter === null) return true;\n if (value === undefined || value === null) return false;\n if (value.getTime && filter.getTime) return value.getTime() > filter.getTime();\n return value > filter;\n },\n gte: (value, filter) => {\n if (filter === undefined || filter === null) return true;\n if (value === undefined || value === null) return false;\n if (value.getTime && filter.getTime) return value.getTime() >= filter.getTime();\n return value >= filter;\n },\n is: (value, filter, locale) => this.filters['equals'](value, filter, locale),\n isNot: (value, filter, locale) => this.filters['notEquals'](value, filter, locale),\n before: (value, filter) => this.filters['lt'](value, filter),\n after: (value, filter) => this.filters['gt'](value, filter),\n dateIs: (value, filter) => {\n if (filter === undefined || filter === null) return true;\n if (value === undefined || value === null) return false;\n return value.toDateString() === filter.toDateString();\n },\n dateIsNot: (value, filter) => {\n if (filter === undefined || filter === null) return true;\n if (value === undefined || value === null) return false;\n return value.toDateString() !== filter.toDateString();\n },\n dateBefore: (value, filter) => {\n if (filter === undefined || filter === null) return true;\n if (value === undefined || value === null) return false;\n return value.getTime() < filter.getTime();\n },\n dateAfter: (value, filter) => {\n if (filter === undefined || filter === null) return true;\n if (value === undefined || value === null) return false;\n return value.getTime() > filter.getTime();\n },\n };\n\n /** Filtra `data` mantendo os itens em que algum dos `fields` satisfaz o modo. */\n public filter(data: any[], fields: any[], value: any, matchMode: string, locale?: string): any[] {\n const result: any[] = [];\n if (!data) return result;\n\n for (const item of data) {\n for (const field of fields) {\n const fieldValue = SmzObjectUtils.resolveFieldData(item, field);\n if (this.filters[matchMode](fieldValue, value, locale)) {\n result.push(item);\n break;\n }\n }\n }\n return result;\n }\n\n /** Registra (ou sobrescreve) um modo de filtro. */\n public register(rule: string, fn: SmzFilterFunction): void {\n this.filters[rule] = fn;\n }\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-return, @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/typedef, no-underscore-dangle */\nimport { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n booleanAttribute,\n computed,\n contentChildren,\n inject,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { ElementRef } from '@angular/core';\nimport { smzFindTemplate, SmzTemplateDirective } from '../core/template.directive';\nimport { SmzMenuListComponent } from '../menu/menu.component';\nimport { SmzUiTreeNode } from '../types/tree-node';\n\nexport type SmzTreeSelectionMode = 'single' | 'multiple' | 'checkbox' | null;\n\nexport interface SmzTreeNodeEvent {\n originalEvent: Event;\n node: SmzUiTreeNode;\n}\n\nexport interface SmzTreeDropEvent {\n originalEvent: Event;\n dragNode: SmzUiTreeNode;\n dropNode: SmzUiTreeNode | null;\n /** Posicao (base 0) de `dropNode` na sua lista; `undefined` ao soltar fora de qualquer no. */\n index?: number;\n /** Com `validateDrop`, o consumidor chama `accept()` para efetivar a movimentacao. */\n accept?: () => void;\n}\n\ninterface TreeRow {\n node: SmzUiTreeNode;\n level: number;\n siblings: SmzUiTreeNode[];\n index: number;\n parent: SmzUiTreeNode | null;\n}\n\ntype DropPosition = -1 | 0 | 1;\n\n/**\n * Arvore de nos com selecao, expansao, filtro e arrastar e soltar. Substitui o `p-tree` do PrimeNG.\n * Templates por tipo de no: `<ng-template smzTemplate=\"tipo\" let-node>` (o tipo e `node.type`; `default` vale para os demais).\n * Tambem aceita `header`, `footer` e `empty`.\n *\n * <ui-tree [value]=\"nos\" selectionMode=\"single\" [(selection)]=\"selecionado\" />\n */\n@Component({\n selector: 'ui-tree',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, NgStyle, NgTemplateOutlet],\n host: { class: 'relative block font-ui text-ui-md text-ui-fg' },\n template: `\n <div class=\"relative rounded-control border border-ui-line bg-ui-surface-1 p-2\" [class]=\"scrollHeight() === 'flex' ? 'flex h-full flex-col' : ''\" [ngClass]=\"styleClass()\" [ngStyle]=\"style()\">\n @if (loading()) {\n <div class=\"absolute inset-0 z-10 flex items-center justify-center rounded-control bg-ui-surface-1/70\" aria-hidden=\"true\">\n <i [class]=\"loadingIcon() + ' animate-spin text-ui-xl'\"></i>\n </div>\n }\n @if (headerTemplate(); as headerTpl) {\n <div class=\"mb-2\"><ng-container [ngTemplateOutlet]=\"headerTpl\" /></div>\n }\n @if (filter()) {\n <div class=\"mb-2\">\n <input type=\"text\" class=\"h-control-sm w-full rounded-control border border-ui-line-strong bg-ui-surface-1 px-control-x-sm text-ui-sm focus:outline-none focus:ring-2 focus:ring-ui-focus\" [placeholder]=\"filterPlaceholder() ?? ''\" (input)=\"_filter($any($event.target).value)\" />\n </div>\n }\n <ul role=\"tree\" class=\"min-h-0 flex-1 overflow-auto\" [style.max-height]=\"scrollHeight() && scrollHeight() !== 'flex' ? scrollHeight() : null\" (dragover)=\"onRootDragOver($event)\" (drop)=\"onRootDrop($event)\">\n @for (row of rows(); track row.node) {\n <li\n role=\"treeitem\"\n class=\"list-none\"\n [attr.aria-level]=\"row.level + 1\"\n [attr.aria-expanded]=\"isLeaf(row.node) ? null : !!row.node.expanded\"\n [attr.aria-selected]=\"selectionMode() ? isSelected(row.node) : null\"\n >\n <div\n class=\"group relative flex items-center gap-1 rounded-control py-1 pr-2 outline-none transition-colors duration-ui focus-visible:ring-2 focus-visible:ring-ui-focus\"\n [class]=\"rowClasses(row)\"\n [style.padding-left.rem]=\"0.25 + row.level * 1.25\"\n tabindex=\"0\"\n [attr.draggable]=\"isDraggable(row.node) ? 'true' : null\"\n (click)=\"onNodeClick($event, row.node)\"\n (dblclick)=\"nodeDblClick.emit({ originalEvent: $event, node: row.node })\"\n (contextmenu)=\"onContextMenu($event, row.node)\"\n (keydown)=\"onKeydown($event, row)\"\n (dragstart)=\"onDragStart($event, row)\"\n (dragend)=\"onDragEnd()\"\n (dragover)=\"onDragOver($event, row)\"\n (dragleave)=\"onDragLeave()\"\n (drop)=\"onDrop($event, row)\"\n >\n @if (dropHover()?.key === row.node && dropHover()?.position === -1) {\n <span class=\"pointer-events-none absolute inset-x-0 top-0 h-0.5 bg-ui-primary\"></span>\n }\n @if (dropHover()?.key === row.node && dropHover()?.position === 1) {\n <span class=\"pointer-events-none absolute inset-x-0 bottom-0 h-0.5 bg-ui-primary\"></span>\n }\n <button\n type=\"button\"\n tabindex=\"-1\"\n class=\"inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-full text-ui-fg-muted hover:bg-ui-surface-3\"\n [class.invisible]=\"isLeaf(row.node)\"\n [attr.aria-label]=\"row.node.expanded ? 'Recolher' : 'Expandir'\"\n (click)=\"toggle($event, row.node)\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-3.5 w-3.5 transition-transform duration-ui\" [class.rotate-90]=\"row.node.expanded\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M6 4l4 4-4 4\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </button>\n @if (selectionMode() === 'checkbox') {\n <span\n class=\"inline-flex h-4 w-4 shrink-0 items-center justify-center rounded border\"\n [class]=\"isSelected(row.node) ? 'border-ui-primary bg-ui-primary text-ui-on-primary' : row.node.partialSelected ? 'border-ui-primary bg-ui-primary/20 text-ui-primary' : 'border-ui-line-strong bg-ui-surface-1 text-transparent'\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" aria-hidden=\"true\">\n @if (row.node.partialSelected && !isSelected(row.node)) {\n <path d=\"M4 8h8\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" />\n }\n @else {\n <path d=\"M3 8.5l3.2 3L13 4.5\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n }\n </svg>\n </span>\n }\n @if (iconOf(row.node); as icon) {\n <i [class]=\"icon\" aria-hidden=\"true\"></i>\n }\n <div class=\"min-w-0 flex-1\" [ngClass]=\"row.node.styleClass\">\n @if (templateFor(row.node); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"{ $implicit: row.node }\" />\n }\n @else {\n <span class=\"truncate\">{{ row.node.label }}</span>\n }\n </div>\n </div>\n </li>\n }\n @empty {\n @if (emptyTemplate(); as emptyTpl) {\n <li class=\"list-none\"><ng-container [ngTemplateOutlet]=\"emptyTpl\" /></li>\n }\n @else if (emptyMessage()) {\n <li class=\"list-none px-2 py-1 text-ui-fg-muted\">{{ emptyMessage() }}</li>\n }\n }\n </ul>\n @if (footerTemplate(); as footerTpl) {\n <div class=\"mt-2\"><ng-container [ngTemplateOutlet]=\"footerTpl\" /></div>\n }\n </div>\n `,\n})\nexport class SmzUiTreeComponent {\n public readonly value = input<SmzUiTreeNode[] | null | undefined>([]);\n public readonly selectionMode = input<SmzTreeSelectionMode | string | null | undefined>(null);\n public readonly selection = model<any>(null);\n public readonly metaKeySelection = input(false, { transform: booleanAttribute });\n public readonly propagateSelectionUp = input(true, { transform: booleanAttribute });\n public readonly propagateSelectionDown = input(true, { transform: booleanAttribute });\n public readonly loading = input(false, { transform: booleanAttribute });\n public readonly loadingIcon = input<string>('fa-solid fa-spinner');\n public readonly filter = input(false, { transform: booleanAttribute });\n public readonly filterMode = input<'lenient' | 'strict' | string>('lenient');\n public readonly filterPlaceholder = input<string | null | undefined>('');\n public readonly filterBy = input<string>('label');\n public readonly emptyMessage = input<string | null | undefined>('');\n public readonly draggableNodes = input(false, { transform: booleanAttribute });\n public readonly droppableNodes = input(false, { transform: booleanAttribute });\n public readonly validateDrop = input(false, { transform: booleanAttribute });\n public readonly scrollHeight = input<string | null | undefined>(null);\n public readonly style = input<Record<string, string | number | null> | null | undefined>(null);\n public readonly styleClass = input<string | null | undefined>('');\n /** Menu de contexto exibido no clique direito de um no (o consumidor atualiza o modelo em `nodeContextMenuSelect`). */\n public readonly contextMenu = input<SmzMenuListComponent | null | undefined>(null);\n /** Templates fornecidos por outro componente (ex.: `ui-tree-select`), usados no lugar dos filhos de conteudo. */\n public readonly templateOverride = input<readonly SmzTemplateDirective[] | null | undefined>(null);\n /** Aceitos por compatibilidade com o `p-tree`; sem efeito. */\n public readonly layout = input<string | null | undefined>('vertical');\n public readonly virtualScroll = input(false, { transform: booleanAttribute });\n\n public readonly nodeSelect = output<SmzTreeNodeEvent>();\n public readonly nodeUnselect = output<SmzTreeNodeEvent>();\n public readonly nodeExpand = output<SmzTreeNodeEvent>();\n public readonly nodeCollapse = output<SmzTreeNodeEvent>();\n public readonly nodeContextMenuSelect = output<SmzTreeNodeEvent>();\n public readonly nodeDblClick = output<SmzTreeNodeEvent>();\n public readonly nodeDrop = output<SmzTreeDropEvent>();\n public readonly filtered = output<{ filter: string; filteredValue: SmzUiTreeNode[] }>();\n\n /** Elemento hospedeiro (compatibilidade com `Tree.el` do PrimeNG). */\n public readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** Incrementado a cada mutacao in-place (expansao, selecao propagada, drop) para recalcular as linhas. */\n private readonly tick = signal(0);\n private readonly query = signal('');\n protected readonly dropHover = signal<{ key: SmzUiTreeNode; position: DropPosition } | null>(null);\n private dragged: TreeRow | null = null;\n\n private readonly templates = contentChildren(SmzTemplateDirective);\n private readonly allTemplates = computed(() => this.templateOverride() ?? this.templates());\n protected readonly headerTemplate = computed(() => smzFindTemplate(this.allTemplates(), 'header'));\n protected readonly footerTemplate = computed(() => smzFindTemplate(this.allTemplates(), 'footer'));\n protected readonly emptyTemplate = computed(() => smzFindTemplate(this.allTemplates(), 'empty'));\n\n protected readonly rows = computed<TreeRow[]>(() => {\n this.tick();\n const text = this.query().trim().toLocaleLowerCase();\n const matches = text ? this.matchingNodes(this.value() ?? [], text) : null;\n const rows: TreeRow[] = [];\n\n const lenient = this.filterMode() !== 'strict';\n const walk = (nodes: SmzUiTreeNode[], level: number, parent: SmzUiTreeNode | null, forceShow: boolean): void => {\n nodes.forEach((node, index) => {\n node.parent = parent ?? undefined;\n const kind = matches?.get(node);\n if (matches && !forceShow && !kind) return;\n\n rows.push({ node, level, siblings: nodes, index, parent });\n if (!node.children?.length) return;\n\n // Com filtro, abre os nos que levam as combinacoes; sem filtro, respeita `expanded`.\n const open = matches ? true : node.expanded;\n if (open) walk(node.children, level + 1, node, forceShow || (lenient && kind === 'self'));\n });\n };\n walk(this.value() ?? [], 0, null, false);\n return rows;\n });\n\n /** Filtra os nos por texto no campo `filterBy` (modo `lenient` mantem os filhos de um no que combina). */\n public _filter(value: string): void {\n this.query.set(value ?? '');\n const filteredValue = (this.rows() ?? []).map((row) => row.node);\n this.filtered.emit({ filter: value, filteredValue });\n }\n\n protected isLeaf(node: SmzUiTreeNode): boolean {\n return node.leaf === false ? false : !(node.children && node.children.length > 0);\n }\n\n protected iconOf(node: SmzUiTreeNode): string | null {\n if (node.expanded && node.children?.length && node.expandedIcon) return node.expandedIcon;\n if (!node.expanded && node.children?.length && node.collapsedIcon) return node.collapsedIcon;\n return node.icon ?? null;\n }\n\n protected templateFor(node: SmzUiTreeNode): TemplateRef<unknown> | undefined {\n const templates = this.allTemplates();\n return smzFindTemplate(templates, node.type ?? 'default') ?? smzFindTemplate(templates, 'default');\n }\n\n protected isSelected(node: SmzUiTreeNode): boolean {\n this.tick();\n return this.indexInSelection(node) >= 0;\n }\n\n protected isDraggable(node: SmzUiTreeNode): boolean {\n return this.draggableNodes() && node.draggable !== false;\n }\n\n protected rowClasses(row: TreeRow): string {\n const selected = this.isSelected(row.node) && this.selectionMode() !== 'checkbox';\n const hover = this.dropHover();\n const dropTarget = hover?.key === row.node && hover.position === 0;\n return [\n this.selectionMode() ? 'cursor-pointer' : '',\n selected ? 'bg-ui-primary/10 text-ui-primary' : 'hover:bg-ui-surface-3',\n dropTarget ? 'ring-2 ring-ui-primary' : '',\n ].join(' ');\n }\n\n protected toggle(event: Event, node: SmzUiTreeNode): void {\n event.stopPropagation();\n if (node.expanded) this.collapse(event, node);\n else this.expand(event, node);\n }\n\n private expand(event: Event, node: SmzUiTreeNode): void {\n node.expanded = true;\n this.tick.update((value) => value + 1);\n this.nodeExpand.emit({ originalEvent: event, node });\n }\n\n private collapse(event: Event, node: SmzUiTreeNode): void {\n node.expanded = false;\n this.tick.update((value) => value + 1);\n this.nodeCollapse.emit({ originalEvent: event, node });\n }\n\n protected onNodeClick(event: Event, node: SmzUiTreeNode): void {\n const mode = this.selectionMode();\n if (!mode || node.selectable === false) return;\n\n const index = this.indexInSelection(node);\n const selected = index >= 0;\n\n if (mode === 'checkbox') {\n if (selected) {\n if (this.propagateSelectionDown()) this.propagateDown(node, false);\n else this.setSelection(this.listSelection().filter((_, i) => i !== index));\n if (this.propagateSelectionUp() && node.parent) this.propagateUp(node.parent, false);\n this.nodeUnselect.emit({ originalEvent: event, node });\n }\n else {\n if (this.propagateSelectionDown()) this.propagateDown(node, true);\n else this.setSelection([...this.listSelection(), node]);\n if (this.propagateSelectionUp() && node.parent) this.propagateUp(node.parent, true);\n this.nodeSelect.emit({ originalEvent: event, node });\n }\n }\n else if (mode === 'single') {\n this.selection.set(selected ? null : node);\n if (selected) this.nodeUnselect.emit({ originalEvent: event, node });\n else this.nodeSelect.emit({ originalEvent: event, node });\n }\n else {\n this.setSelection(selected ? this.listSelection().filter((_, i) => i !== index) : [...this.listSelection(), node]);\n if (selected) this.nodeUnselect.emit({ originalEvent: event, node });\n else this.nodeSelect.emit({ originalEvent: event, node });\n }\n this.tick.update((value) => value + 1);\n }\n\n protected onContextMenu(event: MouseEvent, node: SmzUiTreeNode): void {\n const menu = this.contextMenu();\n if (!menu) return;\n event.preventDefault();\n this.nodeContextMenuSelect.emit({ originalEvent: event, node });\n setTimeout(() => menu.showAt(event.clientX, event.clientY), 0);\n }\n\n protected onKeydown(event: KeyboardEvent, row: TreeRow): void {\n const node = row.node;\n switch (event.key) {\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.onNodeClick(event, node);\n break;\n case 'ArrowRight':\n event.preventDefault();\n if (!this.isLeaf(node) && !node.expanded) this.expand(event, node);\n break;\n case 'ArrowLeft':\n event.preventDefault();\n if (!this.isLeaf(node) && node.expanded) this.collapse(event, node);\n break;\n case 'ArrowDown':\n case 'ArrowUp': {\n event.preventDefault();\n const rows = Array.from(this.el.nativeElement.querySelectorAll<HTMLElement>('[role=\"treeitem\"] > div'));\n const current = rows.indexOf(event.currentTarget as HTMLElement);\n rows[current + (event.key === 'ArrowDown' ? 1 : -1)]?.focus();\n break;\n }\n default:\n break;\n }\n }\n\n // ----- selecao -----\n\n private listSelection(): any[] {\n const current = this.selection();\n return Array.isArray(current) ? current : current ? [current] : [];\n }\n\n private setSelection(list: any[]): void {\n this.selection.set(list);\n }\n\n private indexInSelection(node: SmzUiTreeNode): number {\n const current = this.selection();\n if (current === null || current === undefined) return -1;\n if (Array.isArray(current)) return current.findIndex((entry) => this.sameNode(entry, node));\n return this.sameNode(current, node) ? 0 : -1;\n }\n\n private sameNode(first: any, second: any): boolean {\n if (first === second) return true;\n return !!first && !!second && first.key !== undefined && first.key !== null && first.key === second.key;\n }\n\n private propagateDown(node: SmzUiTreeNode, select: boolean): void {\n const index = this.indexInSelection(node);\n if (select && index === -1) this.setSelection([...this.listSelection(), node]);\n else if (!select && index > -1) this.setSelection(this.listSelection().filter((_, i) => i !== index));\n node.partialSelected = false;\n for (const child of node.children ?? []) this.propagateDown(child, select);\n }\n\n private propagateUp(node: SmzUiTreeNode, select: boolean): void {\n if (node.children?.length) {\n let selectedCount = 0;\n let childPartial = false;\n for (const child of node.children) {\n if (this.indexInSelection(child) >= 0) selectedCount++;\n else if (child.partialSelected) childPartial = true;\n }\n\n if (select && selectedCount === node.children.length) {\n if (this.indexInSelection(node) === -1) this.setSelection([...this.listSelection(), node]);\n node.partialSelected = false;\n }\n else {\n if (!select) {\n const index = this.indexInSelection(node);\n if (index >= 0) this.setSelection(this.listSelection().filter((_, i) => i !== index));\n }\n node.partialSelected = childPartial || (selectedCount > 0 && selectedCount !== node.children.length);\n }\n }\n if (node.parent) this.propagateUp(node.parent, select);\n }\n\n // ----- filtro -----\n\n /** Mapa no -> motivo (`self` combina; `child` tem descendente que combina). */\n private matchingNodes(nodes: SmzUiTreeNode[], text: string): Map<SmzUiTreeNode, 'self' | 'child'> {\n const result = new Map<SmzUiTreeNode, 'self' | 'child'>();\n const visit = (node: SmzUiTreeNode): boolean => {\n const own = String(node[this.filterBy()] ?? '').toLocaleLowerCase().includes(text);\n let childMatch = false;\n for (const child of node.children ?? []) childMatch = visit(child) || childMatch;\n if (own) result.set(node, 'self');\n else if (childMatch) result.set(node, 'child');\n return own || childMatch;\n };\n nodes.forEach(visit);\n return result;\n }\n\n // ----- arrastar e soltar -----\n\n protected onDragStart(event: DragEvent, row: TreeRow): void {\n if (!this.isDraggable(row.node)) {\n event.preventDefault();\n return;\n }\n event.dataTransfer?.setData('text', 'data');\n if (event.dataTransfer) event.dataTransfer.effectAllowed = 'all';\n this.dragged = row;\n }\n\n protected onDragEnd(): void {\n this.dragged = null;\n this.dropHover.set(null);\n }\n\n private allowDrop(target: SmzUiTreeNode | null): boolean {\n const drag = this.dragged?.node;\n if (!drag) return false;\n if (!target) return true;\n if (drag === target) return false;\n let parent = target.parent;\n while (parent) {\n if (parent === drag) return false;\n parent = parent.parent;\n }\n return true;\n }\n\n private positionOf(event: DragEvent, element: HTMLElement): DropPosition {\n const rect = element.getBoundingClientRect();\n const y = event.clientY - rect.top;\n if (y < rect.height * 0.25) return -1;\n if (y > rect.height * 0.75) return 1;\n return 0;\n }\n\n protected onDragOver(event: DragEvent, row: TreeRow): void {\n if (!this.droppableNodes()) return;\n event.preventDefault();\n event.stopPropagation();\n\n if (!this.allowDrop(row.node)) {\n if (event.dataTransfer) event.dataTransfer.dropEffect = 'none';\n this.dropHover.set(null);\n return;\n }\n if (event.dataTransfer) event.dataTransfer.dropEffect = 'copy';\n let position = this.positionOf(event, event.currentTarget as HTMLElement);\n if (position === 0 && row.node.droppable === false) position = 1;\n this.dropHover.set({ key: row.node, position });\n }\n\n protected onDragLeave(): void {\n this.dropHover.set(null);\n }\n\n protected onDrop(event: DragEvent, row: TreeRow): void {\n if (!this.droppableNodes() || !this.dragged) return;\n event.preventDefault();\n event.stopPropagation();\n\n const hover = this.dropHover();\n const position = hover?.key === row.node ? hover.position : this.positionOf(event, event.currentTarget as HTMLElement);\n this.dropHover.set(null);\n if (!this.allowDrop(row.node) || (position === 0 && row.node.droppable === false)) return;\n\n const drag = this.dragged;\n const apply = (): void => {\n const dragIndex = drag.siblings.indexOf(drag.node);\n const subNodes = row.parent ? (row.parent.children ??= []) : (this.value() ?? []);\n const target = row.siblings === subNodes ? row.index : subNodes.indexOf(row.node);\n const dropIndex = drag.siblings === subNodes ? (dragIndex > target ? target : target - 1) : target;\n drag.siblings.splice(dragIndex, 1);\n\n if (position < 0) {\n subNodes.splice(dropIndex, 0, drag.node);\n drag.node.parent = row.parent ?? undefined;\n }\n else if (position > 0) {\n subNodes.splice(dropIndex + 1, 0, drag.node);\n drag.node.parent = row.parent ?? undefined;\n }\n else {\n row.node.children = row.node.children ?? [];\n row.node.children.push(drag.node);\n drag.node.parent = row.node;\n }\n this.dragged = null;\n this.tick.update((value) => value + 1);\n };\n\n if (this.validateDrop()) {\n this.nodeDrop.emit({ originalEvent: event, dragNode: drag.node, dropNode: row.node, index: row.index, accept: apply });\n }\n else {\n apply();\n this.nodeDrop.emit({ originalEvent: event, dragNode: drag.node, dropNode: row.node, index: row.index });\n }\n }\n\n protected onRootDragOver(event: DragEvent): void {\n if (this.droppableNodes() && this.dragged && (event.target as HTMLElement).tagName === 'UL') event.preventDefault();\n }\n\n protected onRootDrop(event: DragEvent): void {\n if (!this.droppableNodes() || !this.dragged || (event.target as HTMLElement).tagName !== 'UL') return;\n event.preventDefault();\n const drag = this.dragged;\n const roots = this.value() ?? [];\n const apply = (): void => {\n drag.siblings.splice(drag.siblings.indexOf(drag.node), 1);\n roots.push(drag.node);\n drag.node.parent = undefined;\n this.dragged = null;\n this.tick.update((value) => value + 1);\n };\n if (this.validateDrop()) this.nodeDrop.emit({ originalEvent: event, dragNode: drag.node, dropNode: null, index: drag.index, accept: apply });\n else {\n apply();\n this.nodeDrop.emit({ originalEvent: event, dragNode: drag.node, dropNode: null, index: drag.index });\n }\n }\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\n/* eslint-disable @typescript-eslint/no-unsafe-return, @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/explicit-module-boundary-types */\nimport { Overlay } from '@angular/cdk/overlay';\nimport { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n booleanAttribute,\n computed,\n contentChildren,\n forwardRef,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SmzAnchoredPanel } from '../core/anchored-panel';\nimport { SmzTemplateDirective } from '../core/template.directive';\nimport { SmzValueAccessor } from '../core/value-accessor';\nimport { SmzUiTreeComponent } from '../tree/tree.component';\nimport { SmzUiTreeNode } from '../types/tree-node';\n\n/**\n * Selecao de no de arvore em lista suspensa. Substitui o `p-treeselect` do PrimeNG.\n * O valor e o proprio no (modo `single`) ou a lista de nos (`multiple` e `checkbox`).\n * Aceita os mesmos templates por tipo de no do `ui-tree`.\n */\n@Component({\n selector: 'ui-tree-select',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, SmzUiTreeComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzTreeSelectComponent), multi: true }],\n host: { class: 'block min-w-0' },\n template: `\n <button\n #trigger\n type=\"button\"\n role=\"combobox\"\n aria-haspopup=\"tree\"\n class=\"flex h-control w-full cursor-pointer items-center gap-2 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x text-left font-ui text-ui-md text-ui-fg transition-colors duration-ui focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50\"\n [ngClass]=\"[containerStyleClass() ?? '', styleClass() ?? '']\"\n [attr.aria-expanded]=\"open()\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggle()\"\n (keydown.escape)=\"close()\"\n (blur)=\"onBlur()\"\n >\n <span class=\"min-w-0 flex-1 truncate\" [class.text-ui-fg-subtle]=\"selectedNodes().length === 0\">{{ label() }}</span>\n @if (showClear() && selectedNodes().length > 0 && !isDisabled()) {\n <span role=\"button\" tabindex=\"-1\" aria-label=\"Limpar\" class=\"inline-flex h-5 w-5 items-center justify-center rounded-full text-ui-fg-muted hover:bg-ui-surface-3\" (click)=\"clear($event)\">\n <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" aria-hidden=\"true\"><path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" /></svg>\n </span>\n }\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4 shrink-0 text-ui-fg-muted\" fill=\"none\" aria-hidden=\"true\"><path d=\"M4 6l4 4 4-4\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg>\n </button>\n\n <ng-template #panel>\n <div class=\"max-h-80 overflow-auto rounded-overlay border border-ui-line bg-ui-surface-2 p-1 font-ui text-ui-md text-ui-fg shadow-overlay\">\n @if (filter()) {\n <div class=\"p-1\">\n <input type=\"text\" class=\"h-control-sm w-full rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x-sm text-ui-sm focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus\" [placeholder]=\"filterPlaceholder() ?? ''\" (input)=\"tree._filter($any($event.target).value)\" />\n </div>\n }\n <ui-tree\n #tree\n [value]=\"options()\"\n [selectionMode]=\"selectionMode()\"\n [selection]=\"current()\"\n (selectionChange)=\"onSelection($event)\"\n [emptyMessage]=\"emptyMessage()\"\n [templateOverride]=\"templates()\"\n [scrollHeight]=\"scrollHeight()\"\n class=\"[&>div]:border-0 [&>div]:p-0\"\n />\n </div>\n </ng-template>\n `,\n})\nexport class SmzTreeSelectComponent extends SmzValueAccessor<any> implements OnDestroy {\n public readonly options = input<SmzUiTreeNode[] | null | undefined>([]);\n public readonly selectionMode = input<'single' | 'multiple' | 'checkbox' | string>('single');\n public readonly placeholder = input<string | null | undefined>('');\n public readonly filter = input(false, { transform: booleanAttribute });\n public readonly filterPlaceholder = input<string | null | undefined>('');\n public readonly emptyMessage = input<string | null | undefined>('');\n public readonly showClear = input(false, { transform: booleanAttribute });\n public readonly scrollHeight = input<string | null | undefined>(null);\n public readonly styleClass = input<string | null | undefined>('');\n public readonly containerStyleClass = input<string | null | undefined>('');\n /** Aceitos por compatibilidade com o `p-treeselect`; sem efeito. */\n public readonly appendTo = input<unknown>(undefined);\n public readonly display = input<string | null | undefined>('comma');\n public readonly filterInputAutoFocus = input(false, { transform: booleanAttribute });\n\n protected readonly templates = contentChildren(SmzTemplateDirective);\n protected readonly open = signal(false);\n\n protected readonly selectedNodes = computed<SmzUiTreeNode[]>(() => {\n const value = this.current();\n return Array.isArray(value) ? value : value ? [value] : [];\n });\n protected readonly label = computed(() => {\n const nodes = this.selectedNodes();\n return nodes.length === 0 ? (this.placeholder() ?? '') : nodes.map((node) => node.label ?? '').join(', ');\n });\n\n private readonly overlay = inject(Overlay);\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly trigger = viewChild.required<ElementRef<HTMLButtonElement>>('trigger');\n private readonly panel = viewChild.required<TemplateRef<unknown>>('panel');\n private readonly anchored = new SmzAnchoredPanel(this.overlay, this.viewContainer);\n\n public ngOnDestroy(): void {\n this.anchored.close();\n }\n\n protected toggle(): void {\n if (this.open()) this.close();\n else this.openPanel();\n }\n\n protected onBlur(): void {\n if (!this.open()) this.touch();\n }\n\n protected onSelection(selection: any): void {\n this.commit(selection);\n if (this.selectionMode() === 'single') this.close();\n }\n\n protected clear(event: Event): void {\n event.stopPropagation();\n this.commit(this.selectionMode() === 'single' ? null : []);\n }\n\n private openPanel(): void {\n if (this.isDisabled() || this.open()) return;\n this.anchored.open(this.trigger().nativeElement, this.panel(), { matchWidth: true, onDismiss: () => { this.open.set(false); this.touch(); } });\n this.open.set(true);\n }\n\n protected close(): void {\n if (!this.open()) return;\n this.anchored.close();\n this.open.set(false);\n this.touch();\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, inject } from '@angular/core';\n\n/** Paleta no formato Tailwind (`500`, `600`...) em hexadecimal. */\nexport type SmzPalette = Partial<Record<0 | 50 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | 950, string>>;\n\nconst hexToChannels = (hex: string): string => {\n const value = hex.replace('#', '');\n const full = value.length === 3 ? value.split('').map((c) => c + c).join('') : value;\n const n = parseInt(full, 16);\n return `${Math.floor(n / 65536) % 256} ${Math.floor(n / 256) % 256} ${n % 256}`;\n};\n\n/**\n * Altera tokens do tema em tempo de execucao (cores sao canais RGB em `--smz-color-*`).\n * O tema base vem do CSS (themes/*.css); este servico apenas sobrescreve variaveis no `<html>`.\n */\n@Injectable({ providedIn: 'root' })\nexport class SmzThemeService {\n private readonly root = inject(DOCUMENT).documentElement;\n\n /** Sobrescreve cores: `{ primary: '#6366f1' }` -> `--smz-color-primary`. Aceita hexadecimal ou canais (\"99 102 241\"). */\n public setColors(colors: Record<string, string>): void {\n for (const [name, value] of Object.entries(colors)) {\n this.root.style.setProperty(`--smz-color-${name}`, value.startsWith('#') ? hexToChannels(value) : value);\n }\n }\n\n /** Define a cor primaria a partir de uma paleta; escolhe os tons por modo claro/escuro. */\n public setPrimaryPalette(palette: SmzPalette, dark: boolean = this.isDark()): void {\n const pick = (light: keyof SmzPalette, night: keyof SmzPalette): string => (dark ? palette[night] : palette[light]) ?? palette[500] ?? '#2563eb';\n this.setColors({\n primary: pick(500, 400),\n 'primary-hover': pick(600, 300),\n 'primary-active': pick(700, 200),\n focus: pick(500, 400),\n 'on-primary': dark ? '#0f172a' : '#ffffff',\n });\n }\n\n /** Remove todas as sobrescritas feitas por este servico (volta ao tema do CSS). */\n public reset(): void {\n const style = this.root.style;\n for (let i = style.length - 1; i >= 0; i--) {\n const prop = style.item(i);\n if (prop.startsWith('--smz-')) style.removeProperty(prop);\n }\n }\n\n public isDark(): boolean {\n return this.root.classList.contains('app-dark') || this.root.getAttribute('data-smz-mode') === 'dark';\n }\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, contentChildren, input } from '@angular/core';\nimport { SmzTemplateDirective, smzFindTemplate } from '../core/template.directive';\n\n/**\n * Card. Substitui o `p-card` do PrimeNG.\n * O conteudo padrao vai no corpo; `header`, `title`, `subtitle` e `footer` podem ser strings ou templates.\n *\n * <ui-card header=\"Titulo\" subheader=\"Sub\">conteudo<ng-template smzTemplate=\"footer\">...</ng-template></ui-card>\n */\n@Component({\n selector: 'ui-card',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet],\n host: { class: 'p-card flex flex-col overflow-hidden rounded-card bg-ui-surface-1 font-ui text-ui-md text-ui-fg shadow-card' },\n template: `\n @if (headerTemplate(); as tpl) {\n <div class=\"p-card-header\"><ng-container [ngTemplateOutlet]=\"tpl\" /></div>\n }\n <div class=\"p-card-body flex flex-1 flex-col gap-2 p-5\">\n @if (titleTemplate() || header()) {\n <div class=\"p-card-title text-ui-xl font-semibold\">\n @if (titleTemplate(); as tpl) { <ng-container [ngTemplateOutlet]=\"tpl\" /> } @else { {{ header() }} }\n </div>\n }\n @if (subtitleTemplate() || subheader()) {\n <div class=\"p-card-subtitle text-ui-fg-muted\">\n @if (subtitleTemplate(); as tpl) { <ng-container [ngTemplateOutlet]=\"tpl\" /> } @else { {{ subheader() }} }\n </div>\n }\n <div class=\"p-card-content flex-1\"><ng-content /></div>\n @if (footerTemplate(); as tpl) {\n <div class=\"p-card-footer\"><ng-container [ngTemplateOutlet]=\"tpl\" /></div>\n }\n </div>\n `,\n})\nexport class SmzCardComponent {\n /** Titulo em texto (equivale ao slot `title`). */\n public readonly header = input<string | null | undefined>('');\n /** Subtitulo em texto (equivale ao slot `subtitle`). */\n public readonly subheader = input<string | null | undefined>('');\n\n private readonly templates = contentChildren(SmzTemplateDirective);\n protected readonly headerTemplate = computed(() => smzFindTemplate(this.templates(), 'header'));\n protected readonly titleTemplate = computed(() => smzFindTemplate(this.templates(), 'title'));\n protected readonly subtitleTemplate = computed(() => smzFindTemplate(this.templates(), 'subtitle'));\n protected readonly footerTemplate = computed(() => smzFindTemplate(this.templates(), 'footer'));\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, booleanAttribute, computed, contentChildren, input, model, output } from '@angular/core';\nimport { SmzTemplateDirective, smzFindTemplate } from '../core/template.directive';\n\n/**\n * Painel com cabecalho, recolhimento opcional e rodape. Substitui o `p-panel` do PrimeNG.\n *\n * <ui-panel header=\"Filtros\" [toggleable]=\"true\" [(collapsed)]=\"fechado\">conteudo</ui-panel>\n */\n@Component({\n selector: 'ui-panel',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet],\n host: { class: 'p-panel block overflow-hidden rounded-card border border-ui-line bg-ui-surface-1 font-ui text-ui-md text-ui-fg' },\n template: `\n @if (hasHeader()) {\n <div\n class=\"p-panel-header flex items-center justify-between gap-2 border-b border-ui-line bg-ui-surface-1 px-4 py-3\"\n [class]=\"headerToggles() ? 'cursor-pointer select-none hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ui-focus' : ''\"\n [attr.role]=\"headerToggles() ? 'button' : null\"\n [attr.tabindex]=\"headerToggles() ? 0 : null\"\n [attr.aria-expanded]=\"headerToggles() ? !collapsed() : null\"\n (click)=\"onHeaderClick($event)\"\n (keydown.enter)=\"onHeaderKey($event)\"\n (keydown.space)=\"onHeaderKey($event)\"\n >\n <div class=\"min-w-0 flex-1 font-semibold\">\n @if (headerTemplate(); as tpl) { <ng-container [ngTemplateOutlet]=\"tpl\" /> } @else { {{ header() }} }\n </div>\n <div class=\"flex items-center gap-1\">\n @if (iconsTemplate(); as tpl) { <ng-container [ngTemplateOutlet]=\"tpl\" /> }\n @if (toggleable()) {\n <button type=\"button\" class=\"inline-flex h-8 w-8 items-center justify-center rounded-full text-ui-fg-muted transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus\" data-panel-toggle [attr.aria-expanded]=\"!collapsed()\" [attr.aria-label]=\"collapsed() ? 'Expandir' : 'Recolher'\" [attr.tabindex]=\"headerToggles() ? -1 : null\" (click)=\"onIconClick($event)\">\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4 transition-transform duration-ui\" [class.rotate-180]=\"!collapsed()\" fill=\"none\" aria-hidden=\"true\"><path d=\"M4 6l4 4 4-4\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg>\n </button>\n }\n </div>\n </div>\n }\n @if (!collapsed()) {\n <div class=\"p-panel-content p-4\"><ng-content /></div>\n @if (footerTemplate(); as tpl) {\n <div class=\"p-panel-footer border-t border-ui-line px-4 py-3\"><ng-container [ngTemplateOutlet]=\"tpl\" /></div>\n }\n }\n `,\n})\nexport class SmzPanelComponent {\n public readonly header = input<string | null | undefined>('');\n public readonly toggleable = input(false, { transform: booleanAttribute });\n public readonly collapsed = model(false);\n /**\n * O que alterna o painel: `icon` (padrao; so o botao) ou `header` (o cabecalho inteiro, exceto elementos\n * interativos dentro dele, como botoes do template `icons`). Equivale ao `toggler` do `p-panel`.\n */\n public readonly toggler = input<'icon' | 'header'>('icon');\n /** Antes de alternar (cancelavel nao: apenas notifica). */\n public readonly beforeToggle = output<{ originalEvent: Event; collapsed: boolean }>();\n public readonly afterToggle = output<{ originalEvent: Event; collapsed: boolean }>();\n\n private readonly templates = contentChildren(SmzTemplateDirective);\n protected readonly headerTemplate = computed(() => smzFindTemplate(this.templates(), 'header'));\n protected readonly iconsTemplate = computed(() => smzFindTemplate(this.templates(), 'icons'));\n protected readonly footerTemplate = computed(() => smzFindTemplate(this.templates(), 'footer'));\n protected readonly hasHeader = computed(() => !!this.header() || !!this.headerTemplate() || this.toggleable());\n\n protected readonly headerToggles = computed(() => this.toggleable() && this.toggler() === 'header');\n\n protected onIconClick(event: Event): void {\n // No modo `header` o clique no botao sobe ate o cabecalho, que ja alterna.\n if (!this.headerToggles()) this.toggle(event);\n }\n\n protected onHeaderClick(event: Event): void {\n if (!this.headerToggles()) return;\n const target = event.target as HTMLElement;\n const interactive = target.closest('button, a, input, select, textarea, label, [role=\"button\"], [role=\"menuitem\"]');\n // Ignora controles do template `icons`; o botao-seta do proprio painel (e o cabecalho) alternam.\n if (interactive && !interactive.classList.contains('p-panel-header') && !interactive.hasAttribute('data-panel-toggle')) return;\n this.toggle(event);\n }\n\n protected onHeaderKey(event: Event): void {\n if (!this.headerToggles() || event.target !== event.currentTarget) return;\n event.preventDefault();\n this.toggle(event);\n }\n\n protected toggle(event: Event): void {\n const next = !this.collapsed();\n this.beforeToggle.emit({ originalEvent: event, collapsed: next });\n this.collapsed.set(next);\n this.afterToggle.emit({ originalEvent: event, collapsed: next });\n }\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n/**\n * Indicador de carregamento circular. Substitui o `p-progressspinner` do PrimeNG.\n * O tamanho vem das classes do host (ex.: `class=\"h-12 w-12\"`); a cor, de `text-ui-primary` (herdavel).\n *\n * <ui-progress-spinner class=\"h-12 w-12\" strokeWidth=\"4\" />\n */\n@Component({\n selector: 'ui-progress-spinner',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'inline-block h-10 w-10 text-ui-primary', role: 'progressbar', 'aria-busy': 'true' },\n template: `\n <svg viewBox=\"0 0 50 50\" class=\"h-full w-full animate-spin\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"25\" cy=\"25\" r=\"20\" stroke=\"currentColor\" [attr.stroke-width]=\"strokeWidth()\" stroke-linecap=\"round\" stroke-dasharray=\"90 150\" />\n </svg>\n `,\n})\nexport class SmzProgressSpinnerComponent {\n public readonly strokeWidth = input<string | number>(4);\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\r\nimport { ChangeDetectionStrategy, Component, ElementRef, afterEveryRender, computed, inject, input, signal } from '@angular/core';\r\n\r\nexport type SmzFloatLabelVariant = 'over' | 'in' | 'on';\r\n\r\nconst BASE = 'relative block [&_label]:pointer-events-none [&_label]:absolute [&_label]:left-3 [&_label]:z-10 [&_label]:text-ui-fg-subtle [&_label]:transition-all [&_label]:duration-ui';\r\nconst RESTING = '[&_label]:top-1/2 [&_label]:-translate-y-1/2 [&_label]:text-ui-md';\r\nconst FLOATED: Record<SmzFloatLabelVariant, string> = {\r\n over: '[&_label]:-top-5 [&_label]:left-0 [&_label]:translate-y-0 [&_label]:text-ui-xs [&_label]:text-ui-fg-muted',\r\n on: '[&_label]:top-0 [&_label]:left-2 [&_label]:-translate-y-1/2 [&_label]:bg-ui-surface-1 [&_label]:px-1 [&_label]:text-ui-xs [&_label]:text-ui-fg-muted',\r\n in: '[&_label]:top-1.5 [&_label]:translate-y-0 [&_label]:text-ui-xs [&_label]:text-ui-fg-muted',\r\n};\r\nconst IN_PADDING = '[&_input]:pt-4 [&_textarea]:pt-5 [&_[role=combobox]]:pt-4';\r\n\r\n/**\r\n * Rotulo flutuante. Substitui o `p-floatlabel` do PrimeNG.\r\n * O `<label>` projetado flutua quando o controle recebe foco ou tem valor\r\n * (detectado em `input`/`textarea` e em selects do kit; use `[filled]` para forcar).\r\n *\r\n * <ui-float-label variant=\"on\"><input smzInputText id=\"n\" /><label for=\"n\">Nome</label></ui-float-label>\r\n */\r\n@Component({\r\n selector: 'ui-float-label',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class]': 'classes()',\r\n '(focusin)': 'focused.set(true)',\r\n '(focusout)': 'focused.set(false); check()',\r\n '(input)': 'check()',\r\n '(change)': 'check()',\r\n },\r\n template: '<ng-content />',\r\n})\r\nexport class SmzFloatLabelComponent {\r\n public readonly variant = input<SmzFloatLabelVariant>('over');\r\n /** Forca o estado \"preenchido\" quando a deteccao automatica nao se aplica. */\r\n public readonly filled = input<boolean | null>(null);\r\n\r\n protected readonly focused = signal(false);\r\n private readonly detected = signal(false);\r\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n protected readonly floated = computed(() => this.focused() || (this.filled() ?? this.detected()));\r\n protected readonly classes = computed(() => {\r\n const variant = this.variant();\r\n return [BASE, this.floated() ? FLOATED[variant] : RESTING, variant === 'in' ? IN_PADDING : ''].join(' ');\r\n });\r\n\r\n constructor() {\r\n afterEveryRender(() => this.check());\r\n }\r\n\r\n protected check(): void {\r\n {\r\n const root = this.host.nativeElement;\r\n const field = root.querySelector<HTMLInputElement | HTMLTextAreaElement>('input:not([type=checkbox]):not([type=radio]), textarea');\r\n const combo = root.querySelector('[role=combobox]');\r\n let filled = false;\r\n if (field && field.value !== '') filled = true;\r\n else if (combo && !field) filled = !combo.querySelector('.text-ui-fg-subtle') && (combo.textContent ?? '').trim() !== '';\r\n if (filled !== this.detected()) this.detected.set(filled);\r\n }\r\n }\r\n}\r\n","/* eslint-disable max-len -- classes Tailwind nos templates */\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ElementRef, TemplateRef, computed, contentChildren, input, output, signal, viewChild } from '@angular/core';\n\n/** Painel de um `ui-splitter`. O conteudo e projetado dentro da area do painel. */\n@Component({\n selector: 'ui-splitter-panel',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-template><ng-content /></ng-template>',\n})\nexport class SmzSplitterPanelComponent {\n public readonly content = viewChild.required<TemplateRef<unknown>>(TemplateRef);\n /** Tamanho inicial em % (sobrescreve `panelSizes` do splitter). */\n public readonly size = input<number | null>(null);\n public readonly minSize = input<number | null>(null);\n}\n\n/**\n * Divisor redimensionavel. Substitui o `p-splitter` / `p-splitterPanel` do PrimeNG.\n *\n * <ui-splitter layout=\"horizontal\" [panelSizes]=\"[30, 70]\" [minSizes]=\"[10, 20]\">\n * <ui-splitter-panel>A</ui-splitter-panel><ui-splitter-panel>B</ui-splitter-panel>\n * </ui-splitter>\n */\n@Component({\n selector: 'ui-splitter',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet],\n host: { class: 'block h-full w-full overflow-hidden rounded-control border border-ui-line bg-ui-surface-1 font-ui text-ui-md text-ui-fg' },\n template: `\n <div #root class=\"flex h-full w-full\" [class.flex-col]=\"layout() === 'vertical'\">\n @for (panel of panels(); track $index; let i = $index) {\n <div class=\"min-h-0 min-w-0 overflow-auto\" [style.flex]=\"'0 0 ' + sizes()[i] + '%'\" [style.width]=\"layout() === 'horizontal' ? sizes()[i] + '%' : null\" [style.height]=\"layout() === 'vertical' ? sizes()[i] + '%' : null\">\n <ng-container [ngTemplateOutlet]=\"panel.content()\" />\n </div>\n @if (i < panels().length - 1) {\n <div\n role=\"separator\"\n tabindex=\"0\"\n class=\"shrink-0 bg-ui-line transition-colors duration-ui hover:bg-ui-primary focus-visible:bg-ui-primary focus-visible:outline-none\"\n [class]=\"layout() === 'horizontal' ? 'w-1 cursor-col-resize' : 'h-1 cursor-row-resize'\"\n [attr.aria-orientation]=\"layout() === 'horizontal' ? 'vertical' : 'horizontal'\"\n (pointerdown)=\"startDrag($event, i)\"\n (keydown)=\"onKey($event, i)\"\n ></div>\n }\n }\n </div>\n `,\n})\nexport class SmzSplitterComponent {\n public readonly layout = input<'horizontal' | 'vertical'>('horizontal');\n public readonly panelSizes = input<number[] | null | undefined>(null);\n public readonly minSizes = input<number[] | null | undefined>(null);\n public readonly resizeEnd = output<{ sizes: number[] }>();\n\n protected readonly panels = contentChildren(SmzSplitterPanelComponent);\n private readonly root = viewChild.required<ElementRef<HTMLElement>>('root');\n private readonly overrides = signal<number[] | null>(null);\n\n protected readonly sizes = computed<number[]>(() => {\n const override = this.overrides();\n if (override && override.length === this.panels().length) return override;\n const panels = this.panels();\n const base = this.panelSizes() ?? [];\n const explicit = panels.map((panel, i) => panel.size() ?? base[i] ?? null);\n const known = explicit.reduce<number>((sum, size) => sum + (size ?? 0), 0);\n const free = explicit.filter((size) => size === null).length;\n const share = free > 0 ? Math.max(0, 100 - known) / free : 0;\n return explicit.map((size) => size ?? share);\n });\n\n private min(index: number): number {\n return this.panels()[index]?.minSize() ?? this.minSizes()?.[index] ?? 0;\n }\n\n protected startDrag(event: PointerEvent, index: number): void {\n event.preventDefault();\n const rect = this.root().nativeElement.getBoundingClientRect();\n const total = this.layout() === 'horizontal' ? rect.width : rect.height;\n const start = this.layout() === 'horizontal' ? event.clientX : event.clientY;\n const initial = [...this.sizes()];\n\n const move = (e: PointerEvent): void => {\n const delta = (((this.layout() === 'horizontal' ? e.clientX : e.clientY) - start) / total) * 100;\n this.resize(initial, index, delta);\n };\n const up = (): void => {\n document.removeEventListener('pointermove', move);\n document.removeEventListener('pointerup', up);\n this.resizeEnd.emit({ sizes: this.sizes() });\n };\n document.addEventListener('pointermove', move);\n document.addEventListener('pointerup', up);\n }\n\n protected onKey(event: KeyboardEvent, index: number): void {\n const keys = this.layout() === 'horizontal' ? { dec: 'ArrowLeft', inc: 'ArrowRight' } : { dec: 'ArrowUp', inc: 'ArrowDown' };\n if (event.key !== keys.dec && event.key !== keys.inc) return;\n event.preventDefault();\n this.resize([...this.sizes()], index, event.key === keys.inc ? 2 : -2);\n this.resizeEnd.emit({ sizes: this.sizes() });\n }\n\n private resize(initial: number[], index: number, delta: number): void {\n const pair = initial[index] + initial[index + 1];\n const next = Math.min(Math.max(initial[index] + delta, this.min(index)), pair - this.min(index + 1));\n const sizes = [...initial];\n sizes[index] = next;\n sizes[index + 1] = pair - next;\n this.overrides.set(sizes);\n }\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-argument, @typescript-eslint/explicit-module-boundary-types */\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n booleanAttribute,\n computed,\n contentChildren,\n inject,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { SmzFilterService } from '../core/filter.service';\nimport { SmzObjectUtils } from '../core/object-utils';\nimport { SmzTemplateDirective, smzFindTemplate } from '../core/template.directive';\nimport { SmzPaginatorComponent } from '../paginator/paginator.component';\nimport { SmzUiTreeNode } from '../types/tree-node';\n\n/** Linha achatada exposta aos templates (`let-rowNode`). */\nexport interface SmzTreeTableRowNode<T = any> {\n node: SmzUiTreeNode<T>;\n parent: SmzUiTreeNode<T> | null;\n level: number;\n}\n\nexport interface SmzTreeTableNodeEvent {\n node: SmzUiTreeNode;\n originalEvent?: Event;\n}\n\nexport type SmzTreeTableSelectionMode = 'single' | 'multiple' | 'checkbox';\n\nconst ROW_BASE = 'border-b border-ui-line transition-colors duration-ui';\n\n/**\n * Tabela em arvore. Substitui o `p-treeTable` do PrimeNG.\n * Os templates `colgroup`, `header`, `body`, `caption`, `footer`, `emptymessage` e `summary` usam `smzTemplate`;\n * o `body` recebe `let-rowNode let-rowData=\"rowData\" let-columns=\"columns\"`.\n *\n * <ui-tree-table [value]=\"nodes\" [columns]=\"cols\" selectionMode=\"checkbox\" [(selection)]=\"sel\">\n * <ng-template smzTemplate=\"header\" let-columns><tr><th *ngFor=\"let c of columns\">{{ c.header }}</th></tr></ng-template>\n * <ng-template smzTemplate=\"body\" let-rowNode let-rowData=\"rowData\" let-columns=\"columns\">\n * <tr [smzTtRow]=\"rowNode\"><td><ui-tree-table-toggler [rowNode]=\"rowNode\" />{{ rowData.name }}</td></tr>\n * </ng-template>\n * </ui-tree-table>\n */\n@Component({\n selector: 'ui-tree-table',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, SmzPaginatorComponent],\n host: { class: 'block overflow-hidden rounded-control border border-ui-line bg-ui-surface-1 font-ui text-ui-md text-ui-fg' },\n template: `\n @if (captionTemplate(); as tpl) {\n <div class=\"border-b border-ui-line px-4 py-3\"><ng-container [ngTemplateOutlet]=\"tpl\" /></div>\n }\n <div class=\"relative overflow-auto\" [style.max-height]=\"scrollable() ? scrollHeight() : null\">\n <table class=\"w-full border-separate border-spacing-0 text-left [&_td]:border-b [&_td]:border-ui-line [&_td]:px-4 [&_td]:py-3 [&_th]:sticky [&_th]:top-0 [&_th]:border-b [&_th]:border-ui-line [&_th]:bg-ui-surface-1 [&_th]:px-4 [&_th]:py-3 [&_th]:font-semibold\" [class]=\"(colgroupTemplate() ? 'table-fixed ' : '') + (tableStyleClass() ?? '')\">\n @if (colgroupTemplate(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"{ $implicit: columns() }\" />\n }\n <thead>\n @if (headerTemplate(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"{ $implicit: columns() }\" />\n }\n </thead>\n <tbody>\n @for (row of pageRows(); track row.node.key ?? row.node) {\n <ng-container [ngTemplateOutlet]=\"bodyTemplate() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: row, rowNode: row, node: row.node, rowData: row.node.data, columns: columns() }\" />\n } @empty {\n @if (!loading()) {\n <tr>\n <td [attr.colspan]=\"columns().length || 1\" class=\"px-4 py-6 text-center text-ui-fg-muted\">\n @if (emptyTemplate(); as tpl) { <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"{ $implicit: columns() }\" /> } @else { {{ emptyMessage() }} }\n </td>\n </tr>\n }\n }\n </tbody>\n @if (footerTemplate(); as tpl) {\n <tfoot><ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"{ $implicit: columns() }\" /></tfoot>\n }\n </table>\n @if (loading()) {\n <div class=\"absolute inset-0 flex items-center justify-center bg-ui-surface-1/60 text-ui-primary\" role=\"status\">\n <svg viewBox=\"0 0 50 50\" class=\"h-8 w-8 animate-spin\" fill=\"none\" aria-hidden=\"true\"><circle cx=\"25\" cy=\"25\" r=\"20\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-dasharray=\"90 150\" /></svg>\n </div>\n }\n </div>\n @if (paginator()) {\n <ui-paginator class=\"border-t border-ui-line\" [first]=\"first()\" [rows]=\"rows()\" [totalRecords]=\"rootCount()\" [rowsPerPageOptions]=\"rowsPerPageOptions()\" [showCurrentPageReport]=\"showCurrentPageReport()\" [currentPageReportTemplate]=\"currentPageReportTemplate()\" (firstChange)=\"first.set($event)\" (rowsChange)=\"rows.set($event)\" (pageChanged)=\"page.emit($event)\" />\n }\n @if (summaryTemplate(); as tpl) {\n <div class=\"border-t border-ui-line px-4 py-3\"><ng-container [ngTemplateOutlet]=\"tpl\" /></div>\n }\n `,\n})\nexport class SmzTreeTableComponent {\n public readonly value = input<SmzUiTreeNode[] | null | undefined>([]);\n public readonly columns = input<any[]>([]);\n public readonly selectionMode = input<SmzTreeTableSelectionMode | string | null | undefined>(null);\n public readonly selection = model<any>(null);\n public readonly propagateSelectionUp = input(true, { transform: booleanAttribute });\n public readonly propagateSelectionDown = input(true, { transform: booleanAttribute });\n public readonly loading = input(false, { transform: booleanAttribute });\n public readonly scrollable = input(false, { transform: booleanAttribute });\n public readonly scrollHeight = input<string | null | undefined>(null);\n public readonly emptyMessage = input<string | null | undefined>('');\n public readonly tableStyleClass = input<string | null | undefined>('');\n public readonly paginator = input(false, { transform: booleanAttribute });\n public readonly rows = model(10);\n public readonly first = model(0);\n public readonly rowsPerPageOptions = input<number[] | null | undefined>(null);\n public readonly sortField = model<string | null>(null);\n public readonly sortOrder = model<1 | -1>(1);\n /** Destaca a linha sob o cursor (padrao: ligado). */\n public readonly rowHover = input(true, { transform: booleanAttribute });\n public readonly showCurrentPageReport = input(false, { transform: booleanAttribute });\n public readonly currentPageReportTemplate = input<string>('Mostrando {first} a {last} de {totalRecords}');\n /** Campos (de `node.data`) consultados pelo filtro global. */\n public readonly globalFilterFields = input<string[] | null | undefined>(null);\n /** `lenient`: um no que casa mantem toda a sua subarvore; `strict`: so os nos que casam (e seus ancestrais). */\n public readonly filterMode = input<'lenient' | 'strict'>('lenient');\n\n public readonly nodeSelect = output<SmzTreeTableNodeEvent>();\n public readonly nodeUnselect = output<SmzTreeTableNodeEvent>();\n public readonly nodeExpand = output<SmzTreeTableNodeEvent>();\n public readonly nodeCollapse = output<SmzTreeTableNodeEvent>();\n public readonly sorted = output<{ field: string; order: 1 | -1 }>();\n public readonly page = output<unknown>();\n\n private readonly templates = contentChildren(SmzTemplateDirective);\n protected readonly headerTemplate = computed(() => smzFindTemplate(this.templates(), 'header'));\n /** `<colgroup>` com as larguras das colunas (como no `p-treeTable`); quando existe, a tabela usa `table-layout: fixed`. */\n protected readonly colgroupTemplate = computed(() => smzFindTemplate(this.templates(), 'colgroup'));\n protected readonly bodyTemplate = computed(() => smzFindTemplate(this.templates(), 'body'));\n protected readonly captionTemplate = computed(() => smzFindTemplate(this.templates(), 'caption'));\n protected readonly footerTemplate = computed(() => smzFindTemplate(this.templates(), 'footer'));\n protected readonly emptyTemplate = computed(() => smzFindTemplate(this.templates(), 'emptymessage'));\n protected readonly summaryTemplate = computed(() => smzFindTemplate(this.templates(), 'summary'));\n\n /** Os nos sao mutaveis (`expanded`, `partialSelected`); este contador forca o recalculo das linhas. */\n private readonly version = signal(0);\n private readonly filterService = inject(SmzFilterService);\n private readonly globalFilter = signal<{ value: string; matchMode: string } | null>(null);\n private readonly columnFilters = signal<Record<string, { value: any; matchMode: string }>>({});\n\n /** Nos raiz que passam nos filtros (global e por coluna), ou `null` quando nao ha filtro ativo. */\n public get filteredNodes(): SmzUiTreeNode[] | null {\n return this.visibility()?.roots ?? null;\n }\n\n /** Visibilidade calculada dos filtros: quais nos aparecem e quais ancestrais expandir. */\n private readonly visibility = computed<{ roots: SmzUiTreeNode[]; visible: Set<SmzUiTreeNode>; expand: Set<SmzUiTreeNode> } | null>(() => {\n this.version();\n const global = this.globalFilter();\n const columns = this.columnFilters();\n const active = Object.entries(columns).filter(([, filter]) => filter.value !== null && filter.value !== undefined && filter.value !== '');\n if (!global?.value && active.length === 0) return null;\n\n const matches = (node: SmzUiTreeNode): boolean => {\n for (const [field, filter] of active) {\n const test = this.filterService.filters[filter.matchMode] ?? this.filterService.filters['contains'];\n if (!test(SmzObjectUtils.resolveFieldData(node.data, field), filter.value)) return false;\n }\n if (global?.value) {\n const test = this.filterService.filters[global.matchMode] ?? this.filterService.filters['contains'];\n const fields = this.globalFilterFields() ?? Object.keys(node.data ?? {});\n if (!fields.some((field) => test(SmzObjectUtils.resolveFieldData(node.data, field), global.value))) return false;\n }\n return true;\n };\n\n const visible = new Set<SmzUiTreeNode>();\n const expand = new Set<SmzUiTreeNode>();\n const lenient = this.filterMode() === 'lenient';\n const mark = (node: SmzUiTreeNode, forced: boolean): boolean => {\n const self = matches(node);\n let anyChild = false;\n for (const child of node.children ?? []) {\n if (mark(child, forced || (lenient && self))) anyChild = true;\n }\n const show = self || anyChild || forced;\n if (show) visible.add(node);\n if (anyChild && !self) expand.add(node);\n return self || anyChild;\n };\n const roots = (this.value() ?? []).filter((node) => mark(node, false));\n return { roots, visible, expand };\n });\n\n protected readonly rootCount = computed(() => this.visibility()?.roots.length ?? (this.value() ?? []).length);\n\n protected readonly flatRows = computed<SmzTreeTableRowNode[]>(() => {\n this.version();\n const field = this.sortField();\n const order = this.sortOrder();\n const filter = this.visibility();\n const out: SmzTreeTableRowNode[] = [];\n const sort = (nodes: SmzUiTreeNode[]): SmzUiTreeNode[] =>\n field ? [...nodes].sort((a, b) => order * compareValues(SmzObjectUtils.resolveFieldData(a.data, field), SmzObjectUtils.resolveFieldData(b.data, field))) : nodes;\n const walk = (nodes: SmzUiTreeNode[], parent: SmzUiTreeNode | null, level: number): void => {\n for (const node of sort(nodes)) {\n if (filter && !filter.visible.has(node)) continue;\n out.push({ node, parent, level });\n if ((node.expanded || filter?.expand.has(node)) && node.children?.length) walk(node.children, node, level + 1);\n }\n };\n walk(this.value() ?? [], null, 0);\n return out;\n });\n\n /** Linhas visiveis; com paginador, a pagina atual e calculada sobre os nos raiz. */\n protected readonly pageRows = computed<SmzTreeTableRowNode[]>(() => {\n const all = this.flatRows();\n if (!this.paginator()) return all;\n const roots = all.filter((row) => row.level === 0);\n const pageRoots = new Set(roots.slice(this.first(), this.first() + this.rows()).map((row) => row.node));\n let include = false;\n return all.filter((row) => {\n if (row.level === 0) include = pageRoots.has(row.node);\n return include;\n });\n });\n\n /** Filtro global (equivale a `filterGlobal` do `p-treeTable`). */\n public filterGlobal(value: string | null, matchMode: string = 'contains'): void {\n this.globalFilter.set(value ? { value, matchMode } : null);\n this.first.set(0);\n }\n\n /** Filtro de uma coluna (campo de `node.data`). Valor vazio remove o filtro. */\n public filter(value: any, field: string, matchMode: string = 'contains'): void {\n this.columnFilters.update((current) => ({ ...current, [field]: { value, matchMode } }));\n this.first.set(0);\n }\n\n /** Limpa filtros, ordenacao e volta para a primeira pagina (equivale a `clear()` do `p-treeTable`). */\n public clear(): void {\n this.globalFilter.set(null);\n this.columnFilters.set({});\n this.sortField.set(null);\n this.sortOrder.set(1);\n this.first.set(0);\n }\n\n public refresh(): void {\n this.version.update((v) => v + 1);\n }\n\n public toggleNode(rowNode: SmzTreeTableRowNode, event?: Event): void {\n const node = rowNode.node;\n node.expanded = !node.expanded;\n (node.expanded ? this.nodeExpand : this.nodeCollapse).emit({ node, originalEvent: event });\n this.refresh();\n }\n\n public sortBy(field: string): void {\n const order: 1 | -1 = this.sortField() === field && this.sortOrder() === 1 ? -1 : 1;\n this.sortField.set(field);\n this.sortOrder.set(order);\n this.sorted.emit({ field, order });\n }\n\n public isSelected(node: SmzUiTreeNode): boolean {\n const selection = this.selection();\n return Array.isArray(selection) ? selection.includes(node) : selection === node;\n }\n\n public selectionState(node: SmzUiTreeNode): 'checked' | 'partial' | 'unchecked' {\n if (this.isSelected(node)) return 'checked';\n return node.partialSelected ? 'partial' : 'unchecked';\n }\n\n public onRowClick(rowNode: SmzTreeTableRowNode, event: Event): void {\n const mode = this.selectionMode();\n const node = rowNode.node;\n if (!mode || node.selectable === false) return;\n if (mode === 'checkbox') return; // selecao so pelo checkbox\n const selected = this.isSelected(node);\n if (mode === 'single') {\n this.selection.set(selected ? null : node);\n }\n else {\n const current = Array.isArray(this.selection()) ? (this.selection() as SmzUiTreeNode[]) : [];\n this.selection.set(selected ? current.filter((entry) => entry !== node) : [...current, node]);\n }\n (selected ? this.nodeUnselect : this.nodeSelect).emit({ node, originalEvent: event });\n }\n\n public toggleCheckbox(rowNode: SmzTreeTableRowNode, event?: Event): void {\n const node = rowNode.node;\n const selected = this.isSelected(node);\n const set = new Set<SmzUiTreeNode>(Array.isArray(this.selection()) ? (this.selection() as SmzUiTreeNode[]) : []);\n\n const apply = (target: SmzUiTreeNode, value: boolean): void => {\n if (value) set.add(target);\n else set.delete(target);\n target.partialSelected = false;\n if (this.propagateSelectionDown()) target.children?.forEach((child) => apply(child, value));\n };\n apply(node, !selected);\n\n if (this.propagateSelectionUp()) {\n for (let parent = rowNode.parent; parent; parent = this.findParent(parent)) {\n const children = parent.children ?? [];\n const all = children.every((child) => set.has(child));\n const some = children.some((child) => set.has(child) || child.partialSelected);\n if (all) set.add(parent);\n else set.delete(parent);\n parent.partialSelected = !all && some;\n }\n }\n\n this.selection.set([...set]);\n (selected ? this.nodeUnselect : this.nodeSelect).emit({ node, originalEvent: event });\n this.refresh();\n }\n\n /** Marca/desmarca todos os nos (checkbox do cabecalho). */\n public toggleAll(checked: boolean): void {\n const set = new Set<SmzUiTreeNode>();\n const walk = (nodes: SmzUiTreeNode[]): void => {\n for (const node of nodes) {\n node.partialSelected = false;\n if (checked && node.selectable !== false) set.add(node);\n walk(node.children ?? []);\n }\n };\n walk(this.value() ?? []);\n this.selection.set([...set]);\n this.refresh();\n }\n\n public allSelected(): boolean {\n const total = this.countNodes(this.value() ?? []);\n const selection = this.selection();\n return total > 0 && Array.isArray(selection) && selection.length >= total;\n }\n\n private countNodes(nodes: SmzUiTreeNode[]): number {\n return nodes.reduce((sum, node) => sum + 1 + this.countNodes(node.children ?? []), 0);\n }\n\n private findParent(node: SmzUiTreeNode): SmzUiTreeNode | null {\n const search = (nodes: SmzUiTreeNode[], parent: SmzUiTreeNode | null): SmzUiTreeNode | null | undefined => {\n for (const candidate of nodes) {\n if (candidate === node) return parent;\n const found = search(candidate.children ?? [], candidate);\n if (found !== undefined) return found;\n }\n return undefined;\n };\n return search(this.value() ?? [], null) ?? null;\n }\n}\n\nfunction compareValues(a: any, b: any): number {\n if (a == null && b == null) return 0;\n if (a == null) return -1;\n if (b == null) return 1;\n if (typeof a === 'string' && typeof b === 'string') return a.localeCompare(b);\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\n/** Linha do corpo: `<tr [smzTtRow]=\"rowNode\">`. Cuida de estilo, aria e selecao por clique. */\n@Directive({\n selector: 'tr[smzTtRow]',\n host: {\n '[class]': 'classes()',\n '[attr.aria-level]': 'rowNode().level + 1',\n '[attr.aria-expanded]': 'rowNode().node.children?.length ? !!rowNode().node.expanded : null',\n '[attr.aria-selected]': 'table.selectionMode() ? table.isSelected(rowNode().node) : null',\n '(click)': 'table.onRowClick(rowNode(), $event)',\n },\n})\nexport class SmzTreeTableRowDirective {\n protected readonly table = inject(SmzTreeTableComponent);\n public readonly rowNode = input.required<SmzTreeTableRowNode>({ alias: 'smzTtRow' });\n\n protected readonly classes = computed(() => {\n const mode = this.table.selectionMode();\n const selected = this.table.isSelected(this.rowNode().node);\n const hover = this.table.rowHover() ? 'hover:bg-ui-surface-3' : '';\n const interactive = mode && mode !== 'checkbox' ? `cursor-pointer ${hover}` : hover;\n return `${ROW_BASE} ${interactive} ${selected && mode !== 'checkbox' ? 'bg-ui-primary/10' : ''}`;\n });\n}\n\n/** Seta de expandir/recolher com recuo por nivel: `<ui-tree-table-toggler [rowNode]=\"rowNode\" />`. */\n@Component({\n selector: 'ui-tree-table-toggler',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'inline-flex items-center align-middle', '[style.padding-left.rem]': 'rowNode().level * 1.5' },\n template: `\n <button type=\"button\" class=\"inline-flex h-6 w-6 items-center justify-center rounded-full text-ui-fg-muted transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus\" [class.invisible]=\"!hasChildren()\" [attr.aria-label]=\"rowNode().node.expanded ? 'Recolher' : 'Expandir'\" (click)=\"$event.stopPropagation(); table.toggleNode(rowNode(), $event)\">\n <svg viewBox=\"0 0 16 16\" class=\"h-4 w-4 transition-transform duration-ui\" [class.rotate-90]=\"rowNode().node.expanded\" fill=\"none\" aria-hidden=\"true\"><path d=\"M6 4l4 4-4 4\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg>\n </button>\n `,\n})\nexport class SmzTreeTableTogglerComponent {\n protected readonly table = inject(SmzTreeTableComponent);\n public readonly rowNode = input.required<SmzTreeTableRowNode>();\n protected hasChildren(): boolean {\n const node = this.rowNode().node;\n return !node.leaf && (node.children?.length ?? 0) > 0;\n }\n}\n\n/** Checkbox de selecao da linha (modo `checkbox`): `<ui-tree-table-checkbox [value]=\"rowNode\" />`. */\n@Component({\n selector: 'ui-tree-table-checkbox',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'inline-flex align-middle' },\n template: `\n <button type=\"button\" role=\"checkbox\" [attr.aria-checked]=\"state() === 'partial' ? 'mixed' : state() === 'checked'\" class=\"inline-flex h-5 w-5 items-center justify-center rounded border transition-colors duration-ui focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus\" [class]=\"state() === 'unchecked' ? 'border-ui-line-strong bg-ui-surface-1' : 'border-ui-primary bg-ui-primary text-ui-on-primary'\" (click)=\"$event.stopPropagation(); table.toggleCheckbox(value(), $event)\">\n @if (state() === 'checked') { <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" aria-hidden=\"true\"><path d=\"M3.5 8.5l3 3 6-6.5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg> }\n @else if (state() === 'partial') { <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" aria-hidden=\"true\"><path d=\"M4 8h8\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" /></svg> }\n </button>\n `,\n})\nexport class SmzTreeTableCheckboxComponent {\n protected readonly table = inject(SmzTreeTableComponent);\n public readonly value = input.required<SmzTreeTableRowNode>();\n protected state(): 'checked' | 'partial' | 'unchecked' {\n return this.table.selectionState(this.value().node);\n }\n}\n\n/** Checkbox do cabecalho: seleciona/limpa todos os nos. */\n@Component({\n selector: 'ui-tree-table-header-checkbox',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'inline-flex align-middle' },\n template: `\n <button type=\"button\" role=\"checkbox\" [attr.aria-checked]=\"table.allSelected()\" class=\"inline-flex h-5 w-5 items-center justify-center rounded border transition-colors duration-ui focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus\" [class]=\"table.allSelected() ? 'border-ui-primary bg-ui-primary text-ui-on-primary' : 'border-ui-line-strong bg-ui-surface-1'\" (click)=\"table.toggleAll(!table.allSelected())\">\n @if (table.allSelected()) { <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" aria-hidden=\"true\"><path d=\"M3.5 8.5l3 3 6-6.5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg> }\n </button>\n `,\n})\nexport class SmzTreeTableHeaderCheckboxComponent {\n protected readonly table = inject(SmzTreeTableComponent);\n}\n\n/** Cabecalho ordenavel: `<th [smzTtSortableColumn]=\"'nome'\">Nome <ui-tree-table-sort-icon field=\"nome\" /></th>`. */\n@Directive({\n selector: 'th[smzTtSortableColumn]',\n host: {\n '[class]': 'classes()',\n '[class.p-highlight]': 'sorted()',\n '(click)': 'table.sortBy(field())',\n '[attr.aria-sort]': 'ariaSort()',\n },\n})\nexport class SmzTreeTableSortableColumnDirective {\n protected readonly table = inject(SmzTreeTableComponent);\n public readonly field = input.required<string>({ alias: 'smzTtSortableColumn' });\n\n /** Coluna ordenada agora (inclui o `sortField`/`sortOrder` iniciais da tabela, sem precisar de clique). */\n protected readonly sorted = computed(() => this.table.sortField() === this.field());\n protected readonly classes = computed(() => 'cursor-pointer select-none ' + (this.sorted() ? 'bg-ui-primary/10 text-ui-primary' : ''));\n protected readonly ariaSort = computed(() => (this.sorted() ? (this.table.sortOrder() === 1 ? 'ascending' : 'descending') : 'none'));\n}\n\n@Component({\n selector: 'ui-tree-table-sort-icon',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'ml-1 inline-flex align-middle text-ui-fg-muted', '[attr.data-sort-dir]': 'dir()' },\n template: `\n <svg viewBox=\"0 0 16 16\" class=\"h-3.5 w-3.5\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M5 6l3-3 3 3\" [attr.stroke]=\"dir() === 1 ? 'rgb(var(--smz-color-primary))' : 'currentColor'\" [attr.stroke-width]=\"dir() === 1 ? 2.25 : 1.5\" [attr.opacity]=\"dir() === -1 ? 0.3 : 1\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M5 10l3 3 3-3\" [attr.stroke]=\"dir() === -1 ? 'rgb(var(--smz-color-primary))' : 'currentColor'\" [attr.stroke-width]=\"dir() === -1 ? 2.25 : 1.5\" [attr.opacity]=\"dir() === 1 ? 0.3 : 1\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n `,\n})\nexport class SmzTreeTableSortIconComponent {\n protected readonly table = inject(SmzTreeTableComponent);\n public readonly field = input.required<string>();\n protected dir(): 0 | 1 | -1 {\n return this.table.sortField() === this.field() ? this.table.sortOrder() : 0;\n }\n}\n\nexport const SMZ_TREE_TABLE = [\n SmzTreeTableComponent,\n SmzTreeTableRowDirective,\n SmzTreeTableTogglerComponent,\n SmzTreeTableCheckboxComponent,\n SmzTreeTableHeaderCheckboxComponent,\n SmzTreeTableSortableColumnDirective,\n SmzTreeTableSortIconComponent,\n SmzTemplateDirective,\n] as const;\n","/* eslint-disable max-len -- classes Tailwind nos templates */\nimport { ChangeDetectionStrategy, Component, Injectable, inject } from '@angular/core';\nimport { SmzButtonComponent } from '../button/button.component';\nimport { SmzDialogConfig, SmzDialogRef } from '../dialog/dialog-ref';\nimport { SmzDialogService } from '../dialog/dialog.service';\n\n/** Opcoes de `SmzConfirmationService.confirm` (mesmos nomes do `Confirmation` do PrimeNG). */\nexport interface SmzConfirmation {\n message?: string;\n header?: string;\n /** Classe do icone exibido ao lado da mensagem (ex.: `fa-solid fa-triangle-exclamation`). */\n icon?: string;\n acceptLabel?: string;\n rejectLabel?: string;\n /** Esconde o botao de aceitar/rejeitar. */\n acceptVisible?: boolean;\n rejectVisible?: boolean;\n /** Severidade do botao de aceitar (ex.: `danger` destrutivo, `success` aprovar). */\n acceptSeverity?: 'primary' | 'secondary' | 'danger' | 'success' | 'warning';\n accept?: () => void;\n reject?: () => void;\n width?: string;\n closeOnEscape?: boolean;\n}\n\n@Component({\n selector: 'ui-confirm-content',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SmzButtonComponent],\n template: `\n <div class=\"flex items-start gap-3 font-ui text-ui-md text-ui-fg\">\n @if (options.icon) {\n <i [class]=\"options.icon + ' mt-0.5 text-ui-xl text-ui-warning'\" aria-hidden=\"true\"></i>\n }\n <p class=\"m-0 flex-1\">{{ options.message }}</p>\n </div>\n <div class=\"mt-5 flex justify-end gap-2\">\n @if (options.rejectVisible !== false) {\n <button smzButton type=\"button\" severity=\"secondary\" variant=\"outlined\" [label]=\"options.rejectLabel ?? 'Não'\" (click)=\"close(false)\"></button>\n }\n @if (options.acceptVisible !== false) {\n <button smzButton type=\"button\" [severity]=\"options.acceptSeverity ?? 'primary'\" [label]=\"options.acceptLabel ?? 'Sim'\" (click)=\"close(true)\"></button>\n }\n </div>\n `,\n})\nexport class SmzConfirmContentComponent {\n protected readonly options: SmzConfirmation = inject(SmzDialogConfig).data as SmzConfirmation;\n private readonly ref = inject(SmzDialogRef<boolean>);\n\n protected close(accepted: boolean): void {\n this.ref.close(accepted);\n }\n}\n\n/**\n * Confirmacao modal. Substitui o `ConfirmationService` + `<p-confirmdialog>` do PrimeNG\n * (nao ha componente a declarar no template).\n *\n * confirm.confirm({ message: 'Excluir?', header: 'Confirmacao', icon: 'fa-solid fa-triangle-exclamation', accept: () => ..., reject: () => ... });\n */\n@Injectable({ providedIn: 'root' })\nexport class SmzConfirmationService {\n private readonly dialogs = inject(SmzDialogService);\n\n public confirm(confirmation: SmzConfirmation): SmzDialogRef<boolean> {\n const ref = this.dialogs.open<boolean>(SmzConfirmContentComponent, {\n header: confirmation.header ?? 'Confirmação',\n width: confirmation.width ?? '28rem',\n closeOnEscape: confirmation.closeOnEscape ?? true,\n data: confirmation,\n });\n ref.onClose.subscribe((accepted) => {\n if (accepted === true) confirmation.accept?.();\n else confirmation.reject?.();\n });\n return ref;\n }\n}\n","/* eslint-disable max-len -- classes Tailwind nos templates */\nimport { ChangeDetectionStrategy, Component, ElementRef, booleanAttribute, input, output, signal, viewChild } from '@angular/core';\n\nexport interface SmzFileSelectEvent {\n files: File[];\n originalEvent?: Event;\n}\n\nexport interface SmzFileErrorEvent {\n file: File;\n reason: 'size' | 'type';\n}\n\n/**\n * Selecao de arquivos com area de arrastar e soltar e lista de escolhidos.\n * Substitui o `p-fileupload` (modo `basic`/`advanced` sem envio automatico): o envio ao servidor\n * fica a cargo do app (ex.: `HttpClient` no handler de `(selected)`).\n *\n * <ui-file-upload accept=\"image/*\" [multiple]=\"true\" [maxFileSize]=\"1000000\" (selected)=\"enviar($event.files)\" />\n */\n@Component({\n selector: 'ui-file-upload',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'block font-ui text-ui-md text-ui-fg' },\n template: `\n <input #picker type=\"file\" class=\"sr-only\" [accept]=\"accept() ?? ''\" [multiple]=\"multiple()\" [disabled]=\"disabled()\" (change)=\"onPick($event)\" />\n <div\n class=\"flex flex-col items-center justify-center gap-2 rounded-card border-2 border-dashed p-6 text-center transition-colors duration-ui\"\n [class]=\"dragging() ? 'border-ui-primary bg-ui-primary/10' : 'border-ui-line-strong bg-ui-surface-1'\"\n [class.opacity-50]=\"disabled()\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"dragging.set(false)\"\n (drop)=\"onDrop($event)\"\n >\n <button type=\"button\" class=\"rounded-control border border-ui-line-strong px-control-x py-2 font-medium transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:pointer-events-none\" [disabled]=\"disabled()\" (click)=\"picker.click()\">{{ chooseLabel() }}</button>\n <span class=\"text-ui-sm text-ui-fg-muted\">{{ dropLabel() }}</span>\n </div>\n @if (files().length > 0) {\n <ul class=\"m-0 mt-3 flex list-none flex-col gap-2 p-0\">\n @for (file of files(); track file) {\n <li class=\"flex items-center justify-between gap-2 rounded-control border border-ui-line px-3 py-2\">\n <span class=\"min-w-0 flex-1 truncate\">{{ file.name }} <span class=\"text-ui-sm text-ui-fg-muted\">({{ size(file) }})</span></span>\n <button type=\"button\" class=\"inline-flex h-6 w-6 items-center justify-center rounded-full text-ui-fg-muted hover:bg-ui-surface-3\" aria-label=\"Remover\" (click)=\"remove(file)\">\n <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" aria-hidden=\"true\"><path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" /></svg>\n </button>\n </li>\n }\n </ul>\n }\n `,\n})\nexport class SmzFileUploadComponent {\n public readonly accept = input<string | null | undefined>('');\n public readonly multiple = input(false, { transform: booleanAttribute });\n public readonly disabled = input(false, { transform: booleanAttribute });\n /** Tamanho maximo por arquivo, em bytes. */\n public readonly maxFileSize = input<number | null | undefined>(null);\n public readonly chooseLabel = input('Escolher arquivo');\n public readonly dropLabel = input('ou arraste aqui');\n\n public readonly selected = output<SmzFileSelectEvent>();\n public readonly removed = output<{ file: File }>();\n public readonly rejected = output<SmzFileErrorEvent>();\n\n public readonly files = signal<File[]>([]);\n protected readonly dragging = signal(false);\n private readonly fileInput = viewChild.required<ElementRef<HTMLInputElement>>('picker');\n\n /** Limpa a lista (equivale a `clear()` do `p-fileupload`). */\n public clear(): void {\n this.files.set([]);\n this.fileInput().nativeElement.value = '';\n }\n\n protected onPick(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.add(Array.from(target.files ?? []), event);\n target.value = '';\n }\n\n protected onDragOver(event: DragEvent): void {\n if (this.disabled()) return;\n event.preventDefault();\n this.dragging.set(true);\n }\n\n protected onDrop(event: DragEvent): void {\n event.preventDefault();\n this.dragging.set(false);\n if (this.disabled()) return;\n this.add(Array.from(event.dataTransfer?.files ?? []), event);\n }\n\n protected remove(file: File): void {\n this.files.update((list) => list.filter((entry) => entry !== file));\n this.removed.emit({ file });\n }\n\n protected size(file: File): string {\n return file.size < 1024 * 1024 ? `${Math.max(1, Math.round(file.size / 1024))} KB` : `${(file.size / 1024 / 1024).toFixed(1)} MB`;\n }\n\n private add(incoming: File[], event: Event): void {\n const accepted: File[] = [];\n for (const file of incoming) {\n if (!this.matchesAccept(file)) this.rejected.emit({ file, reason: 'type' });\n else if (this.maxFileSize() != null && file.size > (this.maxFileSize() as number)) this.rejected.emit({ file, reason: 'size' });\n else accepted.push(file);\n }\n if (accepted.length === 0) return;\n const next = this.multiple() ? [...this.files(), ...accepted] : [accepted[0]];\n this.files.set(next);\n this.selected.emit({ files: next, originalEvent: event });\n }\n\n private matchesAccept(file: File): boolean {\n const accept = (this.accept() ?? '').trim();\n if (!accept) return true;\n return accept.split(',').map((rule) => rule.trim().toLowerCase()).some((rule) => {\n if (rule.startsWith('.')) return file.name.toLowerCase().endsWith(rule);\n if (rule.endsWith('/*')) return file.type.toLowerCase().startsWith(rule.slice(0, -1));\n return file.type.toLowerCase() === rule;\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["POSITIONS","SEVERITY_TONE","normalize"],"mappings":"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"}