Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: convert useComputedClass to defineClass #725

Merged
merged 45 commits into from
Feb 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
e211477
fix: refactor useComputedClass to defineClass
mlmoravek Jan 6, 2024
1a99bd0
fix: update defineClass interface
mlmoravek Jan 8, 2024
202c678
fix: enhance example
mlmoravek Jan 8, 2024
02be7f9
refactor(defineClasses): update comments
mlmoravek Jan 10, 2024
4036886
Merge branch 'develop' into bug/computed_class
mlmoravek Jan 10, 2024
1571853
fix(autocomplete): update useComputedClass to defineClasses
mlmoravek Jan 10, 2024
4ab9739
fix(type): update PropBind type definition
mlmoravek Jan 10, 2024
1a07b1b
fix(carousel): update useComputedClass to defineClasses
mlmoravek Jan 11, 2024
c611410
fix(autocomplete): update useComputedClass to defineClasses
mlmoravek Jan 11, 2024
cd46e71
Merge branch 'develop' into bug/computed_class
mlmoravek Jan 11, 2024
e702f50
fix(checkbox): update useComputedClass to defineClasses
mlmoravek Jan 11, 2024
d95393e
fix(collapse): update useComputedClass to defineClasses
mlmoravek Jan 11, 2024
b69dca5
fix(dropdown): update useComputedClass to defineClasses
mlmoravek Jan 11, 2024
567c8e8
refactor: update useComputedClass to defineClasses
mlmoravek Jan 12, 2024
ac790cf
refactor: change ProbBind to ClassBind
mlmoravek Jan 12, 2024
dab8f22
refactor: update components
mlmoravek Jan 12, 2024
af9c0a5
refactor(table): update useComputedClass to defineClasses
mlmoravek Jan 12, 2024
3a8ab61
refactor(Datepicker): update useComputedClass to defineClasses
mlmoravek Jan 16, 2024
ed688de
refactor(getActiveClasses)
mlmoravek Jan 16, 2024
9b0583a
refactor(tabs): update useComputedClass to defineClasses
mlmoravek Jan 16, 2024
0cab762
Merge branch 'develop' into bug/computed_class
mlmoravek Jan 16, 2024
182dba1
refactor: remove unused useComputedClass composable
mlmoravek Jan 16, 2024
33c479d
fix: typo
mlmoravek Jan 16, 2024
efeac7b
fix: typo
mlmoravek Jan 16, 2024
157d567
fix(notificaton)
mlmoravek Jan 16, 2024
7681cb7
refactoring
mlmoravek Jan 16, 2024
805a188
refactoring
mlmoravek Jan 16, 2024
49b0379
fix: class function problem
mlmoravek Jan 23, 2024
32ebc82
docs:update-dependencies
mlmoravek Jan 23, 2024
33219b2
refactor: use EffectScope
mlmoravek Jan 24, 2024
97870c1
Merge branch 'develop' into bug/computed_class
mlmoravek Jan 26, 2024
c4be7ff
docs: update dependencies
mlmoravek Jan 26, 2024
804936b
docs: update package-lock.json
mlmoravek Jan 26, 2024
d357dc2
fix: picker classes
mlmoravek Jan 26, 2024
ca860b2
fix: steps & tabs
mlmoravek Jan 26, 2024
8800f91
fix: update defineClasses
mlmoravek Jan 26, 2024
7a18694
Merge branch 'develop' into bug/computed_class
mlmoravek Jan 26, 2024
d1af19b
fix(sidebar)
mlmoravek Jan 27, 2024
4acb5c1
Merge branch 'develop' into bug/computed_class
mlmoravek Jan 27, 2024
724fa58
Merge branch 'develop' into bug/computed_class
mlmoravek Jan 29, 2024
10ce138
fix: remove console log
mlmoravek Jan 29, 2024
354663a
Merge branch 'bug/computed_class' of https://github.com/mlmoravek/oru…
mlmoravek Jan 30, 2024
9eb2295
review changes
mlmoravek Jan 30, 2024
9d92bdb
Merge branch 'develop' into bug/computed_class
mlmoravek Jan 30, 2024
f41794a
Merge branch 'develop' into bug/computed_class
mlmoravek Feb 1, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 39 additions & 1 deletion packages/docs-next/.vitepress/theme/examples/button/base.vue
Original file line number Diff line number Diff line change
@@ -1,11 +1,49 @@
<script setup>
import { reactive } from "vue";

const clickMe = () => {
alert("Clicked!");
};

const settings = reactive({
rounded: false,
tooltip: true,
variant: "warning",
size: "medium",
});
</script>

