Skip to content

Commit

Permalink
Merge pull request #707 from AllanOXDi/Custom-validations
Browse files Browse the repository at this point in the history
add custom validation
  • Loading branch information
AllanOXDi authored Aug 1, 2024
2 parents 5755ea5 + 3f3f9d6 commit 22e1758
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 6 deletions.
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,16 @@ Changelog is rather internal in nature. See release notes for the public overvie

## Upcoming version 5.x.x (`develop` branch)

[#707]
- **Description:** Card Validations
- **Products impact:**
- **Addresses:** [#695](https://github.com/learningequality/kolibri-design-system/issues/695)
- **Components:** `KCard`
- **Breaking:** No
- **Impacts a11y:** No
- **Guidance:**
[#707] https://github.com/learningequality/kolibri-design-system/pull/707

[#709]
- **Description:** Update spaces to the latest design`KCard`
- **Products impact:** Card updates
Expand Down
37 changes: 31 additions & 6 deletions lib/KCard/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,30 @@
import BaseCard from './BaseCard.vue';
const Layouts = {
HORIZONTAL: 'horizontal',
VERTICAL: 'vertical',
};
const Thumbnail_Displays = {
NONE: 'none',
SMALL: 'small',
LARGE: 'large',
};
function cardValidator(allowedValues, propName) {
return function(value) {
if (!Object.values(allowedValues).includes(value)) {
throw new Error(
`Invalid ${propName} value: '${value}'. Allowed values are: ${Object.values(
allowedValues
).join(', ')}`
);
}
return true;
};
}
export default {
name: 'KCard',
components: { BaseCard },
Expand Down Expand Up @@ -110,15 +134,16 @@
layout: {
type: String,
default: 'horizontal',
validator: cardValidator(Layouts, 'layout'),
},
/**
* Controls how the thumbnail appears in the card.
* Expected Options: 'none' (default), 'small', or 'large'.
* */
thumbnailDisplay: {
type: String,
required: false,
default: 'none',
validator: cardValidator(Thumbnail_Displays, 'thumbnailDisplay'),
},
/**
* Sets the thumbnail path.
Expand Down Expand Up @@ -160,13 +185,13 @@
return this.stylesAndClasses.thumbnailStyles;
},
/*
Returns dynamic classes and few style-like data that CSS was cumbersome/impossible to use for ,or are in need of using theme, grouped by all possible combinations of layouts.
Returns dynamic classes and few style-like data that CSS was cumbersome/impossible to use for ,or are in need of using theme, grouped by all possible combinations of layouts.
New styles and classes are meant to be added to this single-source-of-truth object so
that we can easily locate all styling being applied to a particular layout
New styles and classes are meant to be added to this single-source-of-truth object so
that we can easily locate all styling being applied to a particular layout
Could be further simplified by using solely dynamic styles, but that would have detrimental effects on our auto RTL machinery and we would need to take care manually of more places.
*/
Could be further simplified by using solely dynamic styles, but that would have detrimental effects on our auto RTL machinery and we would need to take care manually of more places.
*/
stylesAndClasses() {
/* In px. Needs to be the same as $spacer variable in styles part */
const SPACER = 24;
Expand Down

0 comments on commit 22e1758

Please sign in to comment.