{"version":3,"file":"seniorsistemas-angular-components-input-group.mjs","sources":["../../projects/angular-components/input-group/src/lib/input-group/input-group.component.ts","../../projects/angular-components/input-group/src/lib/input-group/input-group.component.html","../../projects/angular-components/input-group/src/lib/input-group/input-group.module.ts","../../projects/angular-components/input-group/src/seniorsistemas-angular-components-input-group.ts"],"sourcesContent":["import { Component, input } from '@angular/core';\n\nimport { InputGroupAddon } from './types/input-group-addon';\nimport { NgTemplateOutlet } from '@angular/common';\n\n/**\n * @description Componente de layout que envolve um `<input sInputText>` (projetado via\n * `ng-content`) e adiciona botões internos à esquerda e/ou à direita do campo.\n *\n * O `<input>` projetado continua totalmente sob controle do consumidor — combine\n * livremente com `[formControl]`/`[(ngModel)]`, `sInputMask`, `pKeyFilter`, `sTooltip`, etc.\n *\n * @example\n * ```html\n * <s-input-group [leftAddon]=\"{ icon: 'pi pi-search', callback: buscar }\">\n *     <input sInputText [formControl]=\"nome\" placeholder=\"Buscar...\" />\n * </s-input-group>\n * ```\n *\n * @category Structure\n */\n@Component({\n    selector: 's-input-group',\n    standalone: true,\n    templateUrl: './input-group.component.html',\n    host: {\n        class: 'block w-full',\n    },\n    imports: [NgTemplateOutlet],\n})\nexport class InputGroupComponent {\n    /** @description Configuração do botão exibido à esquerda do input. */\n    leftAddon = input<InputGroupAddon>();\n\n    /** @description Configuração do botão exibido à direita do input. */\n    rightAddon = input<InputGroupAddon>();\n\n    protected isAddonDisabled(addon: InputGroupAddon): boolean {\n        return typeof addon.disabled === 'function' ? addon.disabled() : !!addon.disabled;\n    }\n}\n\n","@let inputCornerClass =\n    (leftAddon() ? '[&_input]:rounded-l-[0px] ' : '') + (rightAddon() ? '[&_input]:rounded-r-[0px]' : '');\n\n<ng-template\n    #addonRender\n    let-addon\n    let-direction=\"direction\"\n>\n    @let addonButtonClass =\n        'flex h-[35px] shrink-0 items-center justify-center gap-1 rounded-medium border border-grayscale-30 bg-grayscale-0 px-[10px] text-sm text-grayscale-90 transition-colors duration-200 ease-out hover:bg-grayscale-5 focus:outline focus:outline-2 focus:outline-offset-[-2px] focus:outline-[var(--s-focus-ring-color,#0090ff)] disabled:cursor-not-allowed disabled:border-grayscale-20 disabled:bg-grayscale-5 disabled:text-grayscale-30';\n\n    @let className =\n        addonButtonClass + ' ' + (direction === 'left' ? 'rounded-r-[0px] border-r-0' : 'rounded-l-[0px] border-l-0');\n    <button\n        type=\"button\"\n        [class]=\"className\"\n        [disabled]=\"isAddonDisabled(addon)\"\n        (click)=\"addon.callback?.()\"\n    >\n        @if (addon.icon) {\n            <i [class]=\"addon.icon\"></i>\n        }\n        @if (addon.label) {\n            <span>{{ addon.label }} </span>\n        }\n    </button>\n</ng-template>\n\n<div\n    [class]=\"inputCornerClass\"\n    class=\"relative flex w-full items-stretch rounded-medium has-[input:focus]:outline has-[input:focus]:outline-2 has-[input:focus]:outline-offset-[-2px] has-[input:focus]:outline-[var(--s-focus-ring-color,#0090ff)] [&:has(input:focus)_input]:!border-grayscale-30 [&:has(input:focus)_input]:shadow-none [&:has(input:focus)_input]:outline-none [&:has(button:focus)_input]:!border-grayscale-30 [&:has(input.ng-invalid.ng-dirty):not(:focus-within)_button]:border-criticality-red\"\n>\n    @if (leftAddon()) {\n        <ng-container\n            *ngTemplateOutlet=\"addonRender; context: { $implicit: leftAddon(), direction: 'left' }\"\n        ></ng-container>\n    }\n\n    <ng-content select=\"input[sInputText]\"></ng-content>\n\n    @if (rightAddon()) {\n        <ng-container\n            *ngTemplateOutlet=\"addonRender; context: { $implicit: rightAddon(), direction: 'right' }\"\n        ></ng-container>\n    }\n</div>\n\n","import { NgModule } from '@angular/core';\n\nimport { InputGroupComponent } from './input-group.component';\n\n/**\n * @deprecated Será removido na v20. Importe diretamente o standalone `InputGroupComponent` (de\n * `@seniorsistemas/angular-components/input-group`) no lugar deste módulo.\n *\n * Migração automática (também executada pelo `ng update` na v20):\n * `ng generate @seniorsistemas/angular-components:migrate-modules-to-standalone`\n */\n@NgModule({\n    imports: [InputGroupComponent],\n    exports: [InputGroupComponent],\n})\nexport class InputGroupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;AAKA;;;;;;;;;;;;;;;AAeG;MAUU,mBAAmB,CAAA;;IAE5B,SAAS,GAAG,KAAK,EAAmB,CAAC;;IAGrC,UAAU,GAAG,KAAK,EAAmB,CAAC;AAE5B,IAAA,eAAe,CAAC,KAAsB,EAAA;QAC5C,OAAO,OAAO,KAAK,CAAC,QAAQ,KAAK,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;KACrF;wGATQ,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9BhC,qnEA+CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDnBc,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAEjB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAT/B,SAAS;+BACI,eAAe,EAAA,UAAA,EACb,IAAI,EAEV,IAAA,EAAA;AACF,wBAAA,KAAK,EAAE,cAAc;qBACxB,EACQ,OAAA,EAAA,CAAC,gBAAgB,CAAC,EAAA,QAAA,EAAA,qnEAAA,EAAA,CAAA;;;AExB/B;;;;;;AAMG;MAKU,gBAAgB,CAAA;wGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;yGAAhB,gBAAgB,EAAA,OAAA,EAAA,CAHf,mBAAmB,CAAA,EAAA,OAAA,EAAA,CACnB,mBAAmB,CAAA,EAAA,CAAA,CAAA;yGAEpB,gBAAgB,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,mBAAmB,CAAC;oBAC9B,OAAO,EAAE,CAAC,mBAAmB,CAAC;AACjC,iBAAA,CAAA;;;ACdD;;AAEG;;;;"}