@govbr-ds/webcomponents 2.0.0-next.46 → 2.0.0-next.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/br-avatar.cjs.entry.js +1 -1
- package/dist/cjs/br-avatar.cjs.entry.js.map +1 -1
- package/dist/cjs/br-avatar.entry.cjs.js.map +1 -1
- package/dist/cjs/br-button.br-icon.entry.cjs.js.map +1 -1
- package/dist/cjs/br-button_2.cjs.entry.js +1 -1
- package/dist/cjs/br-button_2.cjs.entry.js.map +1 -1
- package/dist/cjs/br-switch.cjs.entry.js +28 -2
- package/dist/cjs/br-switch.cjs.entry.js.map +1 -1
- package/dist/cjs/br-switch.entry.cjs.js.map +1 -1
- package/dist/cjs/br-tag.cjs.entry.js +151 -13
- package/dist/cjs/br-tag.cjs.entry.js.map +1 -1
- package/dist/cjs/br-tag.entry.cjs.js.map +1 -1
- package/dist/cjs/br-textarea.cjs.entry.js +32 -5
- package/dist/cjs/br-textarea.cjs.entry.js.map +1 -1
- package/dist/cjs/br-textarea.entry.cjs.js.map +1 -1
- package/dist/cjs/br-tooltip.cjs.entry.js +1 -1
- package/dist/cjs/br-upload.cjs.entry.js +15 -23
- package/dist/cjs/br-upload.cjs.entry.js.map +1 -1
- package/dist/cjs/br-upload.entry.cjs.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/webcomponents.cjs.js +1 -1
- package/dist/collection/components/avatar/avatar.js +1 -1
- package/dist/collection/components/avatar/avatar.js.map +1 -1
- package/dist/collection/components/button/button.js +1 -1
- package/dist/collection/components/button/button.js.map +1 -1
- package/dist/collection/components/switch/switch.css +1 -1
- package/dist/collection/components/switch/switch.js +27 -1
- package/dist/collection/components/switch/switch.js.map +1 -1
- package/dist/collection/components/tag/tag.css +1 -1
- package/dist/collection/components/tag/tag.js +192 -14
- package/dist/collection/components/tag/tag.js.map +1 -1
- package/dist/collection/components/textarea/textarea.js +51 -5
- package/dist/collection/components/textarea/textarea.js.map +1 -1
- package/dist/collection/components/tooltip/tooltip.js +1 -1
- package/dist/collection/components/upload/upload.js +46 -30
- package/dist/collection/components/upload/upload.js.map +1 -1
- package/dist/components/br-avatar.js +3 -2
- package/dist/components/br-avatar.js.map +1 -1
- package/dist/components/br-breadcrumb.js +1 -1
- package/dist/components/br-button.js +4 -4
- package/dist/components/br-footer-social.js +1 -1
- package/dist/components/br-input.js +3 -3
- package/dist/components/br-message.js +1 -1
- package/dist/components/br-select.js +2 -2
- package/dist/components/br-step-item.js +1 -1
- package/dist/components/br-switch.js +35 -11
- package/dist/components/br-switch.js.map +1 -1
- package/dist/components/br-tag.js +166 -51
- package/dist/components/br-tag.js.map +1 -1
- package/dist/components/br-textarea.js +42 -15
- package/dist/components/br-textarea.js.map +1 -1
- package/dist/components/br-tooltip.js +15 -15
- package/dist/components/br-upload.js +56 -58
- package/dist/components/br-upload.js.map +1 -1
- package/dist/components/{p-DZhiQXGc.js → p-Bjt1OWm8.js} +3 -3
- package/dist/components/{p-ssSt5UuQ.js → p-Brhs7qAd.js} +6 -7
- package/dist/components/p-Brhs7qAd.js.map +1 -0
- package/dist/custom-elements.json +273 -9
- package/dist/esm/br-avatar.entry.js +1 -1
- package/dist/esm/br-avatar.entry.js.map +1 -1
- package/dist/esm/br-button.br-icon.entry.js.map +1 -1
- package/dist/esm/br-button_2.entry.js +1 -1
- package/dist/esm/br-button_2.entry.js.map +1 -1
- package/dist/esm/br-switch.entry.js +28 -2
- package/dist/esm/br-switch.entry.js.map +1 -1
- package/dist/esm/br-tag.entry.js +151 -13
- package/dist/esm/br-tag.entry.js.map +1 -1
- package/dist/esm/br-textarea.entry.js +32 -5
- package/dist/esm/br-textarea.entry.js.map +1 -1
- package/dist/esm/br-tooltip.entry.js +1 -1
- package/dist/esm/br-upload.entry.js +15 -23
- package/dist/esm/br-upload.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/webcomponents.js +1 -1
- package/dist/hydrate/index.js +239 -50
- package/dist/hydrate/index.mjs +239 -50
- package/dist/types/components/switch/switch.d.ts +8 -3
- package/dist/types/components/tag/tag.d.ts +45 -3
- package/dist/types/components/textarea/textarea.d.ts +18 -0
- package/dist/types/components/upload/upload.d.ts +14 -4
- package/dist/types/components.d.ts +40 -6
- package/dist/webcomponents/br-avatar.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-button.br-icon.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-switch.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-tag.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-textarea.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-upload.entry.esm.js.map +1 -1
- package/dist/webcomponents/{p-fa0aeb0f.entry.js → p-3f18e20a.entry.js} +5 -6
- package/dist/webcomponents/p-3f18e20a.entry.js.map +1 -0
- package/dist/webcomponents/{p-8b15dfc8.entry.js → p-6dba4bb1.entry.js} +10 -10
- package/dist/webcomponents/{p-df6e707a.entry.js → p-7251c80f.entry.js} +4 -3
- package/dist/webcomponents/p-7251c80f.entry.js.map +1 -0
- package/dist/webcomponents/{p-24f6adad.entry.js → p-73794ac8.entry.js} +42 -16
- package/dist/webcomponents/p-73794ac8.entry.js.map +1 -0
- package/dist/webcomponents/{p-abf81334.entry.js → p-82dec3b6.entry.js} +36 -12
- package/dist/webcomponents/p-82dec3b6.entry.js.map +1 -0
- package/dist/webcomponents/{p-a802ca08.entry.js → p-861b8ebf.entry.js} +55 -58
- package/dist/webcomponents/p-861b8ebf.entry.js.map +1 -0
- package/dist/webcomponents/{p-761f7798.entry.js → p-d3463d4a.entry.js} +161 -48
- package/dist/webcomponents/p-d3463d4a.entry.js.map +1 -0
- package/dist/webcomponents/webcomponents.esm.js +1 -1
- package/dist/webcomponents.html-custom-data.json +15 -3
- package/package.json +1 -1
- package/dist/components/p-ssSt5UuQ.js.map +0 -1
- package/dist/webcomponents/p-24f6adad.entry.js.map +0 -1
- package/dist/webcomponents/p-761f7798.entry.js.map +0 -1
- package/dist/webcomponents/p-a802ca08.entry.js.map +0 -1
- package/dist/webcomponents/p-abf81334.entry.js.map +0 -1
- package/dist/webcomponents/p-df6e707a.entry.js.map +0 -1
- package/dist/webcomponents/p-fa0aeb0f.entry.js.map +0 -1
- /package/dist/components/{p-DZhiQXGc.js.map → p-Bjt1OWm8.js.map} +0 -0
- /package/dist/webcomponents/{p-8b15dfc8.entry.js.map → p-6dba4bb1.entry.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["tagCss","DENSITY_SMALL","DENSITY_MEDIUM","DENSITY_LARGE","SHAPE_CIRCLE","SHAPE_ROUNDED","SHAPE_DEFAULT","Tag","constructor","hostRef","this","label","iconName","name","multiple","selected","customId","tagId","color","density","shape","status","interaction","interactionSelect","disabled","ariaLabel","ariaDescribedby","selectedClassValue","handleKeyDown","event","key","preventDefault","selectNextRadio","selectPreviousRadio","handleClose","el","remove","handleChangeValueChecked","radioSelected","emit","handleChangeRadioValue","target","checked","handleInputChange","handleInteractionChange","newValue","console","warn","handleInteractionSelectChange","handleSelectedChange","handleCheckedChange","detail","componentWillLoad","connectedCallback","addEventListener","disconnectedCallback","removeEventListener","selectRadioByStep","step","radios","Array","from","document","querySelectorAll","currentIndex","indexOf","newIndex","length","selectRadioByIndex","index","nextRadio","input","shadowRoot","querySelector","focus","click","getCssClassMap","count","icon","getTagAttributes","id","role","getRole","getAriaLabel","getAriaDescribedBy","getAriaChecked","getAriaDisabled","hostTitle","getAttribute","hasContent","hasInternalLabel","trim","value","renderIcon","h","renderLabel","renderCloseButton","emphasis","onClick","renderStatusLabel","class","renderMainTagContent","renderStatusLayout","content","style","display","alignItems","renderInteractionSelectTag","type","htmlFor","render","mainContent","Host"],"sources":["../../packages/webcomponents/src/components/tag/tag.scss?tag=br-tag&encapsulation=shadow","../../packages/webcomponents/src/components/tag/tag.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/checkbox/checkbox\";\n@import \"~@govbr-ds/core/src/components/input/input\";\n@import \"~@govbr-ds/core/src/components/tag/tag\";\n\n:host {\n display: inline-block;\n margin-right: var(--spacing-scale-half);\n\n .tag-spacing-status {\n margin-left: var(--spacing-scale-half) !important;\n }\n}\n\n.br-tag {\n &.interaction {\n br-button {\n margin-left: var(--spacing-scale-baseh);\n }\n }\n\n &:not(.icon) {\n br-icon {\n margin-right: var(--spacing-scale-base);\n }\n }\n}\n","import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Prop,\n State,\n Watch,\n} from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/tag?tab=designer).\n *\n * @slot default - Espaço de conteúdo do tag. Geralmente usado para incluir o rótulo ou um ícone.\n */\n\n// Constantes para valores fixos\nconst DENSITY_SMALL = 'small'\nconst DENSITY_MEDIUM = 'medium'\nconst DENSITY_LARGE = 'large'\n\nconst SHAPE_CIRCLE = 'circle'\nconst SHAPE_ROUNDED = 'rounded'\nconst SHAPE_DEFAULT = 'default'\n\n@Component({\n tag: 'br-tag',\n styleUrl: 'tag.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Tag {\n /**\n * Referência ao elemento host do componente.\n * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.\n */\n @Element() el: HTMLBrTagElement\n\n /** API de controle de formulário nativa */\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * A propriedade 'label' é uma string que representa o texto a ser exibido no componente.\n * Ela é refletida no DOM, permitindo que alterações no valor sejam refletidas no elemento HTML correspondente.\n */\n @Prop({ reflect: true }) readonly label: string = ''\n\n /**\n * A propriedade 'iconName' define o nome do ícone que será exibido ao lado do texto.\n * O valor padrão é 'fa-solid:car', que corresponde a um ícone de carro da biblioteca Font Awesome.\n */\n @Prop({ reflect: true }) readonly iconName: string = ''\n\n /**\n * A propriedade 'name' é uma string que representa o nome do grupo da tag para seleção.\n * Ela é refletida no DOM, permitindo que alterações no valor sejam refletidas no elemento HTML correspondente.\n */\n @Prop({ reflect: true }) readonly name: string = ''\n\n /**\n * A tag permite seleção múltipla.\n * */\n @Prop({ reflect: true }) readonly multiple: boolean = false\n\n /**\n * A tag está selecionada.\n * */\n @Prop({ reflect: true, mutable: true }) selected: boolean = false\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = `br-tag-${tagId++}`\n\n /**\n * A propriedade 'color' permite definir a cor do componente.\n * Aceita valores como 'red', 'blue', entre outros, e é refletida no DOM.\n */\n @Prop({ reflect: true }) readonly color: string = ''\n\n /**\n * A propriedade 'density' permite definir a densidade do componente.\n * Aceita valores como 'small', 'medium' e 'large', e é refletida no DOM.\n */\n @Prop({ reflect: true }) readonly density: 'small' | 'medium' | 'large' = DENSITY_MEDIUM\n\n /**\n * A propriedade 'shape' define o formato do componente.\n * Valores possíveis:\n * - 'circle': Componente com formato circular.\n * - 'rounded': Componente com bordas arredondadas.\n * - 'default': Componente com formato padrão.\n */\n @Prop({ reflect: true }) readonly shape: 'circle' | 'rounded' | 'default' = SHAPE_DEFAULT\n\n /**\n * Transforma a tag em um indicador de status, com aparência circular.\n * É flexível podendo ser utilizado com label ou apenas a superfície circular (informação é transmitida por meio de cores).\n */\n @Prop({ reflect: true }) readonly status: boolean = false\n\n /**\n * Interação deve ser habilitada.\n */\n @Prop({ reflect: true, mutable: true }) interaction: boolean = false\n\n /**\n * Interação de seleção deve ser habilitada.\n * */\n @Prop({ reflect: true }) interactionSelect: boolean = false\n\n /**\n * Tag deve estar desabilitado.\n */\n @Prop({ reflect: true }) readonly disabled: boolean = false\n\n /**\n * Rótulo personalizado para leitores de tela.\n * Quando fornecido, substitui completamente o texto visível para usuários de leitores de tela.\n * Útil quando o texto visível não é suficientemente descritivo (ex: ícones, abreviações).\n */\n @Prop({ reflect: true }) readonly ariaLabel: string = null\n\n /**\n * ID do elemento que fornece descrição adicional da tag.\n * Referencia um elemento na página que contém informações complementares sobre a tag.\n * A descrição é lida após o conteúdo principal, fornecendo contexto extra aos usuários de leitores de tela.\n * Exemplo: aria-describedby=\"help-status\" onde existe <div id=\"help-status\">Aguardando aprovação</div>\n */\n @Prop({ reflect: true }) readonly ariaDescribedby: string = null\n\n /**\n * Tag está selecionada.\n */\n @State() selectedClassValue: boolean = false\n\n /**\n * Evento emitido quando a tag é selecionada.\n */\n @Event() radioSelected: EventEmitter<string>\n\n @Watch('interaction')\n handleInteractionChange(newValue: boolean) {\n if (newValue && this.interactionSelect) {\n console.warn(\n \"Aviso: 'interaction' e 'interactionSelect' não podem ser usados ao mesmo tempo. Alterando o 'interaction' para 'false'.\"\n )\n this.interaction = false\n }\n }\n\n @Watch('interactionSelect')\n handleInteractionSelectChange(newValue: boolean) {\n if (newValue && this.interaction) {\n console.warn(\n \"Aviso: 'interaction' e 'interactionSelect' não podem ser usados ao mesmo tempo. Alterando o 'interaction' para 'false'.\"\n )\n this.interaction = false\n }\n }\n\n @Watch('selected')\n handleSelectedChange(newValue: boolean) {\n this.selectedClassValue = newValue\n }\n\n @Listen('radioSelected', { target: 'document' })\n handleCheckedChange(event: CustomEvent) {\n if (event.detail === this.name && this.el !== event.target) {\n this.selected = false\n }\n }\n\n componentWillLoad() {\n if (this.interaction && this.interactionSelect) {\n console.warn(\n \"Aviso: 'interaction' e 'interactionSelect' não podem ser usados ao mesmo tempo. Alterando o 'interaction' para 'false'.\"\n )\n this.interaction = false\n }\n }\n connectedCallback() {\n this.selectedClassValue = this.selected\n this.el.addEventListener('keydown', this.handleKeyDown)\n }\n\n disconnectedCallback() {\n this.el.removeEventListener('keydown', this.handleKeyDown)\n }\n /**\n * Permite navegação por teclado (setas) entre tags do tipo radio (seleção unica).\n * Funciona apenas quando 'interactionSelect' é true e 'multiple' é false.\n * Ignora tags desabilitadas.\n * @param event - Evento de teclado\n */\n private handleKeyDown = (event: KeyboardEvent) => {\n if (!this.interactionSelect || this.multiple || this.disabled) return\n\n if (event.key === 'ArrowRight') {\n event.preventDefault()\n this.selectNextRadio()\n } else if (event.key === 'ArrowLeft') {\n event.preventDefault()\n this.selectPreviousRadio()\n }\n }\n\n private selectNextRadio() {\n this.selectRadioByStep(1)\n }\n\n private selectPreviousRadio() {\n this.selectRadioByStep(-1)\n }\n\n private selectRadioByStep(step: number) {\n const radios = Array.from(\n document.querySelectorAll(`br-tag[interaction-select][name=\"${this.name}\"]:not([disabled])`)\n ) as HTMLElement[]\n const currentIndex = radios.indexOf(this.el)\n if (currentIndex === -1) return\n const newIndex = (currentIndex + step + radios.length) % radios.length\n this.selectRadioByIndex(radios, newIndex)\n }\n\n private selectRadioByIndex(radios: HTMLElement[], index: number) {\n const nextRadio = radios[index] as HTMLBrTagElement\n const input = nextRadio.shadowRoot?.querySelector('input[type=\"radio\"]') as HTMLInputElement | null\n if (input !== null) {\n input.focus()\n input.click()\n }\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-tag': true,\n interaction: this.interaction,\n 'interaction-select': this.interactionSelect,\n selected: this.selectedClassValue,\n disabled: this.disabled,\n [this.color]: this.color !== '',\n [DENSITY_SMALL]: this.density === DENSITY_SMALL,\n [DENSITY_MEDIUM]: this.density === DENSITY_MEDIUM,\n [DENSITY_LARGE]: this.density === DENSITY_LARGE,\n count: this.shape === SHAPE_ROUNDED,\n icon: this.shape === SHAPE_CIRCLE,\n status: this.status,\n }\n }\n\n private getTagAttributes() {\n if (this.interaction) {\n return {\n id: this.customId,\n }\n }\n\n return {\n id: this.customId,\n role: this.getRole(),\n 'aria-label': this.getAriaLabel(),\n 'aria-describedby': this.getAriaDescribedBy(),\n 'aria-checked': this.getAriaChecked(),\n 'aria-disabled': this.getAriaDisabled(),\n }\n }\n\n private getAriaDescribedBy(): string | null {\n const hostTitle = this.el.getAttribute('title')\n if (this.hasContent(hostTitle)) {\n return null\n }\n\n const hasInternalLabel = !this.status && this.label !== ''\n\n if (this.ariaDescribedby && this.ariaDescribedby.trim() !== '') {\n return this.ariaDescribedby\n }\n\n if (hasInternalLabel && !this.hasContent(this.ariaLabel)) {\n return `${this.customId}-label`\n }\n\n return null\n }\n\n /**\n * Verifica se uma string possui conteúdo válido (não vazia após remover espaços em branco).\n * @param value - String a ser verificada\n * @returns {boolean} true se a string possui conteúdo\n */\n private hasContent(value: string): boolean {\n return value?.trim().length > 0\n }\n\n private getAriaLabel(): string | null {\n return this.ariaLabel && this.ariaLabel.trim() !== '' ? this.ariaLabel : null\n }\n\n private getRole(): string | null {\n const hostTitle = this.el.getAttribute('title')\n if (this.hasContent(hostTitle)) {\n return null\n }\n\n if (this.interactionSelect) return this.multiple ? 'checkbox' : 'radio'\n return 'status'\n }\n\n private getAriaChecked(): string | null {\n return this.interactionSelect ? (this.selected ? 'true' : 'false') : null\n }\n\n private getAriaDisabled(): string | null {\n return this.disabled ? 'true' : null\n }\n\n private renderIcon() {\n return this.iconName && this.iconName.trim() !== '' ? (\n <br-icon icon-name={this.iconName} aria-hidden=\"true\" />\n ) : null\n }\n\n private renderLabel() {\n return this.shape !== SHAPE_CIRCLE && !this.status ? <span id={`${this.customId}-label`}>{this.label}</span> : null\n }\n\n private renderCloseButton() {\n if (!this.interaction) return null\n return (\n <br-button\n shape=\"circle\"\n emphasis=\"primary\"\n density=\"small\"\n aria-label={`Fechar ${this.label || 'tag'}`}\n onClick={this.handleClose}\n disabled={this.disabled}\n >\n <br-icon icon-name=\"fa-solid:times\" aria-hidden=\"true\"></br-icon>\n </br-button>\n )\n }\n\n private renderStatusLabel() {\n return this.status ? <span class=\"tag-spacing-status\">{this.label}</span> : null\n }\n\n private handleClose = () => {\n this.el.remove()\n }\n\n private handleChangeValueChecked = () => {\n if (!this.multiple) {\n this.radioSelected.emit(this.name)\n }\n this.selected = !this.selected\n }\n\n private handleChangeRadioValue = (event: MouseEvent) => {\n if (!this.multiple) {\n this.radioSelected.emit(this.name)\n this.selected = (event.target as HTMLInputElement).checked\n }\n }\n\n private renderMainTagContent() {\n return (\n <span class={this.getCssClassMap()} {...this.getTagAttributes()}>\n {this.renderIcon()}\n {this.renderLabel()}\n {this.renderCloseButton()}\n <slot></slot>\n </span>\n )\n }\n\n private renderStatusLayout(content: JSX.Element) {\n return (\n <span style={{ display: 'flex', alignItems: 'center' }}>\n {content}\n {this.renderStatusLabel()}\n </span>\n )\n }\n\n private handleInputChange = (event: MouseEvent) => {\n if (this.multiple) {\n this.handleChangeValueChecked()\n } else {\n this.handleChangeRadioValue(event)\n }\n }\n\n private renderInteractionSelectTag() {\n if (!this.interactionSelect) {\n return null\n }\n\n return (\n <span class={this.getCssClassMap()} id={this.customId}>\n <input\n id={`input-${this.customId}`}\n type={this.multiple ? 'checkbox' : 'radio'}\n name={this.name}\n value={this.label}\n checked={this.selected}\n onClick={this.handleInputChange}\n disabled={this.disabled}\n />\n <label htmlFor={`input-${this.customId}`}>\n {this.renderIcon()}\n {this.renderLabel()}\n </label>\n </span>\n )\n }\n\n render() {\n const mainContent = this.renderMainTagContent()\n\n return (\n <Host>\n {this.interactionSelect\n ? this.renderInteractionSelectTag()\n : this.status\n ? this.renderStatusLayout(mainContent)\n : mainContent}\n </Host>\n )\n }\n}\n\nlet tagId = 0\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -43,7 +43,7 @@ var patchCloneNodeFix = e => {
|
|
|
43
43
|
|
|
44
44
|
patchBrowser().then((async e => {
|
|
45
45
|
await i();
|
|
46
|
-
return o(JSON.parse('[["p-46f1f54c",[[65,"br-select",{"label":[513],"placeholder":[513],"isMultiple":[516,"is-multiple"],"options":[513],"selectAllLabel":[513,"select-all-label"],"unselectAllLabel":[513,"unselect-all-label"],"showSearchIcon":[516,"show-search-icon"],"isOpen":[516,"is-open"],"customId":[513,"custom-id"],"value":[1],"parsedOptions":[32],"inputValue":[32],"isAllSelected":[32],"isExpanded":[32],"focusedIndex":[32],"toggleOpen":[64]},null,{"options":["synchronizeSelect"],"value":["syncValueFromOutside"]}]]],["p-b600b95e",[[1,"br-breadcrumb",{"customId":[513,"custom-id"],"homeUrl":[1,"home-url"],"crumbs":[1],"showTooltip":[32],"tooltipPosition":[32],"tooltipText":[32],"isSmallScreen":[32],"isTruncate":[32],"larguraInterna":[32],"larguraPai":[32],"isFolderOpen":[32]}]]],["p-0fe0dcc1",[[1,"br-footer-category",{"customId":[513,"custom-id"],"label":[513],"isDesktop":[32],"accordionGroup":[32]}]]],["p-88bfa633",[[1,"br-footer-social",{"customId":[513,"custom-id"],"icon":[513],"description":[513],"href":[513]}]]],["p-0b45efc3",[[65,"br-message",{"messageTitle":[513,"message-title"],"customId":[513,"custom-id"],"message":[513],"isInline":[516,"is-inline"],"isClosable":[516,"is-closable"],"autoRemove":[516,"auto-remove"],"showIcon":[516,"show-icon"],"isFeedback":[516,"is-feedback"],"state":[513]}]]],["p-ac4ce40c",[[65,"br-step-item",{"label":[513],"highlight":[513],"active":[516],"disabled":[516],"brIconName":[513,"br-icon-name"],"brIconAria":[513,"br-icon-aria"],"showTimeLine":[32],"stepItemPositionStatus":[32],"stepLayout":[32],"labelPosition":[32],"contentType":[32],"mode":[32],"content":[32],"ariaLabelContent":[32],"setStepItemPositionStatus":[64],"handleShowTimeLine":[64],"setLabelPosition":[64],"setContentType":[64],"setMode":[64],"setContent":[64]},null,{"active":["watchItemIsActive"]}]]],["p-761f7798",[[65,"br-tag",{"label":[513],"iconName":[513,"icon-name"],"name":[513],"multiple":[516],"selected":[1540],"customId":[513,"custom-id"],"color":[513],"density":[513],"shape":[513],"status":[516],"interaction":[1540],"interactionSelect":[516,"interaction-select"],"disabled":[516],"selectedClassValue":[32]},[[4,"radioSelected","handleCheckedChange"]],{"interaction":["handleInteractionChange"],"interactionSelect":["handleInteractionSelectChange"],"selected":["handleSelectedChange"]}]]],["p-8b15dfc8",[[65,"br-tooltip",{"customId":[513,"custom-id"],"position":[513],"type":[513],"density":[513],"state":[513],"isAutoVisible":[516,"is-auto-visible"],"showDelay":[514,"show-delay"],"hideDelay":[514,"hide-delay"],"isVisible":[32]},[[0,"focusin","handleFocusIn"],[0,"focusout","handleFocusOut"],[4,"keydown","handleKeyDown"]],{"isVisible":["handleVisibilityChange"]}]]],["p-a802ca08",[[65,"br-upload",{"accept":[1],"label":[1],"disabled":[516],"state":[513],"multiple":[4],"filesSelected":[32],"file":[32]}]]],["p-df6e707a",[[1,"br-avatar",{"density":[1025],"customId":[513,"custom-id"],"src":[1],"alt":[1],"isIconic":[4,"is-iconic"],"text":[1],"disabled":[4],"textBackgroundColor":[1,"text-background-color"],"hasError":[32]},null,{"density":["handleDensityChange"]}]]],["p-83df407a",[[65,"br-checkgroup",{"label":[1],"labelSelecionado":[513,"label-selecionado"],"labelDesselecionado":[513,"label-desselecionado"],"indeterminate":[516],"customId":[513,"custom-id"],"checked":[32],"isIndeterminate":[32]},[[4,"checkedChange","handleChange"]]]]],["p-16f8e426",[[1,"br-footer",{"customId":[513,"custom-id"],"theme":[513],"socialNetworkTitle":[513,"social-network-title"]}]]],["p-502c9692",[[1,"br-footer-item",{"customId":[513,"custom-id"],"href":[513]}]]],["p-70d4da25",[[65,"br-tab-item",{"TabItemId":[513,"tab-item-id"],"icon":[513],"tabItemTitle":[513,"tab-item-title"],"onlyIcon":[516,"only-icon"],"isActive":[516,"is-active"],"counter":[513],"colorMode":[513,"color-mode"]}]]],["p-ee9fe4a2",[[65,"br-card",{"customId":[513,"custom-id"],"disabled":[516],"hover":[516]}]]],["p-cac6afba",[[65,"br-dropdown",{"isOpen":[1540,"is-open"],"customId":[513,"custom-id"],"open":[64],"hide":[64],"setFocus":[64]},null,{"isOpen":["isOpenChanged"]}]]],["p-b565e6e5",[[1,"br-footer-legal",{"customId":[513,"custom-id"]}]]],["p-9ed0a45f",[[1,"br-footer-logo",{"customId":[513,"custom-id"],"src":[513],"description":[513],"position":[513],"isPartner":[516,"is-partner"],"href":[513],"target":[513]}]]],["p-94afd91b",[[65,"br-loading",{"isProgress":[516,"is-progress"],"customId":[513,"custom-id"],"progressPercent":[514,"progress-percent"],"isMedium":[516,"is-medium"],"label":[513],"ariaLabel":[513,"aria-label"]}]]],["p-3615200c",[[65,"br-magic-button",{"customId":[513,"custom-id"],"label":[513],"icon":[513],"density":[513],"circle":[516],"ariaLabel":[1,"aria-label"]}]]],["p-62ac038c",[[65,"br-scrim",{"customId":[513,"custom-id"],"isOpen":[516,"is-open"],"positionContent":[1,"position-content"],"disableCloseOnClick":[4,"disable-close-on-click"],"zIndex":[2,"z-index"],"customBackground":[1,"custom-background"],"customOpacity":[2,"custom-opacity"],"displayMode":[1,"display-mode"],"scrollStrategy":[1,"scroll-strategy"],"scrollThreshold":[2,"scroll-threshold"],"activator":[1],"isActive":[32],"hasActivatorSlot":[32],"setScrollThreshold":[64],"open":[64],"close":[64],"toggle":[64]},null,{"isOpen":["handleOpenChange"],"zIndex":["updateStyles"],"customBackground":["updateStyles"],"customOpacity":["updateStyles"],"activator":["handleActivatorChange"]}]]],["p-096b0875",[[65,"br-step",{"layout":[513],"initialStep":[513,"initial-step"],"labelPosition":[513,"label-position"],"contentType":[513,"content-type"],"mode":[513],"progressionType":[513,"progression-type"],"activeStep":[32],"stepItems":[32],"ProceedToNextStep":[64],"BackToPreviousStep":[64],"StepValidation":[64],"GetActiveStep":[64]},[[2,"click","handleClick"]]]]],["p-abf81334",[[65,"br-switch",{"disabled":[516],"checked":[1540],"customId":[513,"custom-id"],"label":[1],"labelPosition":[513,"label-position"],"labelOn":[513,"label-on"],"labelOff":[513,"label-off"],"hasIcon":[516,"has-icon"],"name":[513],"value":[513],"density":[513],"_slotDefault":[32],"toggleChecked":[64]}]]],["p-f1738ae0",[[65,"br-tab",{"TabId":[513,"tab-id"],"density":[513],"colorMode":[513,"color-mode"],"activeTab":[32],"tabItems":[32],"tabContent":[32]},null,{"activeTab":["activeTabChanged"]}]]],["p-2a407917",[[1,"br-table",{"customId":[513,"custom-id"]}]]],["p-1d018f30",[[1,"br-table-cell",{"customId":[513,"custom-id"],"hasVerticalBorder":[516,"has-vertical-border"],"horizontalAlign":[513,"horizontal-align"]},[[4,"brHorizontalAlignDidChange","handleHorizontalAlignDidChange"]],{"horizontalAlign":["handleHorizontalAlignChange"]}]]],["p-bbd38dd7",[[1,"br-table-header-cell",{"customId":[513,"custom-id"],"hasVerticalBorder":[516,"has-vertical-border"],"horizontalAlign":[513,"horizontal-align"]},null,{"horizontalAlign":["handleHorizontalAlignChange"]}]]],["p-d549a87b",[[1,"br-table-header-row",{"customId":[513,"custom-id"]}]]],["p-deb094fb",[[1,"br-table-row",{"customId":[513,"custom-id"]}]]],["p-24f6adad",[[65,"br-textarea",{"value":[1537],"label":[513],"placeholder":[513],"customId":[513,"custom-id"],"disabled":[516],"maxlength":[514],"showCounter":[516,"show-counter"],"state":[513],"density":[513],"isInline":[516,"is-inline"],"currentLength":[32],"setValue":[64]},null,{"value":["valueChanged"]}]]],["p-8b24abe6",[[65,"br-input",{"type":[513],"autocomplete":[513],"density":[513],"disabled":[516],"isInline":[516,"is-inline"],"isHighlight":[516,"is-highlight"],"state":[513],"label":[513],"customId":[513,"custom-id"],"name":[513],"placeholder":[513],"readonly":[516],"required":[516],"value":[1537],"helpText":[513,"help-text"],"autocorrect":[513],"min":[514],"max":[514],"minlength":[514],"maxlength":[514],"multiple":[516],"pattern":[513],"step":[514],"actionLabel":[513,"action-label"],"isPasswordVisible":[32],"internalState":[32],"hasIconSlot":[32],"hasActionSlot":[32],"hasFeedbackSlot":[32]}],[65,"br-radio",{"checked":[1540],"disabled":[516],"state":[513],"hasHiddenLabel":[516,"has-hidden-label"],"customId":[513,"custom-id"],"name":[513],"label":[513],"value":[513],"toggleChecked":[64]},[[8,"checkedChange","handleCheckedChange"],[0,"keydown","handleKeyDown"]]]]],["p-8ab5744a",[[65,"br-checkbox",{"indeterminate":[1540],"checked":[1540],"customId":[513,"custom-id"],"disabled":[516],"hasHiddenLabel":[516,"has-hidden-label"],"label":[513],"name":[513],"state":[513],"value":[513],"slotDefault":[32],"setIndeterminate":[64],"toggleChecked":[64]},null,{"indeterminate":["updateIndeterminate"]}]]],["p-90abf633",[[1,"br-divider",{"customId":[513,"custom-id"],"orientation":[513],"thickness":[513],"borderStyle":[513,"border-style"],"isDarkMode":[516,"is-dark-mode"],"color":[513],"align":[1],"bleed":[4]},null,{"color":["updateColor"]}]]],["p-22682cde",[[65,"br-item",{"disabled":[516],"customId":[513,"custom-id"],"isActive":[516,"is-active"],"isSelected":[516,"is-selected"],"isInteractive":[516,"is-interactive"],"href":[513],"target":[513],"isButton":[516,"is-button"],"type":[1537],"value":[513],"density":[513],"hasSlotDefault":[32],"hasSlotStart":[32],"hasSlotEnd":[32],"selectedValue":[32],"setFocus":[64]},[[4,"checkedChange","handleRadioChange"],[4,"checkedChange","handleCheckboxChange"]]]]],["p-fa0aeb0f",[[65,"br-button",{"colorMode":[513,"color-mode"],"customId":[513,"custom-id"],"density":[513],"disabled":[516],"emphasis":[513],"isActive":[516,"is-active"],"isLoading":[516,"is-loading"],"shape":[513],"type":[513],"value":[513],"ariaLabel":[513,"aria-label"],"ariaPressed":[513,"aria-pressed"]}],[1,"br-icon",{"iconName":[513,"icon-name"],"height":[513],"customId":[513,"custom-id"],"width":[513],"cssClasses":[513,"css-classes"],"isInline":[516,"is-inline"],"rotate":[513],"flip":[513],"isFocusable":[516,"is-focusable"],"lazy":[516]}]]],["p-4b3042fb",[[65,"br-list",{"header":[513],"isHorizontal":[516,"is-horizontal"],"customId":[513,"custom-id"],"hideHeaderDivider":[516,"hide-header-divider"],"collapse":[516],"accordion":[513]}],[65,"br-collapse",{"customId":[513,"custom-id"],"open":[1540],"accordionGroup":[1,"accordion-group"],"iconToShow":[1,"icon-to-show"],"iconToHide":[1,"icon-to-hide"],"iconPosition":[1,"icon-position"],"openCollapse":[64],"closeCollapse":[64]},[[4,"brDidOpen","handleOpen"]]]]]]'), e);
|
|
46
|
+
return o(JSON.parse('[["p-46f1f54c",[[65,"br-select",{"label":[513],"placeholder":[513],"isMultiple":[516,"is-multiple"],"options":[513],"selectAllLabel":[513,"select-all-label"],"unselectAllLabel":[513,"unselect-all-label"],"showSearchIcon":[516,"show-search-icon"],"isOpen":[516,"is-open"],"customId":[513,"custom-id"],"value":[1],"parsedOptions":[32],"inputValue":[32],"isAllSelected":[32],"isExpanded":[32],"focusedIndex":[32],"toggleOpen":[64]},null,{"options":["synchronizeSelect"],"value":["syncValueFromOutside"]}]]],["p-b600b95e",[[1,"br-breadcrumb",{"customId":[513,"custom-id"],"homeUrl":[1,"home-url"],"crumbs":[1],"showTooltip":[32],"tooltipPosition":[32],"tooltipText":[32],"isSmallScreen":[32],"isTruncate":[32],"larguraInterna":[32],"larguraPai":[32],"isFolderOpen":[32]}]]],["p-0fe0dcc1",[[1,"br-footer-category",{"customId":[513,"custom-id"],"label":[513],"isDesktop":[32],"accordionGroup":[32]}]]],["p-88bfa633",[[1,"br-footer-social",{"customId":[513,"custom-id"],"icon":[513],"description":[513],"href":[513]}]]],["p-0b45efc3",[[65,"br-message",{"messageTitle":[513,"message-title"],"customId":[513,"custom-id"],"message":[513],"isInline":[516,"is-inline"],"isClosable":[516,"is-closable"],"autoRemove":[516,"auto-remove"],"showIcon":[516,"show-icon"],"isFeedback":[516,"is-feedback"],"state":[513]}]]],["p-ac4ce40c",[[65,"br-step-item",{"label":[513],"highlight":[513],"active":[516],"disabled":[516],"brIconName":[513,"br-icon-name"],"brIconAria":[513,"br-icon-aria"],"showTimeLine":[32],"stepItemPositionStatus":[32],"stepLayout":[32],"labelPosition":[32],"contentType":[32],"mode":[32],"content":[32],"ariaLabelContent":[32],"setStepItemPositionStatus":[64],"handleShowTimeLine":[64],"setLabelPosition":[64],"setContentType":[64],"setMode":[64],"setContent":[64]},null,{"active":["watchItemIsActive"]}]]],["p-d3463d4a",[[65,"br-tag",{"label":[513],"iconName":[513,"icon-name"],"name":[513],"multiple":[516],"selected":[1540],"customId":[513,"custom-id"],"color":[513],"density":[513],"shape":[513],"status":[516],"interaction":[1540],"interactionSelect":[516,"interaction-select"],"disabled":[516],"ariaLabel":[513,"aria-label"],"ariaDescribedby":[513,"aria-describedby"],"selectedClassValue":[32]},[[4,"radioSelected","handleCheckedChange"]],{"interaction":["handleInteractionChange"],"interactionSelect":["handleInteractionSelectChange"],"selected":["handleSelectedChange"]}]]],["p-6dba4bb1",[[65,"br-tooltip",{"customId":[513,"custom-id"],"position":[513],"type":[513],"density":[513],"state":[513],"isAutoVisible":[516,"is-auto-visible"],"showDelay":[514,"show-delay"],"hideDelay":[514,"hide-delay"],"isVisible":[32]},[[0,"focusin","handleFocusIn"],[0,"focusout","handleFocusOut"],[4,"keydown","handleKeyDown"]],{"isVisible":["handleVisibilityChange"]}]]],["p-861b8ebf",[[65,"br-upload",{"customId":[513,"custom-id"],"accept":[1],"label":[1],"disabled":[516],"state":[513],"multiple":[4],"filesSelected":[32],"file":[32]}]]],["p-7251c80f",[[1,"br-avatar",{"density":[1025],"customId":[513,"custom-id"],"src":[1],"alt":[1],"isIconic":[4,"is-iconic"],"text":[1],"disabled":[4],"textBackgroundColor":[1,"text-background-color"],"hasError":[32]},null,{"density":["handleDensityChange"]}]]],["p-83df407a",[[65,"br-checkgroup",{"label":[1],"labelSelecionado":[513,"label-selecionado"],"labelDesselecionado":[513,"label-desselecionado"],"indeterminate":[516],"customId":[513,"custom-id"],"checked":[32],"isIndeterminate":[32]},[[4,"checkedChange","handleChange"]]]]],["p-16f8e426",[[1,"br-footer",{"customId":[513,"custom-id"],"theme":[513],"socialNetworkTitle":[513,"social-network-title"]}]]],["p-502c9692",[[1,"br-footer-item",{"customId":[513,"custom-id"],"href":[513]}]]],["p-70d4da25",[[65,"br-tab-item",{"TabItemId":[513,"tab-item-id"],"icon":[513],"tabItemTitle":[513,"tab-item-title"],"onlyIcon":[516,"only-icon"],"isActive":[516,"is-active"],"counter":[513],"colorMode":[513,"color-mode"]}]]],["p-ee9fe4a2",[[65,"br-card",{"customId":[513,"custom-id"],"disabled":[516],"hover":[516]}]]],["p-cac6afba",[[65,"br-dropdown",{"isOpen":[1540,"is-open"],"customId":[513,"custom-id"],"open":[64],"hide":[64],"setFocus":[64]},null,{"isOpen":["isOpenChanged"]}]]],["p-b565e6e5",[[1,"br-footer-legal",{"customId":[513,"custom-id"]}]]],["p-9ed0a45f",[[1,"br-footer-logo",{"customId":[513,"custom-id"],"src":[513],"description":[513],"position":[513],"isPartner":[516,"is-partner"],"href":[513],"target":[513]}]]],["p-94afd91b",[[65,"br-loading",{"isProgress":[516,"is-progress"],"customId":[513,"custom-id"],"progressPercent":[514,"progress-percent"],"isMedium":[516,"is-medium"],"label":[513],"ariaLabel":[513,"aria-label"]}]]],["p-3615200c",[[65,"br-magic-button",{"customId":[513,"custom-id"],"label":[513],"icon":[513],"density":[513],"circle":[516],"ariaLabel":[1,"aria-label"]}]]],["p-62ac038c",[[65,"br-scrim",{"customId":[513,"custom-id"],"isOpen":[516,"is-open"],"positionContent":[1,"position-content"],"disableCloseOnClick":[4,"disable-close-on-click"],"zIndex":[2,"z-index"],"customBackground":[1,"custom-background"],"customOpacity":[2,"custom-opacity"],"displayMode":[1,"display-mode"],"scrollStrategy":[1,"scroll-strategy"],"scrollThreshold":[2,"scroll-threshold"],"activator":[1],"isActive":[32],"hasActivatorSlot":[32],"setScrollThreshold":[64],"open":[64],"close":[64],"toggle":[64]},null,{"isOpen":["handleOpenChange"],"zIndex":["updateStyles"],"customBackground":["updateStyles"],"customOpacity":["updateStyles"],"activator":["handleActivatorChange"]}]]],["p-096b0875",[[65,"br-step",{"layout":[513],"initialStep":[513,"initial-step"],"labelPosition":[513,"label-position"],"contentType":[513,"content-type"],"mode":[513],"progressionType":[513,"progression-type"],"activeStep":[32],"stepItems":[32],"ProceedToNextStep":[64],"BackToPreviousStep":[64],"StepValidation":[64],"GetActiveStep":[64]},[[2,"click","handleClick"]]]]],["p-82dec3b6",[[65,"br-switch",{"disabled":[516],"checked":[1540],"customId":[513,"custom-id"],"label":[1],"labelPosition":[513,"label-position"],"labelOn":[513,"label-on"],"labelOff":[513,"label-off"],"hasIcon":[516,"has-icon"],"name":[513],"value":[513],"density":[513],"_slotDefault":[32],"toggleChecked":[64]}]]],["p-f1738ae0",[[65,"br-tab",{"TabId":[513,"tab-id"],"density":[513],"colorMode":[513,"color-mode"],"activeTab":[32],"tabItems":[32],"tabContent":[32]},null,{"activeTab":["activeTabChanged"]}]]],["p-2a407917",[[1,"br-table",{"customId":[513,"custom-id"]}]]],["p-1d018f30",[[1,"br-table-cell",{"customId":[513,"custom-id"],"hasVerticalBorder":[516,"has-vertical-border"],"horizontalAlign":[513,"horizontal-align"]},[[4,"brHorizontalAlignDidChange","handleHorizontalAlignDidChange"]],{"horizontalAlign":["handleHorizontalAlignChange"]}]]],["p-bbd38dd7",[[1,"br-table-header-cell",{"customId":[513,"custom-id"],"hasVerticalBorder":[516,"has-vertical-border"],"horizontalAlign":[513,"horizontal-align"]},null,{"horizontalAlign":["handleHorizontalAlignChange"]}]]],["p-d549a87b",[[1,"br-table-header-row",{"customId":[513,"custom-id"]}]]],["p-deb094fb",[[1,"br-table-row",{"customId":[513,"custom-id"]}]]],["p-73794ac8",[[65,"br-textarea",{"value":[1537],"label":[513],"placeholder":[513],"ariaLabel":[513,"aria-label"],"customId":[513,"custom-id"],"disabled":[516],"maxlength":[514],"showCounter":[516,"show-counter"],"state":[513],"density":[513],"isInline":[516,"is-inline"],"currentLength":[32],"setValue":[64]},null,{"value":["valueChanged"]}]]],["p-8b24abe6",[[65,"br-input",{"type":[513],"autocomplete":[513],"density":[513],"disabled":[516],"isInline":[516,"is-inline"],"isHighlight":[516,"is-highlight"],"state":[513],"label":[513],"customId":[513,"custom-id"],"name":[513],"placeholder":[513],"readonly":[516],"required":[516],"value":[1537],"helpText":[513,"help-text"],"autocorrect":[513],"min":[514],"max":[514],"minlength":[514],"maxlength":[514],"multiple":[516],"pattern":[513],"step":[514],"actionLabel":[513,"action-label"],"isPasswordVisible":[32],"internalState":[32],"hasIconSlot":[32],"hasActionSlot":[32],"hasFeedbackSlot":[32]}],[65,"br-radio",{"checked":[1540],"disabled":[516],"state":[513],"hasHiddenLabel":[516,"has-hidden-label"],"customId":[513,"custom-id"],"name":[513],"label":[513],"value":[513],"toggleChecked":[64]},[[8,"checkedChange","handleCheckedChange"],[0,"keydown","handleKeyDown"]]]]],["p-8ab5744a",[[65,"br-checkbox",{"indeterminate":[1540],"checked":[1540],"customId":[513,"custom-id"],"disabled":[516],"hasHiddenLabel":[516,"has-hidden-label"],"label":[513],"name":[513],"state":[513],"value":[513],"slotDefault":[32],"setIndeterminate":[64],"toggleChecked":[64]},null,{"indeterminate":["updateIndeterminate"]}]]],["p-90abf633",[[1,"br-divider",{"customId":[513,"custom-id"],"orientation":[513],"thickness":[513],"borderStyle":[513,"border-style"],"isDarkMode":[516,"is-dark-mode"],"color":[513],"align":[1],"bleed":[4]},null,{"color":["updateColor"]}]]],["p-22682cde",[[65,"br-item",{"disabled":[516],"customId":[513,"custom-id"],"isActive":[516,"is-active"],"isSelected":[516,"is-selected"],"isInteractive":[516,"is-interactive"],"href":[513],"target":[513],"isButton":[516,"is-button"],"type":[1537],"value":[513],"density":[513],"hasSlotDefault":[32],"hasSlotStart":[32],"hasSlotEnd":[32],"selectedValue":[32],"setFocus":[64]},[[4,"checkedChange","handleRadioChange"],[4,"checkedChange","handleCheckboxChange"]]]]],["p-3f18e20a",[[65,"br-button",{"colorMode":[513,"color-mode"],"customId":[513,"custom-id"],"density":[513],"disabled":[516],"emphasis":[513],"isActive":[516,"is-active"],"isLoading":[516,"is-loading"],"shape":[513],"type":[513],"value":[513],"ariaLabel":[513,"aria-label"],"ariaPressed":[513,"aria-pressed"]}],[1,"br-icon",{"iconName":[513,"icon-name"],"height":[513],"customId":[513,"custom-id"],"width":[513],"cssClasses":[513,"css-classes"],"isInline":[516,"is-inline"],"rotate":[513],"flip":[513],"isFocusable":[516,"is-focusable"],"lazy":[516]}]]],["p-4b3042fb",[[65,"br-list",{"header":[513],"isHorizontal":[516,"is-horizontal"],"customId":[513,"custom-id"],"hideHeaderDivider":[516,"hide-header-divider"],"collapse":[516],"accordion":[513]}],[65,"br-collapse",{"customId":[513,"custom-id"],"open":[1540],"accordionGroup":[1,"accordion-group"],"iconToShow":[1,"icon-to-show"],"iconToHide":[1,"icon-to-hide"],"iconPosition":[1,"icon-position"],"openCollapse":[64],"closeCollapse":[64]},[[4,"brDidOpen","handleOpen"]]]]]]'), e);
|
|
47
47
|
}));
|
|
48
48
|
//# sourceMappingURL=webcomponents.esm.js.map
|
|
49
49
|
//# sourceMappingURL=webcomponents.esm.js.map
|
|
@@ -715,7 +715,9 @@
|
|
|
715
715
|
{ "name": "status", "values": [] },
|
|
716
716
|
{ "name": "interaction", "values": [] },
|
|
717
717
|
{ "name": "interaction-select", "values": [] },
|
|
718
|
-
{ "name": "disabled", "values": [] }
|
|
718
|
+
{ "name": "disabled", "values": [] },
|
|
719
|
+
{ "name": "aria-label", "values": [] },
|
|
720
|
+
{ "name": "aria-describedby", "values": [] }
|
|
719
721
|
],
|
|
720
722
|
"references": []
|
|
721
723
|
},
|
|
@@ -726,6 +728,7 @@
|
|
|
726
728
|
{ "name": "value", "values": [] },
|
|
727
729
|
{ "name": "label", "values": [] },
|
|
728
730
|
{ "name": "placeholder", "values": [] },
|
|
731
|
+
{ "name": "aria-label", "values": [] },
|
|
729
732
|
{ "name": "custom-id", "values": [] },
|
|
730
733
|
{ "name": "disabled", "values": [] },
|
|
731
734
|
{ "name": "maxlength", "values": [] },
|
|
@@ -767,12 +770,21 @@
|
|
|
767
770
|
},
|
|
768
771
|
{
|
|
769
772
|
"name": "br-upload",
|
|
770
|
-
"description": "Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/upload?tab=designer).\n---\n\n\n### **Slots:**\n - **default** -
|
|
773
|
+
"description": "Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/upload?tab=designer).\n---\n\n\n### **Slots:**\n - **default** - Texto personalizado para o botão de upload. Se não fornecido, será exibido \"Selecione o arquivo\" como texto padrão. Use este slot para personalizar o texto do botão de acordo com o contexto do upload, por exemplo: \"Anexar documentos\", \"Enviar imagens\", etc.",
|
|
771
774
|
"attributes": [
|
|
775
|
+
{ "name": "custom-id", "values": [] },
|
|
772
776
|
{ "name": "accept", "values": [] },
|
|
773
777
|
{ "name": "label", "values": [] },
|
|
774
778
|
{ "name": "disabled", "values": [] },
|
|
775
|
-
{
|
|
779
|
+
{
|
|
780
|
+
"name": "state",
|
|
781
|
+
"values": [
|
|
782
|
+
{ "name": "info" },
|
|
783
|
+
{ "name": "warning" },
|
|
784
|
+
{ "name": "danger" },
|
|
785
|
+
{ "name": "success" }
|
|
786
|
+
]
|
|
787
|
+
},
|
|
776
788
|
{ "name": "multiple", "values": [] }
|
|
777
789
|
],
|
|
778
790
|
"references": []
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["buttonCss","Button","__stencil_proxyCustomElement","HTMLElement","constructor","this","customId","buttonId","density","disabled","isActive","isLoading","handleClick","type","submitEvent","SubmitEvent","submitter","elementInternals","form","composed","cancelable","bubbles","dispatchEvent","reset","componentDidLoad","ariaLabelValue","el","getAttribute","undefined","trim","console","warn","getCssClassMap","primary","emphasis","secondary","large","small","block","shape","circle","active","loading","colorMode","render","h","Host","key","role","part","ariaLabel","ariaPressed","class","id","value","onClick"],"sources":["../../packages/webcomponents/src/components/button/button.scss?tag=br-button&encapsulation=shadow","../../packages/webcomponents/src/components/button/button.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/button/button\";\n@import \"~@govbr-ds/core/src/components/loading/loading\";\n\n:host {\n display: inline-block;\n}\n\n::slotted(br-icon) {\n margin: 0 var(--spacing-scale-base);\n}\n\n::slotted(a:not(:disabled):hover) {\n background-image: none !important;\n}\n","import { AttachInternals, Component, Element, h, Host, Prop } from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/button?tab=designer).\n *\n * @slot default - Espaço de conteúdo do button. Geralmente usado para incluir o rótulo.\n * @part slot-content - Espaço de conteúdo do botão. Geralmente usado para incluir o rótulo.\n */\n@Component({\n tag: 'br-button',\n styleUrl: 'button.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Button {\n /**\n * Referência ao elemento host do componente.\n * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.\n */\n @Element() el: HTMLBrButtonElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Define se o botão usará um esquema de cores escuro.\n */\n @Prop({ reflect: true }) readonly colorMode: 'dark'\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = `br-button-${buttonId++}`\n\n /**\n * Ajusta a densidade, alterando o espaçamento interno para um visual mais compacto ou mais expandido.\n */\n @Prop({ reflect: true }) readonly density: 'large' | 'medium' | 'small' = 'medium'\n\n /**\n * Desativa o botão, tornando-o não interativo.\n */\n @Prop({ reflect: true }) readonly disabled: boolean = false\n\n /**\n * Define a ênfase do botão, alterando sua aparência para criar hierarquia visual e destacar ações importantes.\n */\n @Prop({ reflect: true }) readonly emphasis: 'primary' | 'secondary' | 'tertiary'\n\n /**\n * Indica se o botão está no estado ativo.\n * Se definido como verdadeiro, o botão será exibido como ativo.\n */\n @Prop({ reflect: true }) readonly isActive: boolean = false\n\n /**\n * Aplica o estado de \"progresso\" ao botão.\n * O botão exibirá um indicador de carregamento ou progresso.\n */\n @Prop({ reflect: true }) readonly isLoading: boolean = false\n\n /**\n * Define o formato do botão.\n * Valores possíveis:\n * - 'circle': Botão com formato circular.\n * - 'block': Botão com formato ovalado ocupando toda a largura disponível.\n * - 'pill': Botão com formato ovalado, com bordas arredondadas.\n */\n @Prop({ reflect: true }) readonly shape: 'circle' | 'block' | 'pill'\n\n /**\n * Define o tipo de botão, especificando seu comportamento padrão.\n * Valores possíveis:\n * - 'button': Um botão padrão.\n * - 'reset': Um botão para redefinir o formulário.\n * - 'submit': Um botão para enviar o formulário.\n */\n @Prop({ reflect: true }) readonly type: 'button' | 'reset' | 'submit'\n\n /**\n * Define o valor inicial do botão em um formulário.\n */\n @Prop({ reflect: true }) readonly value: string\n\n /**\n * Define o rótulo acessível do botão.\n * Este rótulo é usado por tecnologias assistivas para descrever a função do botão.\n * É especialmente importante para botões com formato circular, onde o texto pode não ser visível.\n * Se o botão não tiver um rótulo acessível, uma mensagem de aviso será exibida no console.\n */\n @Prop({ reflect: true }) readonly ariaLabel: string\n\n /**\n * Define o estado de pressionado do botão.\n * Este atributo é usado para indicar se o botão está atualmente pressionado ou não.\n * É especialmente útil para botões que podem ser alternados entre os estados pressionado e não pressionado.\n * O valor deve ser 'true' ou 'false'.\n */\n @Prop({ reflect: true }) readonly ariaPressed: string\n\n private readonly handleClick = () => {\n if (this.type === 'submit') {\n const submitEvent = new SubmitEvent('submit', {\n submitter: this.elementInternals.form,\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n this.elementInternals.form.dispatchEvent(submitEvent)\n }\n\n if (this.type === 'reset') {\n this.elementInternals.form.reset()\n }\n }\n\n componentDidLoad() {\n const ariaLabelValue = this.el.getAttribute('aria-label')\n if (ariaLabelValue === null || ariaLabelValue === undefined || ariaLabelValue.trim() === '') {\n console.warn('[br-button]: Botões circulares devem conter um aria-label.')\n }\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-button': true,\n primary: this.emphasis === 'primary',\n secondary: this.emphasis === 'secondary',\n large: this.density === 'large',\n small: this.density === 'small',\n block: this.shape === 'block',\n circle: this.shape === 'circle',\n active: this.isActive,\n loading: this.isLoading,\n 'dark-mode': this.colorMode === 'dark',\n }\n }\n\n render() {\n return (\n <Host aria-disabled={this.disabled ? 'true' : null} role=\"button\">\n <button\n part=\"button\"\n aria-label={this.shape === 'circle' ? this.ariaLabel : null}\n aria-pressed={this.ariaPressed}\n class={this.getCssClassMap()}\n type={this.type}\n id={this.customId}\n disabled={this.disabled}\n value={this.value}\n onClick={this.handleClick}\n >\n <slot></slot>\n </button>\n </Host>\n )\n }\n}\n\nlet buttonId = 0\n"],"mappings":";;;;;;AAAA,MAAMA,IAAY;;MCgBLC,KAAMC,EAAA,MAAAD,UAAAE;EANnB,WAAAC;;;;;;;;eAwBoCC,KAAAC,WAAmB,aAAaC;;;;IAKhCF,KAAOG,UAAiC;;;eAKxCH,KAAQI,WAAY;;;;eAWpBJ,KAAQK,WAAY;;;;eAMpBL,KAASM,YAAY;IAyCtCN,KAAWO,cAAG;MAC7B,IAAIP,KAAKQ,SAAS,UAAU;QAC1B,MAAMC,IAAc,IAAIC,YAAY,UAAU;UAC5CC,WAAWX,KAAKY,iBAAiBC;UACjCC,UAAU;UACVC,YAAY;UACZC,SAAS;;QAEXhB,KAAKY,iBAAiBC,KAAKI,cAAcR;;MAG3C,IAAIT,KAAKQ,SAAS,SAAS;QACzBR,KAAKY,iBAAiBC,KAAKK;;;AA6ChC;EAzCC,gBAAAC;IACE,MAAMC,IAAiBpB,KAAKqB,GAAGC,aAAa;IAC5C,IAAIF,MAAmB,QAAQA,MAAmBG,aAAaH,EAAeI,WAAW,IAAI;MAC3FC,QAAQC,KAAK;;;EAIT,cAAAC;IACN,OAAO;MACL,aAAa;MACbC,SAAS5B,KAAK6B,aAAa;MAC3BC,WAAW9B,KAAK6B,aAAa;MAC7BE,OAAO/B,KAAKG,YAAY;MACxB6B,OAAOhC,KAAKG,YAAY;MACxB8B,OAAOjC,KAAKkC,UAAU;MACtBC,QAAQnC,KAAKkC,UAAU;MACvBE,QAAQpC,KAAKK;MACbgC,SAASrC,KAAKM;MACd,aAAaN,KAAKsC,cAAc;;;EAIpC,MAAAC;IACE,OACEC,EAACC,GAAI;MAAAC,KAAA;MAAA,iBAAgB1C,KAAKI,WAAW,SAAS;MAAMuC,MAAK;OACvDH,EACE;MAAAE,KAAA;MAAAE,MAAK;MACO,cAAA5C,KAAKkC,UAAU,WAAWlC,KAAK6C,YAAY;MACzC,gBAAA7C,KAAK8C;MACnBC,OAAO/C,KAAK2B;MACZnB,MAAMR,KAAKQ;MACXwC,IAAIhD,KAAKC;MACTG,UAAUJ,KAAKI;MACf6C,OAAOjD,KAAKiD;MACZC,SAASlD,KAAKO;OAEdiC,EAAa;MAAAE,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOvB,IAAIxC,IAAW","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["textareaCss","Textarea","constructor","hostRef","this","customId","textareaId","disabled","maxlength","showCounter","density","isInline","handleInput","event","value","target","currentLength","length","valueChange","emit","componentWillLoad","valueChanged","setValue","newValue","getCssClassMap","small","medium","large","success","state","danger","warning","render","caracteresRestantes","mostrarLimite","h","Host","key","class","htmlFor","label","id","placeholder","onInput","maxLength","role"],"sources":["../../packages/webcomponents/src/components/textarea/textarea.scss?tag=br-textarea&encapsulation=shadow","../../packages/webcomponents/src/components/textarea/textarea.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/textarea/textarea\";\n\n:host {\n display: inline-block;\n box-sizing: border-box;\n font-family: Rawline, Raleway, sans-serif;\n}\n","import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/textarea?tab=designer).\n *\n * @slot default - Espaço de conteúdo do textarea. Geralmente usado para incluir texto adicional ou instruções para o usuário.\n */\n@Component({\n tag: 'br-textarea',\n styleUrl: 'textarea.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Textarea {\n @Element() el: HTMLBrTextareaElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Valor exibido no textarea.\n * Pode ser alterado pelo usuário se a propriedade `readonly` não estiver ativa.\n */\n @Prop({ mutable: true, reflect: true }) value: string\n\n /**\n * Texto exibido como rótulo do input.\n */\n @Prop({ reflect: true }) readonly label: string\n\n /**\n * Texto exibido dentro do input quando está vazio, fornecendo uma dica ou sugestão ao usuário.\n */\n @Prop({ reflect: true }) readonly placeholder: string\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = `br-textarea-${textareaId++}`\n\n /**\n * Indica se o textarea está desabilitado. Quando verdadeiro, o usuário não pode interagir com o campo.\n */\n @Prop({ reflect: true }) readonly disabled: boolean = false\n\n /**\n * Número máximo de caracteres permitidos no textarea. Se definido como 0, não há limite.\n */\n @Prop({ reflect: true }) readonly maxlength: number = 0\n\n /**\n * Mostra o contador com a quantidade máxima de caracteres.\n */\n @Prop({ reflect: true }) readonly showCounter: boolean = false\n\n /**\n * Define o estado visual do componente, podendo ser 'danger', 'success' ou 'warning'.\n */\n @Prop({ reflect: true }) readonly state: 'danger' | 'success' | 'warning'\n /**\n * Ajusta a densidade do componente, podendo ser 'small', 'medium' ou 'large'.\n */\n @Prop({ reflect: true }) readonly density: 'small' | 'medium' | 'large' = 'medium'\n\n /**\n * Se verdadeiro, o rótulo e o input estarão na mesma linha (layout inline).\n */\n @Prop({ reflect: true }) readonly isInline: boolean = false\n\n /**\n * Comprimento atual do texto no textarea. É atualizado sempre que o valor do textarea muda.\n */\n @State() currentLength: number\n\n componentWillLoad() {\n this.currentLength = this.value?.length\n }\n\n /**\n * Valor atualizado do textarea\n */\n @Event() valueChange: EventEmitter<string>\n\n @Watch('value')\n valueChanged() {\n this.currentLength = this.value?.length\n }\n\n private readonly handleInput = (event: Event) => {\n this.value = (event.target as HTMLInputElement).value\n this.currentLength = this.value?.length\n this.valueChange.emit(this.value)\n }\n\n /**\n * Define um novo valor para o textarea.\n * @param newValue - O novo valor a ser definido.\n */\n @Method()\n async setValue(newValue: string) {\n this.value = newValue\n this.currentLength = this.value?.length\n this.valueChange.emit(this.value)\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-textarea': true,\n small: this.density === 'small',\n medium: this.density === 'medium',\n large: this.density === 'large',\n success: this.state === 'success',\n danger: this.state === 'danger',\n warning: this.state === 'warning',\n }\n }\n\n render() {\n const caracteresRestantes: number = this.maxlength - this.currentLength\n const mostrarLimite = this.currentLength > 0\n\n return (\n <Host>\n <div class={this.getCssClassMap()}>\n <div class={this.isInline ? 'row' : ''}>\n {this.isInline ? (\n <div class=\"col-auto pt-half\">\n <label htmlFor={this.customId}>{this.label}</label>\n </div>\n ) : (\n <label htmlFor={this.customId}>{this.label}</label>\n )}\n <div class={this.isInline ? 'col' : ''}>\n <textarea\n id={this.customId}\n value={this.value}\n placeholder={this.placeholder}\n disabled={this.disabled}\n onInput={this.handleInput}\n {...(this.maxlength > 0 ? { maxLength: this.maxlength } : {})}\n ></textarea>\n <div class=\"text-base mt-1\">\n {this.showCounter && (\n <div>\n {mostrarLimite ? (\n <span class=\"restantes\" aria-live=\"polite\" role=\"status\" id=\"limitMax\">\n Restam <strong>{caracteresRestantes}</strong> caracteres\n </span>\n ) : (\n <span class=\"limit\" aria-live=\"polite\">\n Limite máximo de <strong>{this.maxlength}</strong> caracteres\n </span>\n )}\n </div>\n )}\n </div>\n <slot></slot>\n </div>\n </div>\n </div>\n </Host>\n )\n }\n}\n\nlet textareaId = 0\n"],"mappings":";;;;;;AAAA,MAAMA,IAAc;;MC2BPC,IAAQ;EANrB,WAAAC,CAAAC;;;;;;;;;;;;eA+BoCC,KAAAC,WAAmB,eAAeC;;;;IAKlCF,KAAQG,WAAY;;;eAKpBH,KAASI,YAAW;;;eAKpBJ,KAAWK,cAAY;;;eASvBL,KAAOM,UAAiC;;;eAKxCN,KAAQO,WAAY;IAqBrCP,KAAAQ,cAAeC;MAC9BT,KAAKU,QAASD,EAAME,OAA4BD;MAChDV,KAAKY,gBAAgBZ,KAAKU,OAAOG;MACjCb,KAAKc,YAAYC,KAAKf,KAAKU;AAAM;AAwEpC;EAzFC,iBAAAM;IACEhB,KAAKY,gBAAgBZ,KAAKU,OAAOG;;EASnC,YAAAI;IACEjB,KAAKY,gBAAgBZ,KAAKU,OAAOG;;;;;SAcnC,cAAMK,CAASC;IACbnB,KAAKU,QAAQS;IACbnB,KAAKY,gBAAgBZ,KAAKU,OAAOG;IACjCb,KAAKc,YAAYC,KAAKf,KAAKU;;EAGrB,cAAAU;IACN,OAAO;MACL,eAAe;MACfC,OAAOrB,KAAKM,YAAY;MACxBgB,QAAQtB,KAAKM,YAAY;MACzBiB,OAAOvB,KAAKM,YAAY;MACxBkB,SAASxB,KAAKyB,UAAU;MACxBC,QAAQ1B,KAAKyB,UAAU;MACvBE,SAAS3B,KAAKyB,UAAU;;;EAI5B,MAAAG;IACE,MAAMC,IAA8B7B,KAAKI,YAAYJ,KAAKY;IAC1D,MAAMkB,IAAgB9B,KAAKY,gBAAgB;IAE3C,OACEmB,EAACC,GAAI;MAAAC,KAAA;OACHF,EAAA;MAAAE,KAAA;MAAKC,OAAOlC,KAAKoB;OACfW,EAAA;MAAAE,KAAA;MAAKC,OAAOlC,KAAKO,WAAW,QAAQ;OACjCP,KAAKO,WACJwB,EAAA;MAAKG,OAAM;OACTH,EAAO;MAAAI,SAASnC,KAAKC;OAAWD,KAAKoC,UAGvCL,EAAA;MAAOI,SAASnC,KAAKC;OAAWD,KAAKoC,QAEvCL,EAAA;MAAAE,KAAA;MAAKC,OAAOlC,KAAKO,WAAW,QAAQ;OAClCwB,EACE;MAAAE,KAAA;MAAAI,IAAIrC,KAAKC;MACTS,OAAOV,KAAKU;MACZ4B,aAAatC,KAAKsC;MAClBnC,UAAUH,KAAKG;MACfoC,SAASvC,KAAKQ;SACTR,KAAKI,YAAY,IAAI;QAAEoC,WAAWxC,KAAKI;UAAc;QAE5D2B,EAAA;MAAAE,KAAA;MAAKC,OAAM;OACRlC,KAAKK,eACJ0B,EAAA;MAAAE,KAAA;OACGH,IACCC,EAAA;MAAMG,OAAM;MAAW,aAAW;MAASO,MAAK;MAASJ,IAAG;OAAU,WAC7DN,EAAA,gBAASF,IAA6B,iBAG/CE,EAAA;MAAMG,OAAM;MAAO,aAAW;OAAQ,qBACnBH,EAAS,gBAAA/B,KAAKI,YAAmB,kBAM5D2B,EAAA;MAAAE,KAAA;;;;;;;;;;;;;;;;AASd,IAAI/B,IAAa","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["tagCss","DENSITY_SMALL","DENSITY_MEDIUM","DENSITY_LARGE","SHAPE_CIRCLE","SHAPE_ROUNDED","SHAPE_DEFAULT","Tag","constructor","hostRef","this","label","iconName","name","multiple","selected","customId","tagId","color","density","shape","status","interaction","interactionSelect","disabled","selectedClassValue","handleClose","el","remove","handleChangeValueChecked","radioSelected","emit","handleChangeRadioValue","event","target","checked","handleInteractionChange","newValue","console","warn","handleInteractionSelectChange","componentWillLoad","connectedCallback","handleSelectedChange","getCssClassMap","count","icon","renderIcon","trim","h","renderLabel","renderCloseButton","type","emphasis","onClick","renderStatusLabel","class","handleCheckedChange","detail","render","mainTagContent","key","id","Host","style","display","alignItems","value","htmlFor"],"sources":["../../packages/webcomponents/src/components/tag/tag.scss?tag=br-tag&encapsulation=shadow","../../packages/webcomponents/src/components/tag/tag.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/checkbox/checkbox\";\n@import \"~@govbr-ds/core/src/components/input/input\";\n@import \"~@govbr-ds/core/src/components/tag/tag\";\n\n:host {\n display: inline-block;\n\n .tag-position {\n display: flex;\n justify-content: space-around;\n align-items: center;\n }\n\n .tag-spacing-status {\n margin-left: var(--spacing-scale-half) !important;\n }\n}\n\n.br-tag {\n &:not(.icon) {\n br-icon {\n margin-right: var(--spacing-scale-base);\n }\n }\n}\n","import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Prop,\n State,\n Watch,\n} from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/tag?tab=designer).\n *\n * @slot default - Espaço de conteúdo do tag. Geralmente usado para incluir o rótulo ou um ícone.\n */\n\n// Constantes para valores fixos\nconst DENSITY_SMALL = 'small'\nconst DENSITY_MEDIUM = 'medium'\nconst DENSITY_LARGE = 'large'\n\nconst SHAPE_CIRCLE = 'circle'\nconst SHAPE_ROUNDED = 'rounded'\nconst SHAPE_DEFAULT = 'default'\n\n@Component({\n tag: 'br-tag',\n styleUrl: 'tag.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Tag {\n /**\n * Referência ao elemento host do componente.\n * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.\n */\n @Element() el: HTMLBrTagElement\n\n /** API de controle de formulário nativa */\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * A propriedade 'label' é uma string que representa o texto a ser exibido no componente.\n * Ela é refletida no DOM, permitindo que alterações no valor sejam refletidas no elemento HTML correspondente.\n */\n @Prop({ reflect: true }) readonly label: string = ''\n\n /**\n * A propriedade 'iconName' define o nome do ícone que será exibido ao lado do texto.\n * O valor padrão é 'fa-solid:car', que corresponde a um ícone de carro da biblioteca Font Awesome.\n */\n @Prop({ reflect: true }) readonly iconName: string = ''\n\n /**\n * A propriedade 'name' é uma string que representa o nome do grupo da tag para seleção.\n * Ela é refletida no DOM, permitindo que alterações no valor sejam refletidas no elemento HTML correspondente.\n */\n @Prop({ reflect: true }) readonly name: string = ''\n\n /**\n * A tag permite seleção múltipla.\n * */\n @Prop({ reflect: true }) readonly multiple: boolean = false\n\n /**\n * A tag está selecionada.\n * */\n @Prop({ reflect: true, mutable: true }) selected: boolean = false\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = `br-tag-${tagId++}`\n\n /**\n * A propriedade 'color' permite definir a cor do componente.\n * Aceita valores como 'red', 'blue', entre outros, e é refletida no DOM.\n */\n @Prop({ reflect: true }) readonly color: string = ''\n\n /**\n * A propriedade 'density' permite definir a densidade do componente.\n * Aceita valores como 'small', 'medium' e 'large', e é refletida no DOM.\n */\n @Prop({ reflect: true }) readonly density: 'small' | 'medium' | 'large' = DENSITY_SMALL\n\n /**\n * A propriedade 'shape' define o formato do componente.\n * Valores possíveis:\n * - 'circle': Componente com formato circular.\n * - 'rounded': Componente com bordas arredondadas.\n * - 'default': Componente com formato padrão.\n */\n @Prop({ reflect: true }) readonly shape: 'circle' | 'rounded' | 'default' = SHAPE_DEFAULT\n\n /**\n * Status deve ser exibido.\n */\n @Prop({ reflect: true }) readonly status: boolean = false\n\n /**\n * Interação deve ser habilitada.\n */\n @Prop({ reflect: true, mutable: true }) interaction: boolean = false\n\n /**\n * Interação de seleção deve ser habilitada.\n * */\n @Prop({ reflect: true }) interactionSelect: boolean = false\n\n /**\n * Tag deve estar desabilitado.\n */\n @Prop({ reflect: true }) readonly disabled: boolean = false\n\n /**\n * Tag está selecionada.\n */\n @State() selectedClassValue: boolean = false\n\n /**\n * Evento emitido quando a tag é selecionada.\n */\n @Event() radioSelected: EventEmitter<string>\n\n @Watch('interaction')\n handleInteractionChange(newValue: boolean) {\n if (newValue && this.interactionSelect) {\n console.warn(\n \"Aviso: 'interaction' e 'interactionSelect' não podem ser usados ao mesmo tempo. Alterando o 'interaction' para 'false'.\"\n )\n this.interaction = false\n }\n }\n\n @Watch('interactionSelect')\n handleInteractionSelectChange(newValue: boolean) {\n if (newValue && this.interaction) {\n console.warn(\n \"Aviso: 'interaction' e 'interactionSelect' não podem ser usados ao mesmo tempo. Alterando o 'interaction' para 'false'.\"\n )\n this.interaction = false\n }\n }\n\n componentWillLoad() {\n if (this.interaction && this.interactionSelect) {\n console.warn(\n \"Aviso: 'interaction' e 'interactionSelect' não podem ser usados ao mesmo tempo. Alterando o 'interaction' para 'false'.\"\n )\n this.interaction = false\n }\n }\n connectedCallback() {\n this.selectedClassValue = this.selected\n }\n\n @Watch('selected')\n handleSelectedChange(newValue: boolean) {\n this.selectedClassValue = newValue\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-tag': true,\n interaction: this.interaction,\n 'interaction-select': this.interactionSelect,\n selected: this.selectedClassValue,\n [this.color]: !!this.color,\n [DENSITY_SMALL]: this.density === DENSITY_SMALL,\n [DENSITY_MEDIUM]: this.density === DENSITY_MEDIUM,\n [DENSITY_LARGE]: this.density === DENSITY_LARGE,\n count: this.shape === SHAPE_ROUNDED,\n icon: this.shape === SHAPE_CIRCLE,\n status: this.status,\n }\n }\n\n private renderIcon() {\n return this.iconName && this.iconName.trim() !== '' ? (\n <br-icon icon-name={this.iconName} aria-hidden=\"true\" />\n ) : null\n }\n\n private renderLabel() {\n return this.shape !== SHAPE_CIRCLE && !this.status ? <span>{this.label}</span> : null\n }\n\n private renderCloseButton() {\n if (!this.interaction) return null\n return (\n <br-button\n type=\"button\"\n shape=\"circle\"\n emphasis=\"primary\"\n aria-label=\"Fechar\"\n onClick={this.handleClose}\n disabled={this.disabled}\n >\n <br-icon icon-name=\"fa-solid:times\"></br-icon>\n </br-button>\n )\n }\n\n private renderStatusLabel() {\n return this.status ? <span class=\"tag-spacing-status\">{this.label}</span> : null\n }\n\n private handleClose = () => {\n this.el.remove()\n }\n\n private handleChangeValueChecked = () => {\n if (!this.multiple) {\n this.radioSelected.emit(this.name)\n }\n this.selected = !this.selected\n }\n\n private handleChangeRadioValue = (event: MouseEvent) => {\n if (!this.multiple) {\n this.radioSelected.emit(this.name)\n this.selected = (event.target as HTMLInputElement).checked\n }\n }\n\n @Listen('radioSelected', { target: 'document' })\n handleCheckedChange(event: CustomEvent) {\n if (event.detail === this.name && this.el !== event.target) {\n this.selected = false\n }\n }\n\n render() {\n const mainTagContent = (\n <span class={this.getCssClassMap()} id={this.customId}>\n {this.renderIcon()}\n {this.renderLabel()}\n {this.renderCloseButton()}\n <slot></slot>\n </span>\n )\n\n return (\n <Host>\n {!this.status ? (\n mainTagContent\n ) : (\n <div style={{ display: 'flex', alignItems: 'center' }}>\n {mainTagContent}\n {this.renderStatusLabel()}\n </div>\n )}\n\n {this.interactionSelect && (\n <span class={this.getCssClassMap()} id={this.customId}>\n {this.multiple ? (\n <input\n id={this.label}\n type=\"checkbox\"\n name={this.name}\n value={this.label}\n checked={this.selected}\n onClick={this.handleChangeValueChecked}\n disabled={this.disabled}\n />\n ) : (\n <input\n id={this.label}\n type=\"radio\"\n name={this.name}\n value={this.label}\n checked={this.selected}\n onClick={this.handleChangeRadioValue}\n disabled={this.disabled}\n />\n )}\n <label htmlFor={this.label}>\n {this.renderIcon()}\n <span>{this.label}</span>\n </label>\n </span>\n )}\n </Host>\n )\n }\n}\n\nlet tagId = 0\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["uploadCss","UploadState","Upload","constructor","hostRef","this","accept","label","filesSelected","file","disabled","state","INFO","multiple","handleInputChange","event","target","onInputChange","files","getCssClassMap","handleRemoveFileSelection","newArrayFilter","Array","from","filter","f","fileInput","el","shadowRoot","getElementById","value","renderFilesUploaded","fileSizes","_calculateFileSize","map","size","h","class","key","name","shape","type","onClick","length","console","error","sOutput","aMultiples","nMultiple","nApprox","toFixed","handleDrop","preventDefault","dataTransfer","handleDragOver","handleFileSelection","click","render","Host","form","tabIndex","onDrop","onDragOver","height","id","onChange"],"sources":["../../packages/webcomponents/src/components/upload/upload.scss?tag=br-upload&encapsulation=shadow","../../packages/webcomponents/src/components/upload/upload.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/upload/upload\";\n\n:host {\n display: block;\n}\n\n.br-upload {\n br-icon {\n margin-right: var(--spacing-scale-base);\n }\n}\n","import { AttachInternals, Component, Element, h, Host, Prop, State } from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\nenum UploadState {\n INFO = 'info',\n WARNING = 'warning',\n DANGER = 'danger',\n SUCCESS = 'success',\n}\n\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/upload?tab=designer).\n *\n * @slot default - Descrição do slot\n */\n@Component({\n tag: 'br-upload',\n styleUrl: 'upload.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Upload {\n /**\n * Referência ao elemento host do componente.\n * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.\n */\n @Element() el!: HTMLBrUploadElement\n\n /**\n * Tipos de arquivo permitidos (ex: 'image/*').\n * Esta propriedade define quais tipos de arquivos podem ser selecionados para upload.\n */\n @Prop() accept: string = ''\n\n /**\n * Texto descritivo do campo de upload.\n * Este é o texto que é mostrado no label do textarea.\n */\n @Prop() label: string = 'Envio de arquivo'\n\n /**\n * Evento emitido quando um arquivo é selecionado.\n * Este estado armazena os arquivos que foram selecionados pelo usuário.\n */\n @State() filesSelected: FileList | null = null\n\n /**\n * Referência ao elemento de arquivo selecionado.\n * Este estado armazena o arquivo que foi selecionado para upload.\n */\n @State() file: File | null = null\n\n /**\n * Indica se o componente está desativado.\n * Quando definido como `true`, o campo de upload se torna não interativo,\n * impedindo que o usuário selecione ou envie arquivos.\n * Isso é útil para controlar a interação do usuário em situações específicas,\n * como durante o carregamento de dados ou quando o formulário está em um estado inválido.\n */\n @Prop({ reflect: true }) disabled: boolean = false\n\n /**\n * Define o estado visual da mensagem.\n * Os possíveis valores são:\n * - 'info': Mensagem informativa.\n * - 'warning': Mensagem de aviso.\n * - 'danger': Mensagem de erro ou alerta.\n * - 'success': Mensagem de sucesso.\n * O valor padrão é 'info'.\n */\n @Prop({ reflect: true }) state: string = UploadState.INFO\n\n /**\n * Indica se o componente permite a seleção de múltiplos arquivos.\n * Quando definido como `true`, o usuário pode selecionar mais de um arquivo para upload.\n */\n @Prop() multiple: boolean = false\n\n @AttachInternals() elementInternals: ElementInternals\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-upload': true,\n [this.state]: true,\n }\n }\n\n private handleRemoveFileSelection(file: File) {\n const newArrayFilter = Array.from(this.filesSelected).filter((f) => f !== file)\n this.filesSelected = newArrayFilter as unknown as FileList\n const fileInput = this.el.shadowRoot.getElementById('single-file') as HTMLInputElement\n fileInput.value = ''\n }\n\n private renderFilesUploaded() {\n const fileSizes = this._calculateFileSize(this.filesSelected)\n\n return fileSizes.map(({ file, size }) => {\n return (\n <div class=\"br-item d-flex\" key={file.name}>\n <div class=\"content text-primary-default mr-auto\">{file.name}</div>\n <div class=\"support mr-n2\">\n <span class=\"\">{size}</span>\n <br-button\n shape=\"circle\"\n type=\"button\"\n aria-label=\"Remover arquivo\"\n onClick={() => this.handleRemoveFileSelection(file)}\n >\n <br-icon icon-name=\"fa-solid:trash\" aria-hidden=\"true\"></br-icon>\n </br-button>\n </div>\n </div>\n )\n })\n }\n\n private onInputChange(files: FileList) {\n if (files.length === 1) {\n this.filesSelected = files\n } else if (files.length > 0) {\n this.filesSelected = files\n } else {\n console.error(files.length === 0 ? 'NENHUM ARQUIVO ENVIADO' : 'VOCÊ SÓ PODE ENVIAR UM ARQUIVO POR VEZ')\n\n return false\n }\n }\n\n private _calculateFileSize(files: FileList) {\n return Array.from(files).map((file) => {\n let sOutput = ''\n const aMultiples = ['KB', 'MB', 'GB', 'TB']\n let nMultiple = 0\n let nApprox = file.size / 1024\n\n if (nApprox < 1) {\n sOutput = `${file.size} bytes`\n } else {\n while (nApprox > 1 && nMultiple < aMultiples.length) {\n sOutput = `${nApprox.toFixed(2)} ${aMultiples[nMultiple]}`\n nApprox /= 1024\n nMultiple++\n }\n }\n\n return { file: file, size: sOutput || 0 }\n })\n }\n\n private handleDrop(event: DragEvent) {\n event.preventDefault()\n const files = event.dataTransfer?.files\n if (files && files.length > 0) {\n this.onInputChange(files)\n }\n }\n\n private handleDragOver(event: DragEvent) {\n event.preventDefault()\n }\n\n private handleFileSelection() {\n const fileInput = this.el.shadowRoot.getElementById('single-file') as HTMLInputElement\n fileInput.click()\n }\n\n private readonly handleInputChange = (event: Event) => {\n const target = event.target as HTMLInputElement\n this.onInputChange(target.files)\n }\n\n render() {\n return (\n <Host>\n <div class={this.getCssClassMap()}>\n <label class=\"upload-label\" form=\"single-file\">\n <span>{this.label}</span>\n </label>\n <button\n class=\"upload-button\"\n type=\"button\"\n tabIndex={this.disabled ? -1 : 0}\n disabled={this.disabled}\n aria-label=\"Selecionar arquivo para upload\"\n onClick={() => this.handleFileSelection()}\n onDrop={(event) => this.handleDrop(event)}\n onDragOver={(event) => this.handleDragOver(event)}\n >\n <br-icon icon-name=\"fa-solid:upload\" height=\"16\" aria-hidden=\"true\"></br-icon>\n <span>Selecione o arquivo</span>\n </button>\n\n <input\n class=\"upload-input\"\n id=\"single-file\"\n type=\"file\"\n aria-label=\"enviar arquivo\"\n onChange={this.handleInputChange}\n multiple={this.multiple}\n disabled={this.disabled}\n accept={this.accept}\n />\n <div id=\"list-files\" class=\"upload-list\">\n {this.filesSelected ? this.renderFilesUploaded() : null}\n </div>\n </div>\n </Host>\n )\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["switchCss","Switch","constructor","hostRef","this","disabled","checked","customId","switchId","labelPosition","hasIcon","density","_slotDefault","handleCheckedChange","event","target","checkedChange","emit","handleClick","stopPropagation","componentWillLoad","_hasSlotContentDefault","el","innerHTML","toggleChecked","getCssClassMap","icon","top","right","large","small","render","h","Host","key","class","id","type","name","role","toString","onChange","onClick","htmlFor","label","labelOn","labelOff"],"sources":["../../packages/webcomponents/src/components/switch/switch.scss?tag=br-switch&encapsulation=shadow","../../packages/webcomponents/src/components/switch/switch.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/switch/switch\";\n\n:host {\n display: inline-block;\n}\n","import { AttachInternals, Component, Element, Event, EventEmitter, h, Host, Method, Prop, State } from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/switch?tab=designer).\n *\n * @slot default - Descreve o que o switch faz quando a alternância estiver ativada. A label passada por slot tem precedência sobre a propriedade 'label'.\n */\n@Component({\n tag: 'br-switch',\n styleUrl: 'switch.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Switch {\n /**\n * Referência ao elemento host do componente.\n * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.\n */\n @Element() el: HTMLBrSwitchElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Desativa o switch, tornando-o não interativo.\n */\n @Prop({ reflect: true }) readonly disabled: boolean = false\n\n /**\n * Define o estado de seleção do checkbox.\n * Se definido como verdadeiro, o checkbox estará marcado. Caso contrário, estará desmarcado.\n */\n @Prop({ reflect: true, mutable: true }) checked: boolean = false\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = `br-switch-${switchId++}`\n\n /**\n * Texto descritivo.\n * Caso um slot seja utilizado para fornecer um texto alternativo, o valor desta propriedade será ignorado.\n */\n @Prop() readonly label: string\n\n /**\n * Posição do rótulo em relação ao switch.\n */\n @Prop({ reflect: true }) readonly labelPosition: 'right' | 'left' | 'top' = 'left'\n\n /**\n * Texto exibido quando o switch está ativado.\n */\n @Prop({ reflect: true }) readonly labelOn: string\n\n /**\n * Texto exibido quando o switch está desativado.\n */\n @Prop({ reflect: true }) readonly labelOff: string\n\n /**\n * Adiciona um ícone ao switch para indicar a mudança de estado.\n */\n @Prop({ reflect: true }) readonly hasIcon: boolean = false\n\n /**\n * Define o nome do switch, que é utilizado para agrupar switches em formulários e identificar o campo.\n * O valor é obrigatório e deve ser fornecido para garantir o correto funcionamento em formulários.\n */\n @Prop({ reflect: true }) readonly name: string\n\n /**\n * Define o valor associado ao switch quando ele faz parte de um formulário nativo (`<form>`).\n * Esse valor é enviado com o formulário quando o switch está selecionado.\n * **Nota:** Esta propriedade não deve ser utilizada para determinar se o switch está selecionado; para verificar o estado de seleção, use a propriedade `checked`.\n */\n @Prop({ reflect: true }) readonly value: string\n\n /** O ajuste da densidade consiste em aumentar ou reduzir a área de interação do switch. Quanto menor for a densidade, maior a área de interação. */\n @Prop({ reflect: true }) readonly density: 'large' | 'medium' | 'small' = 'medium'\n\n // Propriedade interna para verificar a presença de conteúdo no slot default\n @State() _slotDefault: boolean = false\n\n componentWillLoad() {\n this._hasSlotContentDefault()\n }\n\n /**\n * Disparado depois que o valor do `checked` foi alterado\n */\n\n /**\n * Disparado depois que o valor do `checked` foi alterado\n */\n @Event() checkedChange: EventEmitter<boolean>\n private _hasSlotContentDefault(): void {\n this._slotDefault = this.el.innerHTML !== ''\n }\n\n private readonly handleCheckedChange = (event: Event) => {\n this.checked = (event.target as HTMLInputElement).checked\n this.checkedChange.emit(this.checked)\n }\n\n private readonly handleClick = (event: Event) => {\n event.stopPropagation()\n }\n\n /**\n * Inverte o valor da prop `checked`\n */\n @Method()\n async toggleChecked() {\n this.checked = !this.checked\n this.checkedChange.emit(this.checked)\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-switch': true,\n icon: this.hasIcon,\n top: this.labelPosition === 'top',\n right: this.labelPosition === 'right',\n large: this.density === 'large',\n small: this.density === 'small',\n }\n }\n\n render() {\n return (\n <Host>\n <div class={this.getCssClassMap()}>\n <input\n id={this.customId}\n type=\"checkbox\"\n name={this.name}\n checked={this.checked}\n disabled={this.disabled}\n role=\"switch\"\n aria-checked={this.checked.toString()}\n aria-disabled={this.disabled ? 'true' : null}\n onChange={this.handleCheckedChange}\n onClick={this.handleClick}\n />\n <label htmlFor={this.customId}>{this._slotDefault ? <slot></slot> : this.label}</label>\n {this.labelOn && this.labelOff && (\n <div class=\"switch-data\" data-enabled={this.labelOn} data-disabled={this.labelOff}></div>\n )}\n </div>\n </Host>\n )\n }\n}\n\nlet switchId = 0\n"],"mappings":";;;;;;AAAA,MAAMA,IAAY;;MCeLC,IAAM;EANnB,WAAAC,CAAAC;;;;;;;;;;;eAkBoCC,KAAQC,WAAY;;;;eAMdD,KAAOE,UAAY;;;;eAMzBF,KAAAG,WAAmB,aAAaC;;;;IAWhCJ,KAAaK,gBAA6B;;;eAe1CL,KAAOM,UAAY;4JAgBnBN,KAAOO,UAAiC;;QAGjEP,KAAYQ,eAAY;IAkBhBR,KAAAS,sBAAuBC;MACtCV,KAAKE,UAAWQ,EAAMC,OAA4BT;MAClDF,KAAKY,cAAcC,KAAKb,KAAKE;AAAQ;IAGtBF,KAAAc,cAAeJ;MAC9BA,EAAMK;AAAiB;AA+C1B;EArEC,iBAAAC;IACEhB,KAAKiB;;EAWC,sBAAAA;IACNjB,KAAKQ,eAAeR,KAAKkB,GAAGC,cAAc;;;;SAgB5C,mBAAMC;IACJpB,KAAKE,WAAWF,KAAKE;IACrBF,KAAKY,cAAcC,KAAKb,KAAKE;;EAGvB,cAAAmB;IACN,OAAO;MACL,aAAa;MACbC,MAAMtB,KAAKM;MACXiB,KAAKvB,KAAKK,kBAAkB;MAC5BmB,OAAOxB,KAAKK,kBAAkB;MAC9BoB,OAAOzB,KAAKO,YAAY;MACxBmB,OAAO1B,KAAKO,YAAY;;;EAI5B,MAAAoB;IACE,OACEC,EAACC,GAAI;MAAAC,KAAA;OACHF,EAAA;MAAAE,KAAA;MAAKC,OAAO/B,KAAKqB;OACfO,EAAA;MAAAE,KAAA;MACEE,IAAIhC,KAAKG;MACT8B,MAAK;MACLC,MAAMlC,KAAKkC;MACXhC,SAASF,KAAKE;MACdD,UAAUD,KAAKC;MACfkC,MAAK;MACS,gBAAAnC,KAAKE,QAAQkC;MAAU,iBACtBpC,KAAKC,WAAW,SAAS;MACxCoC,UAAUrC,KAAKS;MACf6B,SAAStC,KAAKc;QAEhBc,EAAA;MAAAE,KAAA;MAAOS,SAASvC,KAAKG;OAAWH,KAAKQ,eAAeoB,EAAA,gBAAgB5B,KAAKwC,QACxExC,KAAKyC,WAAWzC,KAAK0C,YACpBd,EAAK;MAAAE,KAAA;MAAAC,OAAM;MAAa,gBAAe/B,KAAKyC;MAAO,iBAAiBzC,KAAK0C;;;;;;;;;;;AAQrF,IAAItC,IAAW","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["avatarCss","Avatar","constructor","hostRef","this","density","customId","avatarId","alt","isIconic","disabled","hasError","handleImageError","console","error","src","handleDensityChange","newValue","includes","warn","el","setAttribute","componentWillLoad","setCustomBackgroundColor","componentDidUpdate","getCssClassMap","hasContent","value","trim","length","getContentClasses","text","textBackgroundColor","style","setProperty","getAriaLabel","hostAriaLabel","getAttribute","getIconSize","tokenName","getComputedStyle","getPropertyValue","getIconWidth","baseSize","numericValue","parseInt","replace","renderTextAvatar","toUpperCase","renderImageAvatar","h","loading","onError","renderIconAvatar","height","width","class","renderAvatar","render","Host","key","id"],"sources":["../../packages/webcomponents/src/components/avatar/avatar.scss?tag=br-avatar&encapsulation=shadow","../../packages/webcomponents/src/components/avatar/avatar.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/avatar/avatar\";\n\n:host {\n display: inline-block;\n --avatar-text-background-color: var(--blue-10);\n}\n\n.br-avatar .content.text-pure-0 {\n background-color: var(--avatar-text-background-color) !important;\n}\n\n.avatar-icon {\n margin-top: 0.39em;\n}\n","import { Component, Element, h, Host, Prop, State, Watch } from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/avatar?tab=designer).\n */\n@Component({\n tag: 'br-avatar',\n styleUrl: 'avatar.scss',\n shadow: true,\n})\nexport class Avatar {\n /**\n * Referência ao elemento host do componente.\n * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.\n */\n @Element() el: HTMLBrAvatarElement\n\n /**\n * Ajusta a densidade, alterando o espaçamento interno para um visual mais compacto ou mais expandido.\n */\n @Prop({ mutable: true }) density: 'small' | 'medium' | 'large' = 'medium'\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = `br-avatar-${avatarId++}`\n\n /**\n * URL da imagem a ser exibida no avatar do tipo 'fotográfico'.\n * Deve ser uma URL válida que aponta para a imagem desejada.\n */\n @Prop() readonly src: string\n\n /**\n * Texto alternativo (alt) associado à imagem do avatar. Essencial para acessibilidade.\n * Deve descrever de forma clara e concisa o conteúdo da imagem, por exemplo: \"Foto de perfil de João Silva\".\n */\n @Prop() readonly alt = 'Foto de perfil do usuário'\n\n /**\n * Força a exibição do ícone padrão, sobrescreve outras opções (texto ou imagem).\n * Útil para manter consistência visual ou quando se deseja um avatar neutro independente do conteúdo disponível.\n */\n @Prop() readonly isIconic: boolean = false\n\n /**\n * Conteúdo textual do avatar.\n * Apenas o primeiro caractere será exibido em maiúscula.\n */\n @Prop() readonly text: string\n\n /**\n * Define se o avatar está desabilitado\n */\n @Prop() readonly disabled = false\n\n /**\n * Cor de fundo personalizada para o avatar do tipo texto\n */\n @Prop() readonly textBackgroundColor: string\n\n @State() private hasError = false\n\n /**\n * Observa mudanças na propriedade density para validação e sincronização com atributo DOM.\n * Garante que apenas valores válidos sejam aceitos e atualiza o atributo no elemento host.\n */\n @Watch('density')\n handleDensityChange(newValue: 'small' | 'medium' | 'large') {\n if (!['small', 'medium', 'large'].includes(newValue)) {\n console.warn(`Valor inválido para density: ${newValue}. Usando 'medium'.`)\n this.density = 'medium'\n }\n this.el.setAttribute('density', this.density)\n }\n\n componentWillLoad() {\n this.handleDensityChange(this.density)\n this.setCustomBackgroundColor()\n }\n\n componentDidUpdate() {\n this.setCustomBackgroundColor()\n }\n\n /**\n * Gera um mapa de classes CSS com base nas propriedades do componente.\n * @returns {CssClassMap} Objeto contendo as classes CSS aplicadas.\n */\n private getCssClassMap(): CssClassMap {\n return {\n 'br-avatar': true,\n [this.density]: true,\n error: this.hasError,\n disabled: this.disabled,\n }\n }\n\n /**\n * Verifica se uma string possui conteúdo válido (não vazia após remover espaços em branco).\n * @param value - String a ser verificada\n * @returns {boolean} true se a string possui conteúdo\n */\n private hasContent(value: string): boolean {\n return value?.trim().length > 0\n }\n\n private readonly handleImageError = () => {\n this.hasError = true\n console.error(`Erro ao carregar imagem do avatar: ${this.src}`)\n }\n\n /**\n * Obtém as classes CSS para o elemento content.\n * @returns {string} Classes CSS do content\n */\n private getContentClasses(): string {\n if (this.hasContent(this.text) && !this.isIconic) {\n return 'content text-pure-0'\n }\n return 'content'\n }\n\n /**\n * Define a variável CSS para cor de fundo personalizada para o avatar texto.\n */\n private setCustomBackgroundColor() {\n if (this.hasContent(this.textBackgroundColor)) {\n this.el.style.setProperty('--avatar-text-background-color', this.textBackgroundColor)\n }\n }\n\n /**\n * Gera aria-label apropriado baseado no tipo de avatar\n * Prioriza aria-label do host, senão gera automaticamente\n */\n private getAriaLabel(): string {\n const hostAriaLabel = this.el.getAttribute('aria-label')\n if (this.hasContent(hostAriaLabel)) {\n return hostAriaLabel\n }\n\n if (this.hasContent(this.text) && !this.isIconic) {\n return `Avatar de ${this.text}`\n }\n\n if (this.hasContent(this.src) && !this.hasError) {\n return this.alt\n }\n\n return 'Avatar com ícone padrão de usuário'\n }\n\n /**\n * Obtém o valor do token do DS para altura do ícone\n */\n private getIconSize(): string {\n const tokenName = `--icon-size-${this.density === 'small' ? '2x' : this.density === 'medium' ? '5x' : '8x'}`\n return getComputedStyle(this.el).getPropertyValue(tokenName).trim()\n }\n\n /**\n * Obtém o valor do token do DS para largura do ícone (altura + 8px)\n */\n private getIconWidth(): string {\n const baseSize = this.getIconSize()\n const numericValue = parseInt(baseSize.replace('px', ''))\n return `${numericValue + 8}px`\n }\n\n /**\n * Renderiza o avatar do tipo 'letra/texto'.\n * Exibe a primeira letra do texto em maiúscula.\n */\n private renderTextAvatar() {\n return this.text[0].toUpperCase()\n }\n\n /**\n * Renderiza o avatar do tipo 'fotográfico/imagem'.\n * Exibe uma imagem carregada via URL.\n */\n private renderImageAvatar() {\n return <img src={this.src} alt={this.alt} loading=\"lazy\" onError={this.handleImageError} />\n }\n\n /**\n * Renderiza o avatar do tipo 'icônico'.\n * Exibe um ícone padrão (fa-solid:user) posicionado na base do avatar.\n */\n private renderIconAvatar() {\n return (\n <br-icon\n icon-name=\"fa-solid:user\"\n height={this.getIconSize()}\n width={this.getIconWidth()}\n aria-hidden=\"true\"\n class=\"avatar-icon\"\n ></br-icon>\n )\n }\n\n /**\n * Método principal de renderização do avatar.\n * Prioridade: isIconic > texto > imagem > ícone (padrão)\n */\n private renderAvatar() {\n if (this.isIconic) {\n return this.renderIconAvatar()\n }\n\n if (this.hasContent(this.text)) {\n return this.renderTextAvatar()\n }\n\n if (this.hasContent(this.src) && !this.hasError) {\n return this.renderImageAvatar()\n }\n\n return this.renderIconAvatar()\n }\n\n render() {\n return (\n <Host>\n <span id={this.customId} class={this.getCssClassMap()} aria-label={this.getAriaLabel()}>\n <span class={this.getContentClasses()}>{this.renderAvatar()}</span>\n </span>\n </Host>\n )\n }\n}\n\nlet avatarId = 0\n"],"mappings":";;;;;;AAAA,MAAMA,IAAY;;MCYLC,IAAM;EALnB,WAAAC,CAAAC;;;;eAe2BC,KAAOC,UAAiC;;;;eAM/BD,KAAAE,WAAmB,aAAaC;;;;;IAYjDH,KAAGI,MAAG;;;;eAMNJ,KAAQK,WAAY;;;eAWpBL,KAAQM,WAAG;IAOXN,KAAQO,WAAG;IA8CXP,KAAgBQ,mBAAG;MAClCR,KAAKO,WAAW;MAChBE,QAAQC,MAAM,sCAAsCV,KAAKW;AAAM;AA0HlE;;;;SAnKC,mBAAAC,CAAoBC;IAClB,KAAK,EAAC,SAAS,UAAU,UAASC,SAASD,IAAW;MACpDJ,QAAQM,KAAK,gCAAgCF;MAC7Cb,KAAKC,UAAU;;IAEjBD,KAAKgB,GAAGC,aAAa,WAAWjB,KAAKC;;EAGvC,iBAAAiB;IACElB,KAAKY,oBAAoBZ,KAAKC;IAC9BD,KAAKmB;;EAGP,kBAAAC;IACEpB,KAAKmB;;;;;SAOC,cAAAE;IACN,OAAO;MACL,aAAa;MACb,CAACrB,KAAKC,UAAU;MAChBS,OAAOV,KAAKO;MACZD,UAAUN,KAAKM;;;;;;;SASX,UAAAgB,CAAWC;IACjB,OAAOA,GAAOC,OAAOC,SAAS;;;;;SAYxB,iBAAAC;IACN,IAAI1B,KAAKsB,WAAWtB,KAAK2B,UAAU3B,KAAKK,UAAU;MAChD,OAAO;;IAET,OAAO;;;;SAMD,wBAAAc;IACN,IAAInB,KAAKsB,WAAWtB,KAAK4B,sBAAsB;MAC7C5B,KAAKgB,GAAGa,MAAMC,YAAY,kCAAkC9B,KAAK4B;;;;;;SAQ7D,YAAAG;IACN,MAAMC,IAAgBhC,KAAKgB,GAAGiB,aAAa;IAC3C,IAAIjC,KAAKsB,WAAWU,IAAgB;MAClC,OAAOA;;IAGT,IAAIhC,KAAKsB,WAAWtB,KAAK2B,UAAU3B,KAAKK,UAAU;MAChD,OAAO,aAAaL,KAAK2B;;IAG3B,IAAI3B,KAAKsB,WAAWtB,KAAKW,SAASX,KAAKO,UAAU;MAC/C,OAAOP,KAAKI;;IAGd,OAAO;;;;SAMD,WAAA8B;IACN,MAAMC,IAAY,eAAenC,KAAKC,YAAY,UAAU,OAAOD,KAAKC,YAAY,WAAW,OAAO;IACtG,OAAOmC,iBAAiBpC,KAAKgB,IAAIqB,iBAAiBF,GAAWX;;;;SAMvD,YAAAc;IACN,MAAMC,IAAWvC,KAAKkC;IACtB,MAAMM,IAAeC,SAASF,EAASG,QAAQ,MAAM;IACrD,OAAO,GAAGF,IAAe;;;;;SAOnB,gBAAAG;IACN,OAAO3C,KAAK2B,KAAK,GAAGiB;;;;;SAOd,iBAAAC;IACN,OAAOC,EAAA;MAAKnC,KAAKX,KAAKW;MAAKP,KAAKJ,KAAKI;MAAK2C,SAAQ;MAAOC,SAAShD,KAAKQ;;;;;;SAOjE,gBAAAyC;IACN,OACEH,EACY;MAAA;MACVI,QAAQlD,KAAKkC;MACbiB,OAAOnD,KAAKsC;MACA;MACZc,OAAM;;;;;;SASJ,YAAAC;IACN,IAAIrD,KAAKK,UAAU;MACjB,OAAOL,KAAKiD;;IAGd,IAAIjD,KAAKsB,WAAWtB,KAAK2B,OAAO;MAC9B,OAAO3B,KAAK2C;;IAGd,IAAI3C,KAAKsB,WAAWtB,KAAKW,SAASX,KAAKO,UAAU;MAC/C,OAAOP,KAAK6C;;IAGd,OAAO7C,KAAKiD;;EAGd,MAAAK;IACE,OACER,EAACS,GAAI;MAAAC,KAAA;OACHV,EAAA;MAAAU,KAAA;MAAMC,IAAIzD,KAAKE;MAAUkD,OAAOpD,KAAKqB;MAAgB,cAAcrB,KAAK+B;OACtEe,EAAA;MAAAU,KAAA;MAAMJ,OAAOpD,KAAK0B;OAAsB1B,KAAKqD;;;;;;;;;;;;AAOvD,IAAIlD,IAAW","ignoreList":[]}
|