diff --git a/src/common/interfaces/componentsProps.ts b/src/common/interfaces/componentsProps.ts
index 341b92d9d4f417aeedaf8441c26e40570f6b54e1..150309a5e79d56ae22e029f0798501d673d18ff3 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[];
@@ -186,6 +187,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 4d59d315c1769fe499dae2d5ee63cc9b65dc7582..e85cf5ff7e399b04d0381cde8d46c32037a06e4c 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 eda94c2cf14ac18d9128025d40ff5de5bbc26dc5..48eb2a7d3fc756e7ed8a9c1251390d8b62f8e39e 100644
--- a/src/components/Table/components/TableCell.vue
+++ b/src/components/Table/components/TableCell.vue
@@ -53,8 +53,10 @@ defineEmits(['updateData']);
/>