diff --git a/src/common/interfaces/componentsProps.ts b/src/common/interfaces/componentsProps.ts
index 2ca28bbe074ed87ed25fb5e5d25602bd9e8ad32e..8dbb1a21ab0b631824be9fdc803d30abba2a3e99 100644
--- a/src/common/interfaces/componentsProps.ts
+++ b/src/common/interfaces/componentsProps.ts
@@ -35,6 +35,7 @@ export interface ITableProps {
textColor?: TThemeColor;
darknessTheme?: TDarkness;
darknessTextColor?: TDarkness;
+ paginator?: boolean;
editable?: boolean;
noEditingSettings?: {
columns: number[];
@@ -182,6 +183,9 @@ export interface ISelectProps {
filtered?: boolean;
disabled?: boolean;
noHighlight?: boolean;
+ noBorder?: boolean;
+ noSelectedBackground?: boolean;
+ noBackground?: boolean;
}
export interface ISBProps {
diff --git a/src/components/Select/Select.vue b/src/components/Select/Select.vue
index 8a64e1a1a433118957eb068cb26d0216a199d4ea..093142f7f46c4a002fa58a20fafe26e1eca79e26 100644
--- a/src/components/Select/Select.vue
+++ b/src/components/Select/Select.vue
@@ -39,19 +39,29 @@ const optionsNoGroup = computed(() =>
(filter.value ? (option.label ?? option.value).toLowerCase().startsWith(filter.value.toLowerCase()) : true),
),
);
-const selectedOption = computed(() => props.options.find((option) => option.value === selected.value));
const fontSize = computed(() => props.fontSize ?? calcFontSize(props.size));
+
+const selectedOption = computed(() => props.options.find((option) => option.value === selected.value));
+const selectedTextWidth = computed(() => {
+ const numberString = String(parseInt(props.width));
+ if (numberString.length + 2 === props.width.length) {
+ return numberString - parseInt(fontSize.value) - 10 + props.width.slice(-2);
+ }
+ if (numberString.length + 3 === props.width.length) {
+ return numberString - parseInt(fontSize.value) - 10 + props.width.slice(-3);
+ }
+ return numberString - parseInt(fontSize.value) - 10 + props.width.slice(-1);
+});
const fontSizeNumber = computed(() => fontSize.value.slice(0, -2));
const padding = computed(() => calcPadding(props.size));
const textColor = computed(() =>
props.disabled ? '#62708c' : convertThemeToTextColor(props.theme, props.darknessTheme ?? '700'),
);
+const borderColor = computed(() => (props.noBorder ? 'transparent' : textColor.value));
const backgroundColor = computed(() =>
- // convertThemeToColor(
- // props.background ?? (props.theme === 'white' ? 'black' : props.theme === 'black' ? 'white' : props.theme),
- // (!props.background && props.theme === 'black') || props.background === 'white' ? '500' : props.darknessBackground,
- // ),
- convertThemeToColor(props.theme, props.theme === 'white' && !props.darknessTheme ? '500' : props.darknessTheme),
+ props.noBackground
+ ? 'transparent'
+ : convertThemeToColor(props.theme, props.theme === 'white' && !props.darknessTheme ? '500' : props.darknessTheme),
);
const pickOption = (value: string) => {
@@ -81,7 +91,7 @@ document.querySelector('body')!.addEventListener('pointerup', (e: MouseEvent) =>
noHighlight,
},
]"
- :style="`background-color: ${backgroundColor}`"
+ :style="`background-color: ${noSelectedBackground ? 'transparent' : backgroundColor}`"
>
@click.prevent="pickOption(option.value)"
v-for="option of group.items"
:key="option.value"
+ :width="width"
+ :option="option"
+ :fontSizeNumber="fontSizeNumber"
+ :textColor="textColor"
:class="[
'flex',
{
@@ -162,12 +178,9 @@ document.querySelector('body')!.addEventListener('pointerup', (e: MouseEvent) =>
]"
:style="`color: ${calcOptionColor(option.color, option.darknessColor, textColor)};
background-color: ${calcOptionColor(option.background, option.darknessBackground, backgroundColor)}`"
- :option="option"
- :fontSizeNumber="fontSizeNumber"
- :textColor="textColor"
>
- {{ option.label ?? option.value }}
+ {{ option.label ?? option.value }}
@@ -175,6 +188,10 @@ document.querySelector('body')!.addEventListener('pointerup', (e: MouseEvent) =>
@click.prevent="pickOption(option.value)"
v-for="option of optionsNoGroup"
:key="option.value"
+ :width="width"
+ :option="option"
+ :fontSizeNumber="fontSizeNumber"
+ :textColor="textColor"
:class="[
'flex',
{
@@ -184,12 +201,9 @@ document.querySelector('body')!.addEventListener('pointerup', (e: MouseEvent) =>
]"
:style="`color: ${calcOptionColor(option.color, option.darknessColor, textColor)};
background-color: ${calcOptionColor(option.background, option.darknessBackground, backgroundColor)}`"
- :option="option"
- :fontSizeNumber="fontSizeNumber"
- :textColor="textColor"
>
- {{ option.label ?? option.value }}
+ {{ option.label ?? option.value }}
@@ -205,7 +219,7 @@ document.querySelector('body')!.addEventListener('pointerup', (e: MouseEvent) =>
.list {
position: relative;
width: max-content;
- border: 1px solid v-bind(textColor);
+ border: 1px solid v-bind(borderColor);
border-radius: 5px;
cursor: pointer;
}
@@ -224,7 +238,7 @@ document.querySelector('body')!.addEventListener('pointerup', (e: MouseEvent) =>
z-index: 5000;
top: 101%;
width: 100%;
- border: 1px solid v-bind(textColor);
+ border: 1px solid v-bind(borderColor);
border-radius: 5px;
display: grid;
grid-template-rows: 0fr;
@@ -256,7 +270,7 @@ document.querySelector('body')!.addEventListener('pointerup', (e: MouseEvent) =>
padding: v-bind(padding);
}
.flex:hover {
- filter: brightness(90%);
+ filter: brightness(85%);
transition: all 0.1s ease-in-out;
}
.group {
@@ -267,6 +281,12 @@ document.querySelector('body')!.addEventListener('pointerup', (e: MouseEvent) =>
cursor: auto;
gap: 7px;
}
+.text {
+ display: inline-block;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ white-space: nowrap;
+}
.firstOption {
border-top-right-radius: 4px;
border-top-left-radius: 4px;
diff --git a/src/components/Table/Table.stories.ts b/src/components/Table/Table.stories.ts
index ccc54afdf14a6cf80b76e0002f8e1e69752158c8..d4cc69633ff635b2ba763155d3aee052cb1cdd8b 100644
--- a/src/components/Table/Table.stories.ts
+++ b/src/components/Table/Table.stories.ts
@@ -188,7 +188,7 @@ export const Full: Story = {
['Ксюша', '32', 'Backend', 'Russia', false, 'Married', 0, 30, 2],
],
noEditingSettings: {
- columns: [5],
+ columns: [2],
rows: [3],
cells: [[0, 6]],
},
diff --git a/src/components/Table/Table.vue b/src/components/Table/Table.vue
index 8f69d34645e87e51c68a00c945164b14070866bb..cc42683722cba4a7f36d849fdb05a5423e08b587 100644
--- a/src/components/Table/Table.vue
+++ b/src/components/Table/Table.vue
@@ -13,7 +13,7 @@ const props = withDefaults(defineProps(), {
fontSize: '16px',
editable: false,
});
-const data = defineModel();
+const data = defineModel() as Ref;
const emit = defineEmits(['updateData']);
const table = ref();
diff --git a/src/components/Table/components/TableCell.vue b/src/components/Table/components/TableCell.vue
index 1c89050e5edd591bd37d57e60edf6320784929eb..1161d89a476e92c760a9c563d688310fb8ca473f 100644
--- a/src/components/Table/components/TableCell.vue
+++ b/src/components/Table/components/TableCell.vue
@@ -52,8 +52,10 @@ defineEmits(['updateData']);
/>