<template>
<section>
<o-button @click="clickMe">Click Me</o-button>
<o-field grouped>
<o-field>
<o-switch v-model="settings.rounded" label="Rounded" />
</o-field>
<o-field label="Size">
<o-select v-model="settings.size">
<option value="small">small</option>
<option value="default">default</option>
<option value="medium">medium</option>
<option value="large">large</option>
</o-select>
</o-field>
<o-field label="Variant">
<o-select v-model="settings.variant">
<option value="default">default</option>
<option value="primary">primary</option>
<option value="success">success</option>
<option value="info">info</option>
<option value="warning">warning</option>
<option value="danger">danger</option>
</o-select>
</o-field>
</o-field>
<o-button
:variant="settings.variant"
:size="settings.size"
:rounded="settings.rounded"
@click="clickMe">
Click Me
</o-button>
</section>
</template>
4,622 changes: 2,196 additions & 2,426 deletions packages/docs-next/package-lock.json

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions packages/docs-next/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@
"prettier": "^3.1.0",
"sass": "^1.69.5",
"typescript": "5.3.2",
"vitepress": "^1.0.0-rc.31",
"vue": "^3.3.10",
"vitepress": "^1.0.0-rc.40",
"vue": "^3.4.15",
"vue-docgen-cli": "4.67.0",
"vue-tsc": "^1.8.25"
}
Expand Down
71 changes: 31 additions & 40 deletions packages/oruga-next/src/components/autocomplete/Autocomplete.vue
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,14 @@ import { getValueByPath } from "@/utils/helpers";
import { isClient } from "@/utils/ssr";
import {
unrefElement,
useComputedClass,
defineClasses,
useVModelBinding,
useInputHandler,
useDebounce,
useEventListener,
} from "@/composables";

import type { ComponentClass, DynamicComponent, PropBind } from "@/types";
import type { ComponentClass, DynamicComponent, ClassBind } from "@/types";

