diff --git a/lib/basic/index.ts b/lib/basic/index.ts
index 652b304..42da0d9 100644
--- a/lib/basic/index.ts
+++ b/lib/basic/index.ts
@@ -15,4 +15,5 @@ export { default as OuiTable } from './oui-table.vue'
export { default as OuiTableview } from './oui-tableview.vue'
export { default as OuiDraggable } from './oui-draggable.vue'
export { default as OuiText } from './oui-text.vue'
+export { default as OuiSelect } from './oui-select.vue'
export { default as OuiVirtualList } from './oui-virtual-list.vue'
diff --git a/lib/basic/oui-select.vue b/lib/basic/oui-select.vue
new file mode 100644
index 0000000..3972fe7
--- /dev/null
+++ b/lib/basic/oui-select.vue
@@ -0,0 +1,31 @@
+
+
+
+
+
diff --git a/lib/basic/oui-tableview.story.vue b/lib/basic/oui-tableview.story.vue
index b59ed7e..9bca7c8 100644
--- a/lib/basic/oui-tableview.story.vue
+++ b/lib/basic/oui-tableview.story.vue
@@ -10,6 +10,7 @@ const state = reactive({
footer: true,
selectable: true,
selected: undefined,
+ fillLast: true,
})
const columns: OuiTableColumn[] = [
@@ -49,6 +50,7 @@ const x = ref(0)
+
@@ -61,6 +63,7 @@ const x = ref(0)
:data="data"
:footer="state.footer"
:selectable="state.selectable"
+ :fill-last="state.fillLast"
style="height: 400px;"
@context="menu"
>
diff --git a/lib/basic/oui-tableview.vue b/lib/basic/oui-tableview.vue
index 3b919a5..b2289fc 100644
--- a/lib/basic/oui-tableview.vue
+++ b/lib/basic/oui-tableview.vue
@@ -11,14 +11,16 @@ const props = withDefaults(defineProps<{
data: T[]
columns: OuiTableColumn[]
rowHeight?: number
- header?: boolean | undefined
- footer?: boolean | undefined
+ header?: boolean
+ footer?: boolean
selectable?: boolean
+ fillLast?: boolean
}>(), {
rowHeight: 44,
- header: undefined,
+ header: true,
footer: false,
selectable: true,
+ fillLast: true,
})
const emit = defineEmits<{
@@ -33,15 +35,19 @@ const sortAsc = computed(() => parseOrderby(modelSort.value).asc)
const widths = reactive([])
-watch(() => props.data, () => {
- arraySetArrayInPlace(widths, props.columns.map(c => c.width ?? 120))
+watch(() => [props.data, props.fillLast], () => {
+ let values = props.columns.map(c => c.width ?? 120)
+ if (props.fillLast)
+ values = values.slice(0, -1)
+ arraySetArrayInPlace(widths, values)
}, { immediate: true })
-// const cols = computed[]>(() => props.columns ?? (Object.keys(props.data?.[0] ?? {}) as any)?.map((name: string) => ({ name })))
-const showHeader = computed(() => props.header ?? props.columns != null)
-const tableStyle = computed(() => `--tableview-columns: ${
- widths.map(w => `${w ?? 120}px`).join(' ')
-}`)
+const tableStyle = computed(() => {
+ const values = widths.map(w => `${w ?? 120}px`)
+ if (props.fillLast)
+ values.push('auto')
+ return `--tableview-columns: ${values.join(' ')}`
+})
function doToggleSort(name: string) {
if (sortName.value === name) {
@@ -61,7 +67,7 @@ function doSelect(pos: number) {
-