Skip to content

Commit 12fe24c

Browse files
authored
Feature/add prop ghost (#1051)
#### Por favor, verifique se o seu pull request está de acordo com o checklist abaixo: - [x] A implementação feita possui testes (Caso haja um motivo para não haver testes/haver apenas testes de snapshot, descrever abaixo) - [x] A documentação no mdx foi feita ou atualizada, caso necessário - [x] O eslint passou localmente ### 1 - Resumo - Adiciona ao CdsBaseInput a prop ghost que agora permitirá que outros componentes que o utilizam especificar se o componente deve ser exibido na sua versão ghost (Sem bordas e background). **Note: Atualmente foi declarado somente para o CdsSelect** ### 2 - Tipo de pull request - [ ] 🧱 Novo componente - [X] ✨ Nova feature ou melhoria - [ ] 🐛 Fix - [ ] 👨‍💻 Refatoração - [ ] 📝 Documentação - [ ] 🎨 Estilo - [ ] 🤖 Build ou CI/CD ### 3 - Esse PR fecha alguma issue? Favor referenciá-la Não ### 4 - Quais são os passos para avaliar o pull request? - Acesse o componente Select e interaja com as outras props existesntes em conjunto com o ghost para verificar que o funcionamento continua ainda como esperado ### 5 - Imagem ou exemplo de uso: <img width="323" height="277" alt="image" src="https://github.com/user-attachments/assets/b3772322-92ec-4d67-b42b-7ea29858d76d" /> ### 6 - Esse pull request adiciona _breaking changes_? - [ ] Sim - [X] Não
1 parent 7cb5e8b commit 12fe24c

File tree

12 files changed

+61
-12
lines changed

12 files changed

+61
-12
lines changed

docs/components/forms/base-input.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,5 +96,6 @@ const args = ref({
9696
tooltipIcon: 'info-outline',
9797
trailingIcon: 'info-outline',
9898
leadingIcon: 'info-outline',
99+
ghost: true,
99100
});
100101
</script>

docs/components/forms/select.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,24 @@
33
Selects permitem que o usuário escolha uma opção a partir de uma lista de itens.
44

55
---
6+
67
<br>
78

89
## Quando usar:
9-
- O usuário tiver de escolher uma única opção em uma lista com diversos itens.
1010

11+
- O usuário tiver de escolher uma única opção em uma lista com diversos itens.
1112

1213
<br>
1314

1415
## Quando não usar:
16+
1517
- A lista de opções possuir 3 itens ou menos. Nesses casos, recomendamos a utilização de radio buttons.
1618
- O usuário precisar selecionar mais de um item da lista. Nesse caso, utilize <a href="https://sysvale.github.io/cuida/?path=/docs/componentes-forms-clusteredmultiselect--clustered-multiselect">ClusteredMultiselects</a>.
1719

1820
<br>
1921

2022
## Observações:
23+
2124
- Coloque as opções mais prováveis de serem selecionadas no topo do select. Na dúvida, ordene-os em ordem alfanumérica.
2225
- As labels dos selects devem ser sucintas (de uma a três palavras).
2326
- As labels devem ser ser escritas com a primeira letra maiúscula e as restantes minúsculas.
@@ -143,5 +146,6 @@ const args = ref({
143146
supportingText: null,
144147
supportLink: '',
145148
supportLinkUrl: '',
149+
ghost: false,
146150
});
147151
</script>

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sysvale/cuida",
3-
"version": "3.153.0",
3+
"version": "3.154.0",
44
"description": "A design system built by Sysvale, using storybook and Vue components",
55
"repository": {
66
"type": "git",

src/components/BaseInput.vue

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -377,6 +377,13 @@ const props = defineProps({
377377
type: Boolean,
378378
default: false,
379379
},
380+
/**
381+
* Especifica se o componente deve ser exibido na sua versão ghost.
382+
*/
383+
ghost: {
384+
type: Boolean,
385+
default: false,
386+
},
380387
});
381388
382389
const emits = defineEmits({
@@ -400,6 +407,10 @@ const computedAutocompleteProp = computed(() => props.enableAutocomplete ? 'on'
400407
const baseInputClass = computed(() => {
401408
let inputClass = props.fluid ? 'base-input--fluid' : 'base-input';
402409
410+
if (props.ghost) {
411+
inputClass += ' ghost';
412+
}
413+
403414
if (!isFocused.value) {
404415
inputClass += props.disabled
405416
? ' base-input--disabled'
@@ -777,4 +788,11 @@ input::-webkit-inner-spin-button {
777788
input:disabled {
778789
background: none !important;
779790
}
791+
792+
.base-input.ghost {
793+
border: none !important;
794+
background: transparent !important;
795+
box-shadow: none !important;
796+
outline: none !important;
797+
}
780798
</style>

src/components/BaseMobileInput.vue

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -405,6 +405,13 @@ const props = defineProps({
405405
type: Boolean,
406406
default: false,
407407
},
408+
/**
409+
* Especifica se o componente deve ser exibido na sua versão ghost.
410+
*/
411+
ghost: {
412+
type: Boolean,
413+
default: false,
414+
},
408415
});
409416
410417
const emits = defineEmits({
@@ -426,6 +433,10 @@ const computedAutocompleteProp = computed(() => props.enableAutocomplete ? 'on'
426433
const baseMobileInputClass = computed(() => {
427434
let mobileInputClass = props.fluid ? 'base-mobile-input--fluid' : 'base-mobile-input';
428435
436+
if (props.ghost) {
437+
mobileInputClass += ' ghost';
438+
}
439+
429440
if (!isFocused.value) {
430441
mobileInputClass += props.disabled
431442
? ' base-mobile-input--disabled'
@@ -791,4 +802,11 @@ input::-webkit-inner-spin-button {
791802
input:disabled {
792803
background: none !important;
793804
}
805+
806+
.base-mobile-input.ghost {
807+
border: none !important;
808+
background: transparent !important;
809+
box-shadow: none !important;
810+
outline: none !important;
811+
}
794812
</style>

src/components/Select.vue

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
:floating-label="floatingLabel || mobile"
2424
:class="inputClass"
2525
:fluid="computedFluid"
26+
:ghost
2627
@keydown.enter.prevent="activateSelectionOnEnter"
2728
@keydown.arrow-down.prevent="highlightOnArrowDown"
2829
@keydown.arrow-up.prevent="highlightOnArrowUp"
@@ -291,6 +292,13 @@ const props = defineProps({
291292
type: Boolean,
292293
default: false,
293294
},
295+
/**
296+
* Especifica se o componente deve ser exibido na sua versão ghost.
297+
*/
298+
ghost: {
299+
type: Boolean,
300+
default: false,
301+
},
294302
});
295303
296304
const emits = defineEmits({

src/tests/__snapshots__/BaseInput.spec.js.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ exports[`BaseInput > renders correctly 1`] = `
1111
<div data-v-82c69faf="" class="base-input base-input--default">
1212
<!--v-if-->
1313
<div data-v-82c69faf="" style="width: 100%;">
14-
<!--v-if--><input data-v-82c69faf="" id="base-input" label="Label" hidelabel="false" state="default" type="text" placeholder="Digite aqui..." errormessage="Valor inválido" supportingtext="" fluid="false" tooltipicon="info-outline" floatinglabel="false" lazy="false" name="" enableautocomplete="false" enabletopcontent="false" class="base-input__field" autocomplete="off">
14+
<!--v-if--><input data-v-82c69faf="" id="base-input" label="Label" hidelabel="false" state="default" type="text" placeholder="Digite aqui..." errormessage="Valor inválido" supportingtext="" fluid="false" tooltipicon="info-outline" floatinglabel="false" lazy="false" name="" enableautocomplete="false" enabletopcontent="false" ghost="false" class="base-input__field" autocomplete="off">
1515
</div>
1616
<!--v-if-->
1717
<!--v-if-->

src/tests/__snapshots__/BaseMobileInput.spec.js.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ exports[`BaseMobileInput > renders correctly 1`] = `
44
"<div data-v-c2ac4e6d="" data-v-06760eb7="" class="flexbox" id="base-mobile-input">
55
<!-- @slot Slot com o conteúdo interno do FlexBox -->
66
<div data-v-06760eb7="" class="base-mobile-input base-mobile-input--default">
7-
<!--v-if--><label data-v-06760eb7="" class="base-mobile-input__label" for="cds-base-mobile-input-text-base-mobile-input"><span data-v-06760eb7="" class="label__content">Nome <!--v-if--></span></label><input data-v-06760eb7="" id="base-mobile-input" label="Nome" state="default" type="text" errormessage="Valor inválido" supportingtext="" fluid="false" tooltipicon="info-outline" hasleadingicon="false" hastrailingicon="false" lazy="false" enableautocomplete="false" placeholder="" class="base-mobile-input__field" autocomplete="off">
7+
<!--v-if--><label data-v-06760eb7="" class="base-mobile-input__label" for="cds-base-mobile-input-text-base-mobile-input"><span data-v-06760eb7="" class="label__content">Nome <!--v-if--></span></label><input data-v-06760eb7="" id="base-mobile-input" label="Nome" state="default" type="text" errormessage="Valor inválido" supportingtext="" fluid="false" tooltipicon="info-outline" hasleadingicon="false" hastrailingicon="false" lazy="false" enableautocomplete="false" ghost="false" placeholder="" class="base-mobile-input__field" autocomplete="off">
88
<!--v-if-->
99
<!--v-if-->
1010
</div>

src/tests/__snapshots__/DateInput.spec.js.snap

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ exports[`DateInput > renders correctly 1`] = `
1212
</label>
1313
<div data-v-82c69faf="" class="base-input base-input--default">
1414
<!--v-if-->
15-
<div data-v-82c69faf="" id="" tabindex="0" modelvalue="" label="Selecione uma data" hidelabel="false" disabled="false" state="default" type="date" required="false" placeholder="dd/MM/yyyy" errormessage="Valor inválido" supportingtext="" fluid="false" tooltipicon="info-outline" floatinglabel="false" lazy="false" name="" enableautocomplete="false" enabletopcontent="false" class="base-input__field" autocomplete="off"><small data-v-82c69faf="" class="base-input__date-text">dd/MM/yyyy</small></div>
15+
<div data-v-82c69faf="" id="" tabindex="0" modelvalue="" label="Selecione uma data" hidelabel="false" disabled="false" state="default" type="date" required="false" placeholder="dd/MM/yyyy" errormessage="Valor inválido" supportingtext="" fluid="false" tooltipicon="info-outline" floatinglabel="false" lazy="false" name="" enableautocomplete="false" enabletopcontent="false" ghost="false" class="base-input__field" autocomplete="off"><small data-v-82c69faf="" class="base-input__date-text">dd/MM/yyyy</small></div>
1616
<!--v-if-->
1717
<div data-v-82c69faf="" class="base-input__trailing-icon-container">
1818
<div data-v-fcd39cd1="" class="date-input__icon"><svg data-v-fcd39cd1="" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" aria-labelledby="calendar-outline" role="presentation">
@@ -35,7 +35,7 @@ exports[`DateInput > renders correctly 1`] = `
3535
<div data-v-fcd39cd1="" class="date-input__calendar--down" style="display: none;">
3636
<div data-v-fcd39cd1="" class="calendar__header">
3737
<div data-v-c2ac4e6d="" data-v-fcd39cd1="" class="flexbox">
38-
<!-- @slot Slot com o conteúdo interno do FlexBox --><span data-v-fcd39cd1="" class="calendar__month-and-title">janeiro</span><span data-v-fcd39cd1="" class="calendar__month-and-title">2026</span>
38+
<!-- @slot Slot com o conteúdo interno do FlexBox --><span data-v-fcd39cd1="" class="calendar__month-and-title">fevereiro</span><span data-v-fcd39cd1="" class="calendar__month-and-title">2026</span>
3939
</div>
4040
<div data-v-c2ac4e6d="" data-v-fcd39cd1="" class="flexbox">
4141
<!-- @slot Slot com o conteúdo interno do FlexBox --><svg data-v-fcd39cd1="" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" aria-labelledby="caret-up-outline" role="presentation" class="calendar__right-caret">
@@ -61,6 +61,9 @@ exports[`DateInput > renders correctly 1`] = `
6161
<div data-v-fcd39cd1="" class="calendar__empty-day"></div>
6262
<div data-v-fcd39cd1="" class="calendar__empty-day"></div>
6363
<div data-v-fcd39cd1="" class="calendar__empty-day"></div>
64+
<div data-v-fcd39cd1="" class="calendar__empty-day"></div>
65+
<div data-v-fcd39cd1="" class="calendar__empty-day"></div>
66+
<div data-v-fcd39cd1="" class="calendar__empty-day"></div>
6467
<div data-v-fcd39cd1="" class="calendar__day--green" disabled="false">1</div>
6568
<div data-v-fcd39cd1="" class="calendar__day--green" disabled="false">2</div>
6669
<div data-v-fcd39cd1="" class="calendar__day--green" disabled="false">3</div>
@@ -89,9 +92,6 @@ exports[`DateInput > renders correctly 1`] = `
8992
<div data-v-fcd39cd1="" class="calendar__day--green" disabled="false">26</div>
9093
<div data-v-fcd39cd1="" class="calendar__day--green" disabled="false">27</div>
9194
<div data-v-fcd39cd1="" class="calendar__day--green" disabled="false">28</div>
92-
<div data-v-fcd39cd1="" class="calendar__day--green" disabled="false">29</div>
93-
<div data-v-fcd39cd1="" class="calendar__day--green" disabled="false">30</div>
94-
<div data-v-fcd39cd1="" class="calendar__day--green" disabled="false">31</div>
9595
</div>
9696
<div data-v-958116c6="" data-v-44dffe1e="" data-v-fcd39cd1="" class="grid month-selector__grid" style="display: none;">
9797
<!-- @slot Slot com o conteúdo interno da grid -->

src/tests/__snapshots__/NumberInput.spec.js.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ exports[`CdsNumberInput > renders correctly 1`] = `
1212
<div data-v-82c69faf="" class="base-input base-input--default">
1313
<!--v-if-->
1414
<div data-v-82c69faf="" style="width: 100%;">
15-
<!--v-if--><input data-v-82c69faf="" id="number-input" modelvalue="" label="Valor" hidelabel="false" state="default" type="number" placeholder="Digite aqui a informação" errormessage="Valor inválido" supportingtext="" fluid="false" tooltipicon="info-outline" floatinglabel="false" lazy="false" name="" enableautocomplete="false" enabletopcontent="false" class="base-input__field" autocomplete="off">
15+
<!--v-if--><input data-v-82c69faf="" id="number-input" modelvalue="" label="Valor" hidelabel="false" state="default" type="number" placeholder="Digite aqui a informação" errormessage="Valor inválido" supportingtext="" fluid="false" tooltipicon="info-outline" floatinglabel="false" lazy="false" name="" enableautocomplete="false" enabletopcontent="false" ghost="false" class="base-input__field" autocomplete="off">
1616
</div>
1717
<!--v-if-->
1818
<!--v-if-->

0 commit comments

Comments
 (0)