/**
* Extended input that provide suggestions while the user types
Expand Down Expand Up @@ -728,48 +728,39 @@ const inputBind = computed(() => ({
...props.inputClasses,
}));

const rootClasses = computed(() => [useComputedClass("rootClass", "o-acp")]);
const rootClasses = defineClasses(["rootClass", "o-acp"]);

const itemClasses = computed(() => [
useComputedClass("itemClass", "o-acp__item"),
]);
const itemClasses = defineClasses(["itemClass", "o-acp__item"]);

const itemEmptyClasses = computed(() => [
...itemClasses.value,
useComputedClass("itemEmptyClass", "o-acp__item--empty"),
const itemEmptyClasses = defineClasses([
"itemEmptyClass",
"o-acp__item--empty",
]);

const itemGroupClasses = computed(() => [
...itemClasses.value,
useComputedClass("itemGroupTitleClass", "o-acp__item-group-title"),
const itemGroupClasses = defineClasses([
"itemGroupTitleClass",
"o-acp__item-group-title",
]);

const itemHeaderClasses = computed(() => [
...itemClasses.value,
useComputedClass("itemHeaderClass", "o-acp__item-header"),
{
[useComputedClass("itemHoverClass", "o-acp__item--hover")]:
headerHovered.value,
},
]);
const itemHeaderClasses = defineClasses(
["itemHeaderClass", "o-acp__item-header"],
["itemHoverClass", "o-acp__item--hover", null, headerHovered],
);

const itemFooterClasses = computed(() => [
...itemClasses.value,
useComputedClass("itemFooterClass", "o-acp__item-footer"),
{
[useComputedClass("itemHoverClass", "o-acp__item--hover")]:
footerHovered.value,
},
]);
const itemFooterClasses = defineClasses(
["itemFooterClass", "o-acp__item-footer"],
["itemHoverClass", "o-acp__item--hover", null, footerHovered],
);

function itemOptionClasses(option): ClassBind[] {
const optionClasses = defineClasses([
"itemHoverClass",
"o-acp__item--hover",
null,
toRaw(option) === toRaw(hoveredOption.value),
]);

function itemOptionClasses(option): PropBind {
return [
...itemClasses.value,
{
[useComputedClass("itemHoverClass", "o-acp__item--hover")]:
toRaw(option) === toRaw(hoveredOption.value),
},
];
return [...itemClasses.value, ...optionClasses.value];
}
</script>

Expand Down Expand Up @@ -829,7 +820,7 @@ function itemOptionClasses(option): PropBind {
:tag="itemTag"
aria-role="button"
:tabindex="0"
:class="itemHeaderClasses"
:class="[...itemClasses, ...itemHeaderClasses]"
@click="(v, e) => selectHeaderOrFoterByClick(e, 'header')">
<!--
@slot Define an additional header
Expand All @@ -842,7 +833,7 @@ function itemOptionClasses(option): PropBind {
v-if="element.group"
:key="groupindex + 'group'"
:tag="itemTag"
:class="itemGroupClasses">
:class="[...itemClasses, ...itemGroupClasses]">
<!--
@slot Override the option grpup
@binding {object} group - options group
Expand Down Expand Up @@ -888,7 +879,7 @@ function itemOptionClasses(option): PropBind {
<o-dropdown-item
v-if="isEmpty && $slots.empty"
:tag="itemTag"
:class="itemEmptyClasses">
:class="[...itemClasses, ...itemEmptyClasses]">
<!--
@slot Define content for empty state
-->
Expand All @@ -901,7 +892,7 @@ function itemOptionClasses(option): PropBind {
:tag="itemTag"
aria-role="button"
:tabindex="0"
:class="itemFooterClasses"
:class="[...itemClasses, ...itemFooterClasses]"
@click="(v, e) => selectHeaderOrFoterByClick(e, 'footer')">
<!--
@slot Define an additional footer
Expand Down
109 changes: 51 additions & 58 deletions packages/oruga-next/src/components/button/Button.vue
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import OIcon from "../icon/Icon.vue";

import { baseComponentProps } from "@/utils/SharedProps";
import { getOption } from "@/utils/config";
import { useComputedClass } from "@/composables";
import { defineClasses } from "@/composables";

import type { ComponentClass } from "@/types";

Expand Down Expand Up @@ -167,66 +167,59 @@ const computedDisabled = computed(() => (props.disabled ? true : null));

// --- Computed Component Classes ---

const rootClasses = computed(() => [
useComputedClass("rootClass", "o-btn"),
{
[useComputedClass("sizeClass", "o-btn--", props.size)]: props.size,
},
{
[useComputedClass("variantClass", "o-btn--", props.variant)]:
props.variant,
},
{
[useComputedClass("outlinedClass", "o-btn--outlined")]:
props.outlined && !props.variant,
},
{
[useComputedClass("invertedClass", "o-btn--inverted")]:
props.inverted && !props.variant,
},
{
[useComputedClass("outlinedClass", "o-btn--outlined-", props.variant)]:
props.outlined && props.variant,
},
{
[useComputedClass("invertedClass", "o-btn--inverted-", props.variant)]:
props.inverted && props.variant,
},
{
[useComputedClass("expandedClass", "o-btn--expanded")]: props.expanded,
},
{
[useComputedClass("loadingClass", "o-btn--loading")]: props.loading,
},
{
[useComputedClass("roundedClass", "o-btn--rounded")]: props.rounded,
},
{
[useComputedClass("disabledClass", "o-btn--disabled")]: props.disabled,
},
]);
const rootClasses = defineClasses(
["rootClass", "o-btn"],
[
"sizeClass",
"o-btn--",
computed(() => props.size),
computed(() => !!props.size),
],
[
"variantClass",
"o-btn--",
computed(() => props.variant),
computed(() => !!props.variant),
],
[
"outlinedClass",
"o-btn--outlined",
null,
computed(() => props.outlined && !props.variant),
],
[
"invertedClass",
"o-btn--inverted",
null,
computed(() => props.inverted && !props.variant),
],
[
"outlinedClass",
"o-btn--outlined-",
computed(() => props.variant),
computed(() => props.outlined && !!props.variant),
],
[
"invertedClass",
"o-btn--inverted-",
computed(() => props.variant),
computed(() => props.inverted && !!props.variant),
],
["expandedClass", "o-btn--expanded", null, computed(() => props.expanded)],
["loadingClass", "o-btn--loading", null, computed(() => props.loading)],
["roundedClass", "o-btn--rounded", null, computed(() => props.rounded)],
["disabledClass", "o-btn--disabled", null, computed(() => props.disabled)],
);

const labelClasses = computed(() => [
useComputedClass("labelClass", "o-btn__label"),
]);
const labelClasses = defineClasses(["labelClass", "o-btn__label"]);

const iconClasses = computed(() => [
useComputedClass("iconClass", "o-btn__icon"),
]);
const iconClasses = defineClasses(["iconClass", "o-btn__icon"]);

const iconLeftClasses = computed(() => [
...iconClasses.value,
useComputedClass("iconLeftClass", "o-btn__icon-left"),
]);
const iconLeftClasses = defineClasses(["iconLeftClass", "o-btn__icon-left"]);

const iconRightClasses = computed(() => [
...iconClasses.value,
useComputedClass("iconRightClass", "o-btn__icon-right"),
]);
const iconRightClasses = defineClasses(["iconRightClass", "o-btn__icon-right"]);

const wrapperClasses = computed(() => [
useComputedClass("wrapperClass", "o-btn__wrapper"),
]);
const wrapperClasses = defineClasses(["wrapperClass", "o-btn__wrapper"]);
</script>

<template>
Expand All @@ -244,7 +237,7 @@ const wrapperClasses = computed(() => [
:icon="iconLeft"
:size="size"
:both="iconBoth"
:class="iconLeftClasses" />
:class="[...iconClasses, ...iconLeftClasses]" />
<span v-if="label || $slots.default" :class="labelClasses">
<!--
@slot Override the label, default is label prop
Expand All @@ -257,7 +250,7 @@ const wrapperClasses = computed(() => [
:icon="iconRight"
:size="size"
:both="iconBoth"
:class="iconRightClasses" />
:class="[...iconClasses, ...iconRightClasses]" />
</span>
</component>
</template>
Loading
Loading