Skip to content

Commit

Permalink
Merge pull request #132 from glorious-codes/select_improvement
Browse files Browse the repository at this point in the history
Select improvement
  • Loading branch information
rafaelcamargo committed Aug 9, 2022
2 parents 131f1e4 + b1b287c commit cad4cef
Show file tree
Hide file tree
Showing 13 changed files with 44 additions and 34 deletions.
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
@@ -1,6 +1,6 @@
{
"name": "@glorious/taslonic",
"version": "1.5.1",
"version": "1.5.2",
"description": "A glorious UI library available for React and Vue",
"files": [
"react/**",
Expand Down
2 changes: 1 addition & 1 deletion src/base/services/button/button.js
Expand Up @@ -13,7 +13,7 @@ _public.buildCssClasses = ({ theme, block } = {}) => {
cssClasses,
baseCssClass
);
propBasedCssClassService.handleBooleanProp(
propBasedCssClassService.handleBooleanProps(
{ block },
isValidBooleanProp,
cssClasses,
Expand Down
2 changes: 1 addition & 1 deletion src/base/services/field/field.js
Expand Up @@ -5,7 +5,7 @@ const _public = {};
_public.buildCssClasses = ({ required, block, element } = {}) => {
const baseCssClass = getBaseCssClass();
const cssClasses = [baseCssClass, buildRequiredCssClass(required, element, baseCssClass)];
propBasedCssClassService.handleBooleanProp(
propBasedCssClassService.handleBooleanProps(
{ block },
isValidBooleanProp,
cssClasses,
Expand Down
2 changes: 1 addition & 1 deletion src/base/services/form-control/form-control.js
Expand Up @@ -8,7 +8,7 @@ _public.buildCssClasses = ({ errorMessage, block } = {}) => {
const baseCssClass = getBaseCssClass();
const cssClasses = [baseCssClass];
handleInvalidCssClass(errorMessage, cssClasses, baseCssClass);
propBasedCssClassService.handleBooleanProp(
propBasedCssClassService.handleBooleanProps(
{ block },
isValidBooleanProp,
cssClasses,
Expand Down
11 changes: 6 additions & 5 deletions src/base/services/prop-based-css-class/prop-based-css-class.js
Expand Up @@ -5,11 +5,12 @@ _public.handleProp = (propValue, isValidPropValue, currentCssClasses, baseCssCla
currentCssClasses.push(`${baseCssClass}-${propValue}`);
};

_public.handleBooleanProp = (prop, isValidBooleanProp, currentCssClasses, baseCssClass) => {
const [ propName ] = Object.keys(prop);
const propValue = prop[propName];
if(shouldAppendBoolenPropCssClass(propName, propValue, isValidBooleanProp))
currentCssClasses.push(`${baseCssClass}-${propName}`);
_public.handleBooleanProps = (props, isValidBooleanProp, currentCssClasses, baseCssClass) => {
Object.entries(props).forEach(([propName, propValue]) => {
if(shouldAppendBoolenPropCssClass(propName, propValue, isValidBooleanProp)) {
currentCssClasses.push(`${baseCssClass}-${propName}`);
}
});
};

function shouldAppendBoolenPropCssClass(propName, propValue, isValidBooleanProp){
Expand Down
Expand Up @@ -44,7 +44,7 @@ describe('Prop Based Css Class Service', () => {
const baseCssClass = 't-base';
const currentCssClasses = [baseCssClass];
const isValidBooleanProp = prop => ['block'].includes(prop);
propBaseCssClassService.handleBooleanProp(
propBaseCssClassService.handleBooleanProps(
{ block: true },
isValidBooleanProp,
currentCssClasses,
Expand All @@ -57,7 +57,7 @@ describe('Prop Based Css Class Service', () => {
const baseCssClass = 't-base';
const currentCssClasses = [baseCssClass];
const isValidBooleanProp = prop => ['block'].includes(prop);
propBaseCssClassService.handleBooleanProp(
propBaseCssClassService.handleBooleanProps(
{ block: 'true' },
isValidBooleanProp,
currentCssClasses,
Expand All @@ -70,7 +70,7 @@ describe('Prop Based Css Class Service', () => {
const baseCssClass = 't-base';
const currentCssClasses = [baseCssClass];
const isValidBooleanProp = prop => ['block'].includes(prop);
propBaseCssClassService.handleBooleanProp(
propBaseCssClassService.handleBooleanProps(
{ block: false },
isValidBooleanProp,
currentCssClasses,
Expand All @@ -83,7 +83,7 @@ describe('Prop Based Css Class Service', () => {
const baseCssClass = 't-base';
const currentCssClasses = [baseCssClass];
const isValidBooleanProp = prop => ['block'].includes(prop);
propBaseCssClassService.handleBooleanProp(
propBaseCssClassService.handleBooleanProps(
{},
isValidBooleanProp,
currentCssClasses,
Expand All @@ -96,7 +96,7 @@ describe('Prop Based Css Class Service', () => {
const baseCssClass = 't-base';
const currentCssClasses = [baseCssClass];
const isValidBooleanProp = prop => ['block'].includes(prop);
propBaseCssClassService.handleBooleanProp(
propBaseCssClassService.handleBooleanProps(
{ lowered: true },
isValidBooleanProp,
currentCssClasses,
Expand Down
8 changes: 4 additions & 4 deletions src/base/services/select/select.js
Expand Up @@ -2,11 +2,11 @@ import propBasedCssClassService from '@base/services/prop-based-css-class/prop-b

const _public = {};

_public.buildWrapperCssClasses = ({ disabled } = {}) => {
_public.buildWrapperCssClasses = ({ disabled, multiple } = {}) => {
const wrapperBaseCssClass = getWrapperBaseCssClass();
const cssClasses = [wrapperBaseCssClass];
propBasedCssClassService.handleBooleanProp(
{ disabled },
propBasedCssClassService.handleBooleanProps(
{ disabled, multiple },
isValidBooleanProp,
cssClasses,
wrapperBaseCssClass
Expand All @@ -19,7 +19,7 @@ function getWrapperBaseCssClass(){
}

function isValidBooleanProp(propName){
return ['disabled'].includes(propName);
return ['disabled', 'multiple'].includes(propName);
}

export default _public;
5 changes: 5 additions & 0 deletions src/base/services/select/select.test.js
Expand Up @@ -10,4 +10,9 @@ describe('Select Service', () => {
const cssClasses = selectService.buildWrapperCssClasses({ disabled: true });
expect(cssClasses).toEqual('t-select-wrapper t-select-wrapper-disabled');
});

it('should wrapper append disabled modifier css class if it has been given as true', () => {
const cssClasses = selectService.buildWrapperCssClasses({ multiple: true });
expect(cssClasses).toEqual('t-select-wrapper t-select-wrapper-multiple');
});
});
19 changes: 10 additions & 9 deletions src/base/styles/form-control.styl
Expand Up @@ -48,16 +48,17 @@ select-arrow()
.t-select-wrapper
position relative
select
padding-top 9px
padding-right 30px
padding-bottom 9px
padding 9px
line-height $font-size-lg
&:before
select-arrow()
transform rotate(-135deg) translate(-60%, -60%)
&:after
select-arrow()
transform rotate(45deg) translate(-50%, -50%)
&:not(.t-select-wrapper-multiple)
select
padding 9px 30px 9px 9px
&:before
select-arrow()
transform rotate(-135deg) translate(-60%, -60%)
&:after
select-arrow()
transform rotate(45deg) translate(-50%, -50%)
&.t-select-wrapper-disabled
&:before
border-color $color-grey
Expand Down
5 changes: 3 additions & 2 deletions src/react/components/select/select.js
Expand Up @@ -9,6 +9,7 @@ export const Select = ({
block,
disabled,
required,
multiple,
children,
...rest
}) => {
Expand All @@ -20,8 +21,8 @@ export const Select = ({
validations={validations}
formControlElSelector="select"
>
<span className={selectService.buildWrapperCssClasses({ disabled })}>
<select disabled={disabled} {...rest}>
<span className={selectService.buildWrapperCssClasses({ disabled, multiple })}>
<select disabled={disabled} multiple={multiple} {...rest}>
{ placeholder && <option value="">{placeholder}</option> }
{ children }
</select>
Expand Down
1 change: 1 addition & 0 deletions src/vue/components/select/select.html
Expand Up @@ -10,6 +10,7 @@
:name="name"
:autofocus="autofocus"
:disabled="disabled"
:multiple="multiple"
v-bind="$attrs"
v-on="{...$listeners, input: () => {}}"
>
Expand Down
7 changes: 4 additions & 3 deletions src/vue/components/select/select.js
Expand Up @@ -14,12 +14,13 @@ export const tSelect = {
autofocus: { type: Boolean },
block: { type: Boolean },
required: { type: Boolean },
disabled: { type: Boolean }
disabled: { type: Boolean },
multiple: { type: Boolean }
},
computed: {
wrapperCssClasses(){
const { disabled } = this;
return selectService.buildWrapperCssClasses({ disabled });
const { disabled, multiple } = this;
return selectService.buildWrapperCssClasses({ disabled, multiple });
}
},
template
Expand Down

0 comments on commit cad4cef

Please sign in to comment.