@rotki/ui-library 2.8.3 → 2.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/README.md +84 -5
  2. package/dist/components/date-time-picker/RuiDateTimePicker.vue.d.ts +4 -0
  3. package/dist/components/date-time-picker/RuiDateTimePicker.vue2.js +16 -7
  4. package/dist/components/date-time-picker/RuiDateTimePicker.vue2.js.map +1 -1
  5. package/dist/components/forms/auto-complete/RuiAutoComplete.vue.d.ts +49 -16
  6. package/dist/components/forms/auto-complete/RuiAutoComplete.vue2.js +19 -12
  7. package/dist/components/forms/auto-complete/RuiAutoComplete.vue2.js.map +1 -1
  8. package/dist/components/forms/checkbox/RuiCheckbox.vue.d.ts +2 -0
  9. package/dist/components/forms/checkbox/RuiCheckbox.vue2.js +8 -2
  10. package/dist/components/forms/checkbox/RuiCheckbox.vue2.js.map +1 -1
  11. package/dist/components/forms/radio-button/radio/RuiRadio.vue.d.ts +1 -0
  12. package/dist/components/forms/radio-button/radio/RuiRadio.vue2.js +8 -2
  13. package/dist/components/forms/radio-button/radio/RuiRadio.vue2.js.map +1 -1
  14. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue.d.ts +1 -0
  15. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue2.js +12 -3
  16. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue2.js.map +1 -1
  17. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.d.ts +1 -0
  18. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.js +2 -1
  19. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.js.map +1 -1
  20. package/dist/components/forms/select/RuiMenuSelect.vue.d.ts +49 -16
  21. package/dist/components/forms/select/RuiMenuSelect.vue2.js +15 -8
  22. package/dist/components/forms/select/RuiMenuSelect.vue2.js.map +1 -1
  23. package/dist/components/forms/slider/RuiSlider.vue.d.ts +2 -0
  24. package/dist/components/forms/slider/RuiSlider.vue2.js +17 -9
  25. package/dist/components/forms/slider/RuiSlider.vue2.js.map +1 -1
  26. package/dist/components/forms/switch/RuiSwitch.vue.d.ts +2 -0
  27. package/dist/components/forms/switch/RuiSwitch.vue2.js +8 -2
  28. package/dist/components/forms/switch/RuiSwitch.vue2.js.map +1 -1
  29. package/dist/components/forms/text-area/RuiTextArea.vue.d.ts +2 -0
  30. package/dist/components/forms/text-area/RuiTextArea.vue2.js +18 -8
  31. package/dist/components/forms/text-area/RuiTextArea.vue2.js.map +1 -1
  32. package/dist/components/forms/text-field/RuiTextField.vue.d.ts +2 -0
  33. package/dist/components/forms/text-field/RuiTextField.vue2.js +18 -8
  34. package/dist/components/forms/text-field/RuiTextField.vue2.js.map +1 -1
  35. package/dist/components/tables/RuiDataTable.vue2.js +4 -1
  36. package/dist/components/tables/RuiDataTable.vue2.js.map +1 -1
  37. package/dist/style.css +26 -26
  38. package/dist/vite-plugin/client.d.ts +15 -0
  39. package/dist/vite-plugin/index.d.ts +8 -0
  40. package/dist/vite-plugin/index.js +161 -0
  41. package/dist/vite-plugin/index.js.map +1 -0
  42. package/dist/vite-plugin/scanner.d.ts +18 -0
  43. package/dist/vite-plugin/scanner.js +63 -0
  44. package/dist/vite-plugin/scanner.js.map +1 -0
  45. package/dist/vite-plugin/types.d.ts +28 -0
  46. package/dist/web-types.json +111 -1
  47. package/package.json +17 -4
@@ -1 +1 @@
1
- {"version":3,"file":"RuiDataTable.vue2.js","sources":["../../../src/components/tables/RuiDataTable.vue"],"sourcesContent":["<script\n lang=\"ts\"\n setup\n generic=\"T extends object, IdType extends keyof T = keyof T\"\n>\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiCheckbox from '@/components/forms/checkbox/RuiCheckbox.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport RuiTooltip from '@/components/overlays/tooltip/RuiTooltip.vue';\nimport RuiProgress from '@/components/progress/RuiProgress.vue';\nimport RuiExpandButton from '@/components/tables/RuiExpandButton.vue';\nimport RuiTableHead, { type GroupData, type GroupKeys, type NoneSortableTableColumn, type SortColumn, type TableColumn, type TableRowKey, type TableRowKeyData, type TableSortData } from '@/components/tables/RuiTableHead.vue';\nimport RuiTablePagination, { type TablePaginationData } from '@/components/tables/RuiTablePagination.vue';\nimport noDataPlaceholder from '@/components/tables/table_no_data_placeholder.svg';\nimport noDataPlaceholderDark from '@/components/tables/table_no_data_placeholder_dark.svg';\nimport { assert } from '@/utils/assert';\n\nexport interface TableOptions<T> {\n pagination?: TablePaginationData;\n sort?: TableSortData<T>;\n}\n\nexport interface GroupHeader<T> {\n __header__: true;\n identifier: string;\n group: Partial<T>;\n}\n\nexport type GroupedTableRow<T> = T | GroupHeader<T>;\n\nexport interface Props<T, K extends keyof T> {\n /**\n * list of items for each row\n */\n rows: T[];\n /**\n * the attribute used to identify each row uniquely for selection, usually `id`\n */\n rowAttr: K;\n /**\n * model for selected rows, add a v-model to support row selection\n */\n modelValue?: T[K][];\n /**\n * model for internal searching\n */\n search?: string;\n /**\n * model for items per page\n * will be used if the `pagination` model isn't specified\n */\n itemsPerPage?: number;\n /**\n * model for paginating data\n * @example v-model:pagination=\"{ total: 10, limit: 5, page: 1 }\"\n */\n pagination?: TablePaginationData;\n /**\n * modifiers for specifying externally paginated tables\n * use this when api controls pagination\n * @example v-model:pagination.external=\"{ total: 10, limit: 5, page: 1 }\"\n */\n paginationModifiers?: {\n external: boolean;\n };\n /**\n * model for sort column/columns data\n * single column sort\n * @example v-model:sort=\"{ column: 'name', direction: 'asc' }\"\n * multi columns sort\n * @example v-model:sort=\"[{ column: 'name', direction: 'asc' }]\"\n */\n sort?: TableSortData<T>;\n /**\n * modifiers for specifying externally sorted tables\n * use this when api controls sorting\n * single column sort\n * @example v-model:sort.external=\"{ column: 'name', direction: 'asc' }\"\n * multi columns sort\n * @example v-model:sort.external=\"[{ column: 'name', direction: 'asc' }]\"\n */\n sortModifiers?: {\n external: boolean;\n };\n /**\n * list of column definitions\n */\n cols?: TableColumn<T>[];\n /**\n * attribute to use from column definitions to display column titles\n */\n columnAttr?: keyof TableColumn<T>;\n /**\n * flag to show a more or less spacious table\n */\n dense?: boolean;\n /**\n * flag to outline the flag with a border\n */\n outlined?: boolean;\n /**\n * should add zebra-striping to the table row\n */\n striped?: boolean;\n /**\n * flag to show loading state of the table\n * triggers indefinite progress at the bottom of the table header\n */\n loading?: boolean;\n disablePerPage?: boolean;\n /**\n * data to display for empty state\n * text and icon\n * @example :empty=\"{ icon: 'transactions-line', label: 'No transactions found' }\"\n */\n empty?: {\n label?: string;\n description?: string;\n };\n /**\n * should hide the header navigation\n */\n hideDefaultHeader?: boolean;\n /**\n * should hide the footer navigation\n */\n hideDefaultFooter?: boolean;\n\n rounded?: 'sm' | 'md' | 'lg';\n /**\n * model for expanded rows\n */\n expanded?: T[];\n /**\n * make expansion work like accordion\n */\n singleExpand?: boolean;\n /**\n * make table head stick to top on scroll\n */\n stickyHeader?: boolean;\n stickyOffset?: number;\n /**\n * Affects how the items per page work across the app.\n * When true, changing the items per page setting in one table will affect other tables.\n */\n globalItemsPerPage?: boolean;\n /**\n * model for grouping column/columns data\n * single column grouping\n * @example v-model:group=\"'name'\"\n * multi columns grouping\n * @example v-model:group=\"['name', 'country']\"\n */\n group?: TableRowKeyData<T>;\n groupExpandButtonPosition?: 'start' | 'end';\n collapsed?: T[];\n disabledRows?: T[];\n multiPageSelect?: boolean;\n scroller?: HTMLElement | null;\n itemClass?: ((item: T) => string) | string;\n}\n\ndefineOptions({\n name: 'RuiDataTable',\n});\n\nconst props = withDefaults(defineProps<Props<T, IdType>>(), {\n modelValue: undefined,\n search: '',\n cols: undefined,\n itemsPerPage: 10,\n pagination: undefined,\n columnAttr: 'label',\n sort: undefined,\n loading: false,\n dense: false,\n outlined: false,\n paginationModifiers: undefined,\n sortModifiers: undefined,\n empty: () => ({ label: 'No item found' }),\n rounded: 'md',\n hideDefaultHeader: false,\n hideDefaultFooter: false,\n disablePerPage: false,\n striped: false,\n expanded: undefined,\n singleExpand: false,\n stickyHeader: false,\n stickyOffset: undefined,\n globalItemsPerPage: undefined,\n group: undefined,\n collapsed: undefined,\n disabledRows: undefined,\n multiPageSelect: false,\n groupExpandButtonPosition: 'start',\n scroller: undefined,\n itemClass: '',\n});\n\nconst emit = defineEmits<{\n (e: 'update:model-value', value?: T[IdType][]): void;\n (e: 'update:expanded', value: T[]): void;\n (e: 'update:pagination', value: TablePaginationData): void;\n (e: 'update:sort', value?: TableSortData<T>): void;\n (e: 'update:options', value: TableOptions<T>): void;\n (e: 'update:group', value?: GroupKeys<T>): void;\n (e: 'update:collapsed', value?: T[]): void;\n (e: 'copy:group', value: GroupData<T>): void;\n}>();\n\nconst slots = defineSlots<\n Partial<Record<`header.${string}`, (props: {\n column: TableColumn<T>;\n }) => any>\n & Record<`item.${string}`, (props: {\n column: TableColumn<T>;\n row: T;\n index: number;\n }) => any>\n & {\n 'body.prepend': (props: { colspan: number }) => any;\n 'body.append': (props: { colspan: number }) => any;\n 'group.header': (props: {\n colspan: number;\n header: GroupHeader<T>;\n isOpen: boolean;\n toggle: () => void;\n }) => any;\n 'group.header.content': (props: {\n header: GroupHeader<T>;\n groupKey: string;\n }) => any;\n 'expanded-item': (props: { row: T; index: number }) => any;\n 'no-data': () => any;\n 'empty-description': () => any;\n 'tfoot': () => any;\n }>\n>();\n\nconst { stickyHeader, collapsed, modelValue, disabledRows } = toRefs(props);\nconst tableDefaults = useTable();\n\nconst { isDark } = useRotkiTheme();\n\nconst stickyHeaderOffset = computed(() => props.stickyOffset !== undefined ? props.stickyOffset : get(tableDefaults.stickyOffset));\n\nfunction isRow<T extends object>(item: GroupedTableRow<T>): item is T {\n return !('__header__' in item);\n}\n\nfunction isHeaderSlot(slotName: string): slotName is `header.${string}` {\n return slotName.startsWith('header.');\n}\n\nconst { stick, table, tableScroller } = useStickyTableHeader(\n stickyHeader,\n get(stickyHeaderOffset),\n);\n\nconst expandable = computed(() => props.expanded && slots['expanded-item']);\n\nconst headerSlots = computed<`header.${string}`[]>(() =>\n Object.keys(slots).filter(isHeaderSlot),\n);\n\nconst globalItemsPerPageSettings = computed(() => {\n if (props.globalItemsPerPage !== undefined)\n return props.globalItemsPerPage;\n\n return get(tableDefaults.globalItemsPerPage);\n});\n\nconst getKeys = <T extends object>(t: T) => Object.keys(t) as TableRowKey<T>[];\n\nconst groupKeys: ComputedRef<TableRowKey<T>[]> = computed(() => {\n const groupBy = props.group;\n\n if (!groupBy) {\n // no grouping\n return [];\n }\n\n if (!Array.isArray(groupBy)) {\n // currently only supports a single grouping\n // only the first item in the array is used\n return [groupBy];\n }\n\n return groupBy;\n});\n\nconst groupKey = computed(() => get(groupKeys).join(':'));\n\nconst isGrouped = computed(() => !!get(groupKey));\n\n/**\n * Prepare the columns from props or generate using first item in the list\n */\nconst columns = computed<TableColumn<T>[]>(() => {\n const data\n = props.cols\n ?? getKeys(props.rows[0] ?? {}).map(\n key =>\n ({\n key,\n [props.columnAttr]: String(key),\n }) satisfies NoneSortableTableColumn<T>,\n );\n\n const hasExpandColumn = data.some(row => row.key === 'expand');\n\n if (get(expandable) && !hasExpandColumn) {\n return [\n ...data,\n {\n key: 'expand' as TableRowKey<T>,\n sortable: false,\n class: 'w-16',\n cellClass: '!py-0 w-16',\n align: 'end',\n } satisfies NoneSortableTableColumn<T>,\n ];\n }\n\n const groupByKeys = get(groupKeys);\n\n if (groupByKeys.length === 0)\n return data;\n\n return data.filter(\n column => !groupByKeys.includes(column.key as TableRowKey<T>),\n );\n});\n\nconst itemsLength = ref(0);\n\nconst selectedData = computed<T[IdType][] | undefined>({\n get() {\n return get(modelValue);\n },\n set(value) {\n emit('update:model-value', value);\n },\n});\n\nconst internalSelectedData: Ref<T[IdType][]> = ref([]);\n\nwatchImmediate(modelValue, (modelValue) => {\n set(internalSelectedData, modelValue);\n});\n\nconst rowIdentifier = computed(() => props.rowAttr);\n\nconst internalPaginationState: Ref<TablePaginationData | undefined> = ref();\nconst collapsedRows: Ref<T[]> = ref([]);\n\nconst pagination = computed(() => props.pagination);\n\nwatchImmediate(pagination, (pagination) => {\n set(internalPaginationState, pagination);\n});\n\nwatchImmediate(collapsed, (value) => {\n set(collapsedRows, value ?? []);\n});\n\n/**\n * Pagination is different for search\n * since search is only used for internal filtering\n * we return the length of search results as total\n */\nconst paginationData: Ref<TablePaginationData> = computed({\n get() {\n const paginated = get(internalPaginationState);\n if (!paginated) {\n return {\n total: get(itemsLength),\n limit: props.itemsPerPage,\n page: 1,\n };\n }\n\n if (props.paginationModifiers?.external)\n return paginated;\n\n return {\n total: get(itemsLength),\n limit: paginated.limit,\n page: paginated.page,\n limits: paginated.limits,\n };\n },\n set(value: TablePaginationData) {\n set(internalPaginationState, value);\n emit('update:pagination', value);\n emit('update:options', {\n pagination: value,\n sort: props.sort,\n });\n },\n});\n\nconst sortData = computed({\n get() {\n return props.sort;\n },\n set(value) {\n if (!props.multiPageSelect)\n onToggleAll(false);\n resetCheckboxShiftState();\n emit('update:sort', value);\n emit('update:options', {\n sort: value,\n pagination: get(pagination),\n });\n },\n});\n\n/**\n * A mapping of the sort columns\n * for easily checking if a column is sorted instead of looping through the array\n */\nconst sortedMap = computed(() => {\n const mapped: Partial<Record<TableRowKey<T>, SortColumn<T>>> = {};\n const sortBy = get(sortData);\n if (!sortBy)\n return mapped;\n\n if (!Array.isArray(sortBy)) {\n if (sortBy.column)\n mapped[sortBy.column] = sortBy;\n\n return mapped;\n }\n\n return sortBy.reduce((acc, curr) => {\n if (!curr.column)\n return acc;\n\n return { ...acc, [curr.column]: curr };\n }, mapped);\n});\n\n/**\n * rows filtered based on search query if it exists\n */\nconst searchData = computed<T[]>(() => {\n const query = props.search?.toLocaleLowerCase();\n if (!query)\n return props.rows;\n\n return props.rows.filter(row =>\n getKeys(row).some(key =>\n `${row[key]}`.toLocaleLowerCase().includes(query),\n ),\n );\n});\n\n/**\n * sort the search results\n */\nconst sorted: ComputedRef<T[]> = computed(() => {\n const sortBy = get(sortData);\n const data = [...get(searchData)];\n if (!sortBy || props.sortModifiers?.external)\n return data;\n\n const sortOptions: Intl.CollatorOptions = { sensitivity: 'accent', usage: 'sort' };\n\n const sort = (by: SortColumn<T>) => {\n data.sort((a, b) => {\n const column = by.column;\n if (!column)\n return 0;\n\n let [aValue, bValue] = [a[column], b[column]];\n if (by.direction === 'desc')\n [aValue, bValue] = [bValue, aValue];\n\n const aNumber = Number(aValue);\n const bNumber = Number(bValue);\n if (!isNaN(aNumber) && !isNaN(bNumber))\n return aNumber - bNumber;\n\n return `${aValue}`.localeCompare(\n `${bValue}`,\n undefined,\n sortOptions,\n );\n });\n };\n\n if (!Array.isArray(sortBy))\n sort(sortBy);\n else\n [...sortBy].reverse().forEach(sort);\n\n return data;\n});\n\n/**\n * comprises search, sorted paginated, and grouped data\n */\nconst mappedGroups = computed<Record<string, GroupedTableRow<T>[]>>(() => {\n if (!get(isGrouped)) {\n // no grouping\n return {};\n }\n\n const result = get(sorted);\n const identifier = props.rowAttr;\n\n return result.reduce((acc: Record<string, GroupedTableRow<T>[]>, row) => {\n if (!isDefined(row[identifier]) || row[identifier] === '')\n return acc;\n\n const group = getRowGroup(row);\n const groupVal = Object.values(group).filter(isDefined).join(',');\n if (!acc[groupVal]) {\n acc[groupVal] = [\n {\n __header__: true,\n group,\n identifier: groupVal,\n } satisfies GroupHeader<T>,\n ];\n }\n\n acc[groupVal].push(row);\n\n return acc;\n }, {});\n});\n\n/**\n * comprises search, sorted paginated, and grouped data\n */\nconst grouped = computed<GroupedTableRow<T>[]>(() => {\n const result = get(sorted);\n const groupByKey = get(groupKey);\n\n if (!groupByKey) {\n // no grouping\n return result;\n }\n\n return Object.values(get(mappedGroups)).flatMap(grouped => grouped);\n});\n\n/**\n * comprises search, sorted and paginated data\n */\nconst filtered = computed<GroupedTableRow<T>[]>(() => {\n const result = get(grouped);\n\n const paginated = get(paginationData);\n const limit = paginated.limit;\n if (paginated && !props.paginationModifiers?.external) {\n const start = (paginated.page - 1) * limit;\n const end = start + limit;\n const preGroups = result.slice(0, start + 1).filter(item => !isRow(item));\n const postGroups = result.slice(start + 1, end + preGroups.length).filter(item => !isRow(item));\n const data = result.slice(start + preGroups.length, end + preGroups.length + postGroups.length);\n const nearestGroup = preGroups.at(-1);\n if (data.length > 0) {\n // if our first item is not a group, push in the nearest group\n const firstItem = data[0];\n assert(firstItem);\n if (isRow(firstItem) && nearestGroup)\n data.unshift(nearestGroup);\n const lastItem = data.at(-1);\n // if our last item is a group, remove it\n if (lastItem && !isRow(lastItem))\n data.pop();\n }\n\n return data.filter(row => !isHiddenRow(row));\n }\n\n return result.filter(row => !isHiddenRow(row));\n});\n\n/**\n * list if ids of the visible table rows used for check-all and uncheck-all\n */\nconst visibleIdentifiers = computed<T[IdType][]>(() => {\n const selectBy = props.rowAttr;\n\n if (!selectBy)\n return [];\n\n return get(filtered)\n .filter(isRow)\n .map(row => row[selectBy]);\n});\n\n/**\n * Flag to know when all rows are selected for the current screen\n */\nconst isAllSelected = computed<boolean>(() => {\n const selectedRows = get(selectedData);\n if (!selectedRows)\n return false;\n\n return (\n selectedRows.length > 0\n && get(visibleIdentifiers).every(id => selectedRows.includes(id))\n );\n});\n\nconst indeterminate = computed(() => {\n const selectedRows = get(selectedData);\n if (!selectedRows)\n return false;\n\n return selectedRows.length > 0 && !get(isAllSelected);\n});\n\nconst noData = computed(() => get(filtered).length === 0);\n\nconst colspan = computed(() => {\n let columnLength = get(columns).length;\n if (get(selectedData))\n columnLength++;\n\n return columnLength;\n});\n\nconst isSortedBy = (key: TableRowKey<T>) => key in get(sortedMap);\n\nfunction getSortIndex(key: TableRowKey<T>) {\n const sortBy = get(sortData);\n\n if (!sortBy || !Array.isArray(sortBy) || !isSortedBy(key))\n return -1;\n\n return sortBy.findIndex(sort => sort.column === key) ?? -1;\n}\n\nfunction isSelected(identifier: T[IdType]) {\n const selection = get(selectedData);\n if (!selection)\n return false;\n\n return selection.includes(identifier);\n}\n\nfunction isDisabledRow(rowKey: T[IdType]) {\n const identifier = props.rowAttr;\n if (!identifier)\n return false;\n\n return !!get(disabledRows)?.some((disabledRow: T) => rowKey === disabledRow[identifier]);\n}\n\nfunction isExpanded(identifier: T[IdType]) {\n const { expanded } = props;\n if (!expanded?.length)\n return false;\n\n return expanded.some(data => data[props.rowAttr] === identifier);\n}\n\nfunction onToggleExpand(row: T) {\n const { expanded } = props;\n if (!expanded)\n return;\n\n const key = props.rowAttr;\n const rowExpanded = isExpanded(row[key]);\n\n if (props.singleExpand)\n return emit('update:expanded', rowExpanded ? [] : [row]);\n\n return emit(\n 'update:expanded',\n rowExpanded\n ? expanded.filter(item => item[key] !== row[key])\n : [...expanded, row],\n );\n}\n\nfunction getRowGroup(row: T): Partial<T> {\n return get(groupKeys).reduce((acc, key) => ({ ...acc, [key]: row[key] }), {});\n}\n\nfunction getGroupRows(groupVal: string) {\n if (!get(isGrouped))\n return [];\n\n const groupRows = get(mappedGroups)[groupVal];\n assert(groupRows);\n return groupRows.filter(isRow);\n}\n\nfunction compareGroupsFn(a: T, b: Partial<T>) {\n const group = get(groupKeys);\n if (group.length === 0)\n return false;\n\n return group.every(key => a[key] === b[key]);\n}\n\nfunction isExpandedGroup(value: Partial<T>) {\n return get(collapsedRows).every(row => !compareGroupsFn(row, value));\n}\n\nfunction isHiddenRow(row: GroupedTableRow<T>) {\n const identifier = props.rowAttr;\n return (\n get(isGrouped)\n && get(collapsedRows).some(\n value => isRow(row) && row[identifier] === value[identifier],\n )\n );\n}\n\nfunction onToggleExpandGroup(group: Partial<T>, value?: string) {\n if (!value)\n return;\n\n const collapsed = get(collapsedRows);\n\n const groupExpanded = isExpandedGroup(group);\n\n const groupRows = getGroupRows(value);\n\n set(\n collapsedRows,\n groupExpanded\n ? [...collapsed, ...groupRows]\n : collapsed.filter(row => !compareGroupsFn(row, group)),\n );\n\n emit('update:collapsed', get(collapsedRows));\n}\n\nfunction onUngroup() {\n set(collapsedRows, []);\n\n emit('update:collapsed', []);\n emit('update:group', Array.isArray(props.group) ? [] : undefined);\n}\n\nfunction onCopyGroup(value: GroupData<T>) {\n emit('copy:group', value);\n}\n\n/**\n * Sort to handle single sort or multiple sort columns\n */\nfunction onSort({\n key,\n direction,\n}: {\n key: TableRowKey<T>;\n direction?: 'asc' | 'desc';\n}) {\n const sortBy = get(sortData);\n if (!sortBy)\n return;\n\n if (!Array.isArray(sortBy)) {\n if (isSortedBy(key)) {\n const newDirection = !direction || direction === 'asc' ? 'desc' : 'asc';\n\n if (sortBy.direction === newDirection) {\n set(sortData, { ...sortBy, column: undefined, direction: 'asc' });\n }\n else {\n set(sortData, {\n ...sortBy,\n direction: sortBy.direction === 'asc' ? 'desc' : 'asc',\n });\n }\n }\n else {\n set(sortData, { column: key, direction: direction || 'asc' });\n }\n return;\n }\n\n if (isSortedBy(key)) {\n const newDirection = !direction || direction === 'asc' ? 'desc' : 'asc';\n\n const index = getSortIndex(key);\n const sortByCol = sortBy[index];\n assert(sortByCol);\n\n if (sortByCol.direction === newDirection)\n sortBy.splice(index, 1);\n else\n sortByCol.direction = sortByCol.direction === 'asc' ? 'desc' : 'asc';\n\n set(sortData, sortBy);\n }\n else {\n set(sortData, [...sortBy, { column: key, direction: direction || 'asc' }]);\n }\n}\n\nfunction isSelectable(rowKey: T[IdType]): boolean {\n return isSelected(rowKey) || !isDisabledRow(rowKey);\n}\n\nfunction mustSelect(rowKey: T[IdType]): boolean {\n return isSelected(rowKey) && isDisabledRow(rowKey);\n}\n\n/**\n * toggles selected rows\n * @param {boolean} checked checkbox state\n */\nfunction onToggleAll(checked: boolean) {\n const selectedRows = get(selectedData) ?? [];\n if (!props.multiPageSelect) {\n if (checked)\n set(selectedData, get(visibleIdentifiers).filter(isSelectable));\n else\n set(selectedData, get(visibleIdentifiers).filter(mustSelect));\n }\n else {\n if (checked) {\n set(\n selectedData,\n Array.from(new Set(\n [\n ...selectedRows,\n ...get(visibleIdentifiers).filter(isSelectable),\n ],\n )),\n );\n }\n else {\n set(\n selectedData,\n selectedRows.filter(rowKey => !get(visibleIdentifiers).includes(rowKey) || get(visibleIdentifiers).filter(mustSelect).includes(rowKey)),\n );\n }\n }\n}\n\nconst shiftClicked: Ref<boolean> = ref(false);\nconst lastSelectedIndex: Ref<number> = ref(-1);\n\nfunction resetCheckboxShiftState() {\n set(shiftClicked, false);\n set(lastSelectedIndex, -1);\n}\n\n/**\n * toggles a single row\n * @param {boolean} checked checkbox state\n * @param {string} value the id of the selected row\n * @param {boolean} userAction whether the select triggered by user manually\n *\n */\nfunction onSelect(checked: boolean, value: T[typeof props.rowAttr], userAction = false) {\n if (get(shiftClicked) && userAction)\n return;\n\n const selectedRows = get(internalSelectedData);\n if (!selectedRows)\n return false;\n\n const selected = isSelected(value);\n\n if (checked && !selected) {\n set(internalSelectedData, [...selectedRows, value]);\n }\n else if (!checked && selected) {\n set(\n internalSelectedData,\n [...selectedRows].filter(r => r !== value),\n );\n }\n\n if (userAction)\n set(selectedData, get(internalSelectedData));\n}\n\nfunction onCheckboxClick(event: any, value: T[typeof props.rowAttr], index: number) {\n const input = event.currentTarget.querySelector('input');\n const nodeName = event.target.nodeName;\n\n const shiftKey = event.shiftKey;\n set(shiftClicked, shiftKey);\n\n if (input && nodeName !== 'INPUT') {\n if (shiftKey) {\n setTimeout(() => {\n let lastIndex = get(lastSelectedIndex);\n if (lastIndex === -1)\n lastIndex = index;\n const tableData = get(filtered);\n const lastSelectedData = tableData[lastIndex];\n assert(lastSelectedData);\n\n if (isRow(lastSelectedData)) {\n const id = get(rowIdentifier);\n const valueToApply = isSelected(lastSelectedData[id]);\n\n if (lastIndex === index) {\n onSelect(!valueToApply, value);\n }\n else {\n const from = Math.min(lastIndex, index);\n const to = Math.max(lastIndex, index);\n\n for (let i = from; i <= to; i++) {\n const currSelectedData = tableData[i];\n assert(currSelectedData);\n if (isRow(currSelectedData) && !isDisabledRow(currSelectedData[id]))\n onSelect(valueToApply, currSelectedData[id]);\n }\n }\n\n set(lastSelectedIndex, index);\n set(selectedData, get(internalSelectedData));\n }\n }, 1);\n }\n\n else { set(lastSelectedIndex, index); }\n }\n}\n\nconst search = computed(() => props.search);\n\nfunction deselectRemovedRows() {\n get(selectedData)?.forEach((key: T[IdType]) => {\n if (isSelected(key) && !get(visibleIdentifiers).includes(key))\n onSelect(false, key, true);\n });\n}\n\nfunction onPaginate() {\n emit('update:expanded', []);\n if (!props.multiPageSelect)\n onToggleAll(false);\n resetCheckboxShiftState();\n}\n\nfunction setInternalTotal(items: GroupedTableRow<T>[]) {\n if (!props.paginationModifiers?.external)\n set(itemsLength, items.filter(isRow).length);\n}\n\nfunction cellValue(row: T, key: TableColumn<T>['key']) {\n return row[key as TableRowKey<T>];\n}\n\n/**\n * Keeps the global items per page in sync with the internal state.\n */\nwatch(internalPaginationState, (pagination) => {\n if (pagination?.limit && get(globalItemsPerPageSettings))\n set(tableDefaults.itemsPerPage, pagination.limit);\n});\n\nwatch(tableDefaults.itemsPerPage, (itemsPerPage) => {\n if (!get(globalItemsPerPageSettings))\n return;\n\n set(paginationData, {\n ...get(paginationData),\n limit: itemsPerPage,\n });\n});\n\n/**\n * on changing search query, need to reset pagination page to 1\n */\nwatch(search, () => {\n set(paginationData, {\n ...get(paginationData),\n page: 1,\n });\n onToggleAll(false);\n resetCheckboxShiftState();\n});\n\nwatch(sorted, (items) => {\n if (!props.multiPageSelect)\n deselectRemovedRows();\n setInternalTotal(items);\n});\n\n/**\n * Automatically adjust page when current page exceeds maximum available pages\n * This can happen when total data decreases while user is on a higher page\n */\nwatch(paginationData, (pagination) => {\n const { total, limit, page } = pagination;\n const maxPages = Math.ceil(total / limit);\n\n if (maxPages > 0 && page > maxPages) {\n set(paginationData, {\n ...pagination,\n page: maxPages,\n });\n }\n});\n\nonMounted(() => {\n setInternalTotal(get(sorted));\n\n if (!get(globalItemsPerPageSettings))\n return;\n\n set(paginationData, {\n ...get(paginationData),\n limit: get(tableDefaults.itemsPerPage),\n });\n});\n</script>\n\n<template>\n <div\n :class=\"[\n $style.wrapper,\n $style[`rounded__${rounded}`],\n { [$style.outlined]: outlined },\n ]\"\n >\n <RuiTablePagination\n v-if=\"paginationData && !hideDefaultHeader\"\n v-model=\"paginationData\"\n :dense=\"dense\"\n :loading=\"loading\"\n :disable-per-page=\"disablePerPage\"\n data-cy=\"table-pagination\"\n @update:model-value=\"onPaginate()\"\n />\n <div\n ref=\"tableScroller\"\n :class=\"$style.scroller\"\n >\n <table\n ref=\"table\"\n :class=\"[$style.table, { [$style.dense]: dense }]\"\n aria-label=\"\"\n >\n <RuiTableHead\n :loading=\"loading\"\n :indeterminate=\"indeterminate\"\n :capitalize-headers=\"!cols\"\n :colspan=\"colspan\"\n :column-attr=\"columnAttr\"\n :columns=\"columns\"\n :dense=\"dense\"\n :disable-check-all=\"!filtered?.length\"\n :is-all-selected=\"isAllSelected\"\n :no-data=\"noData\"\n :selectable=\"!!selectedData\"\n :sort-data=\"sortData\"\n :sorted-map=\"sortedMap\"\n :stick=\"stick\"\n :sticky-header=\"stickyHeader\"\n @sort=\"onSort($event)\"\n @select:all=\"onToggleAll($event)\"\n >\n <template\n v-for=\"headerSlot in headerSlots\"\n #[headerSlot]=\"slotData\"\n >\n <slot\n :name=\"headerSlot\"\n v-bind=\"slotData\"\n />\n </template>\n </RuiTableHead>\n <RuiTableHead\n v-if=\"stickyHeader\"\n :loading=\"loading\"\n :capitalize-headers=\"!cols\"\n :colspan=\"colspan\"\n :column-attr=\"columnAttr\"\n :columns=\"columns\"\n :dense=\"dense\"\n :no-data=\"noData\"\n :selectable=\"!!selectedData\"\n :sort-data=\"sortData\"\n :sorted-map=\"sortedMap\"\n data-id=\"head-clone\"\n class=\"opacity-0 invisible\"\n >\n <template\n v-for=\"headerSlot in headerSlots\"\n #[headerSlot]=\"slotData\"\n >\n <slot\n :name=\"headerSlot\"\n v-bind=\"slotData\"\n />\n </template>\n </RuiTableHead>\n <tbody :class=\"[$style.tbody, { [$style['tbody--striped'] ?? '']: striped }]\">\n <slot\n v-if=\"slots['body.prepend']\"\n :colspan=\"colspan\"\n name=\"body.prepend\"\n />\n <template v-for=\"(row, index) in filtered\">\n <tr\n v-if=\"!isRow(row)\"\n :key=\"`row-${index}`\"\n :class=\"[$style.tr, $style.tr__group]\"\n >\n <slot\n name=\"group.header\"\n :colspan=\"colspan\"\n :header=\"row\"\n :is-open=\"isExpandedGroup(row.group)\"\n :toggle=\"() => onToggleExpandGroup(row.group, row.identifier)\"\n >\n <td\n :class=\"[$style.td]\"\n class=\"!p-2\"\n :colspan=\"colspan\"\n >\n <div class=\"flex items-center gap-2\">\n <RuiExpandButton\n v-if=\"groupExpandButtonPosition === 'start'\"\n :expanded=\"isExpandedGroup(row.group)\"\n @click=\"onToggleExpandGroup(row.group, row.identifier)\"\n />\n <slot\n :group-key=\"groupKey\"\n name=\"group.header.content\"\n :header=\"row\"\n >\n <span>{{ groupKey }}: {{ row.identifier }}</span>\n <RuiButton\n size=\"sm\"\n variant=\"text\"\n icon\n @click=\"\n onCopyGroup({ key: groupKey, value: row.group })\n \"\n >\n <RuiIcon\n name=\"lu-copy\"\n size=\"16\"\n />\n </RuiButton>\n </slot>\n <RuiTooltip\n :popper=\"{ placement: 'top' }\"\n class=\"ml-auto mr-2\"\n >\n <template #activator>\n <RuiButton\n size=\"sm\"\n variant=\"text\"\n icon\n @click=\"onUngroup()\"\n >\n <RuiIcon\n name=\"lu-trash-2\"\n size=\"14\"\n />\n </RuiButton>\n </template>\n Ungroup\n </RuiTooltip>\n <RuiExpandButton\n v-if=\"groupExpandButtonPosition === 'end'\"\n :expanded=\"isExpandedGroup(row.group)\"\n @click=\"onToggleExpandGroup(row.group, row.identifier)\"\n />\n </div>\n </td>\n </slot>\n </tr>\n <template v-else>\n <tr\n :key=\"`row-${index}`\"\n :class=\"[\n $style.tr,\n { [$style.tr__selected ?? '']: isSelected(row[rowIdentifier]) },\n typeof itemClass === 'string' ? itemClass : itemClass(row),\n ]\"\n >\n <td\n v-if=\"selectedData\"\n :class=\"$style.checkbox\"\n colspan=\"1\"\n rowspan=\"1\"\n >\n <RuiCheckbox\n :data-cy=\"`table-toggle-check-${index}`\"\n :model-value=\"isSelected(row[rowIdentifier])\"\n :disabled=\"isDisabledRow(row[rowIdentifier])\"\n :size=\"dense ? 'sm' : undefined\"\n color=\"primary\"\n class=\"select-none\"\n hide-details\n @update:model-value=\"onSelect($event, row[rowIdentifier], true)\"\n @click=\"onCheckboxClick($event, row[rowIdentifier], index)\"\n />\n </td>\n\n <td\n v-for=\"(column, subIndex) in columns\"\n :key=\"subIndex\"\n :class=\"[\n $style.td,\n column.cellClass,\n $style[`align__${column.align ?? 'start'}`],\n ]\"\n :colspan=\"column.colspan ?? 1\"\n :rowspan=\"column.rowspan ?? 1\"\n >\n <slot\n v-if=\"column.key === 'expand'\"\n :name=\"`item.${column.key.toString()}`\"\n :column=\"column\"\n :row=\"row\"\n :index=\"index\"\n >\n <RuiExpandButton\n v-if=\"!slots['item.expand']\"\n :expanded=\"isExpanded(row[rowIdentifier])\"\n @click=\"onToggleExpand(row)\"\n />\n </slot>\n <slot\n v-else\n :column=\"column\"\n :index=\"index\"\n :name=\"`item.${column.key.toString()}`\"\n :row=\"row\"\n >\n {{ cellValue(row, column.key) }}\n </slot>\n </td>\n </tr>\n\n <tr\n v-if=\"expandable && isExpanded(row[rowIdentifier])\"\n :key=\"`row-expand-${index}`\"\n :class=\"[$style.tr, $style.tr__expandable]\"\n >\n <td\n :colspan=\"colspan\"\n :class=\"[$style.td]\"\n >\n <slot\n name=\"expanded-item\"\n :row=\"row\"\n :index=\"index\"\n />\n </td>\n </tr>\n </template>\n </template>\n <tr\n v-if=\"loading && noData\"\n >\n <td\n :class=\"$style.tbody__loader\"\n :colspan=\"colspan\"\n >\n <RuiProgress\n color=\"primary\"\n variant=\"indeterminate\"\n circular\n />\n </td>\n </tr>\n <tr\n v-if=\"noData && empty && !loading\"\n :class=\"[$style.tr, $style.tr__empty]\"\n >\n <Transition\n appear\n enter-active-class=\"transition ease-out duration-200 delay-200\"\n enter-from-class=\"opacity-0 translate-y-1\"\n enter-to-class=\"opacity-100 translate-y-0\"\n leave-active-class=\"transition ease-in duration-150\"\n leave-from-class=\"opacity-100 translate-y-0\"\n leave-to-class=\"opacity-0 translate-y-1\"\n >\n <td\n :class=\"$style.td\"\n :colspan=\"colspan\"\n >\n <slot name=\"no-data\">\n <div :class=\"$style.empty\">\n <img\n :src=\"isDark ? noDataPlaceholderDark : noDataPlaceholder\"\n :alt=\"empty.label\"\n class=\"h-32\"\n />\n <p\n v-if=\"empty.label\"\n :class=\"$style.empty__label\"\n >\n {{ empty.label }}\n </p>\n\n <slot name=\"empty-description\">\n <p\n v-if=\"empty.description\"\n :class=\"$style.empty__description\"\n >\n {{ empty.description }}\n </p>\n </slot>\n </div>\n </slot>\n </td>\n </Transition>\n </tr>\n <slot\n v-if=\"slots['body.append']\"\n :colspan=\"colspan\"\n name=\"body.append\"\n />\n </tbody>\n <tfoot>\n <slot name=\"tfoot\" />\n </tfoot>\n </table>\n </div>\n <RuiTablePagination\n v-if=\"paginationData && !hideDefaultFooter\"\n v-model=\"paginationData\"\n :dense=\"dense\"\n :loading=\"loading\"\n :disable-per-page=\"disablePerPage\"\n data-cy=\"table-pagination\"\n @update:model-value=\"onPaginate()\"\n />\n </div>\n</template>\n\n<style module lang=\"scss\">\n.wrapper {\n @apply relative divide-y divide-black/[0.12] overflow-hidden;\n &.outlined {\n @apply border border-black/[0.12];\n }\n\n &.rounded__sm {\n @apply rounded-[.25rem];\n\n .image {\n @apply rounded-t-[.25rem];\n }\n }\n\n &.rounded__md {\n @apply rounded-[.75rem];\n\n .image {\n @apply rounded-t-[.75rem];\n }\n }\n\n &.rounded__lg {\n @apply rounded-[1rem];\n\n .image {\n @apply rounded-t-[1rem];\n }\n }\n\n .scroller {\n @apply overflow-x-auto overflow-y-hidden;\n clip-path: inset(0 0 0 0);\n }\n\n .table {\n @apply min-w-full table-fixed divide-y divide-black/[0.12] whitespace-nowrap mx-auto my-0 max-w-fit relative border-black/[0.12];\n\n .tbody {\n @apply divide-y divide-black/[0.12];\n\n &--striped {\n > .tr {\n &:nth-child(even) {\n @apply bg-rui-grey-50;\n }\n }\n }\n\n > .tr {\n @apply hover:bg-black/[0.04];\n\n &__selected {\n @apply bg-rui-primary/[0.08];\n }\n\n &__empty {\n @apply hover:bg-transparent;\n }\n\n &__expandable {\n @apply bg-[#f9fafb] hover:bg-[#f9fafb];\n }\n\n &__group {\n @apply bg-black/[0.02];\n }\n\n .td {\n @apply p-4 text-rui-text text-body-2;\n text-wrap: initial;\n\n &.align__start {\n @apply text-left rtl:text-right;\n }\n\n &.align__center {\n @apply text-center;\n }\n\n &.align__end {\n @apply text-right rtl:text-left;\n }\n\n .empty {\n @apply flex flex-col gap-3 items-center justify-center flex-1 min-h-[4.4rem] my-4;\n\n &__label {\n @apply text-body-1 leading-none font-bold text-center text-current pb-0 mb-0;\n }\n\n &__description {\n @apply text-body-2 text-center text-rui-text-secondary pb-0 mb-0;\n }\n }\n }\n }\n\n &__loader {\n @apply py-8 text-center;\n }\n }\n\n .checkbox {\n @apply px-2 w-[3.625rem] max-w-[3.625rem];\n label {\n @apply ml-0;\n }\n }\n\n &.dense {\n .tbody {\n .td {\n @apply py-[0.38rem];\n }\n }\n }\n }\n}\n\n:global(.dark) {\n .wrapper {\n @apply divide-white/[0.12];\n\n &.outlined {\n @apply border-white/[0.12];\n }\n\n .table {\n @apply divide-white/[0.12] border-white/[0.12];\n\n .tbody {\n @apply divide-white/[0.12];\n\n &--striped {\n > .tr {\n &:nth-child(even) {\n @apply bg-rui-grey-900;\n }\n }\n }\n\n > .tr {\n @apply hover:bg-white/[0.04];\n\n &__selected {\n @apply bg-rui-dark-primary/[0.08];\n }\n\n &__expandable {\n @apply bg-[#121212] hover:bg-[#121212];\n }\n\n &__group {\n @apply bg-white/[0.02];\n }\n }\n }\n }\n }\n}\n</style>\n"],"names":["_useSlots","modelValue","pagination","grouped","collapsed","_createElementBlock","_normalizeClass","$style","_unref","_createBlock","_createElementVNode","_createVNode","_renderList","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps","_openBlock","_Fragment","_toDisplayString","_createTextVNode","_Transition"],"mappings":"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"}
1
+ {"version":3,"file":"RuiDataTable.vue2.js","sources":["../../../src/components/tables/RuiDataTable.vue"],"sourcesContent":["<script\n lang=\"ts\"\n setup\n generic=\"T extends object, IdType extends keyof T = keyof T\"\n>\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiCheckbox from '@/components/forms/checkbox/RuiCheckbox.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport RuiTooltip from '@/components/overlays/tooltip/RuiTooltip.vue';\nimport RuiProgress from '@/components/progress/RuiProgress.vue';\nimport RuiExpandButton from '@/components/tables/RuiExpandButton.vue';\nimport RuiTableHead, { type GroupData, type GroupKeys, type NoneSortableTableColumn, type SortColumn, type TableColumn, type TableRowKey, type TableRowKeyData, type TableSortData } from '@/components/tables/RuiTableHead.vue';\nimport RuiTablePagination, { type TablePaginationData } from '@/components/tables/RuiTablePagination.vue';\nimport noDataPlaceholder from '@/components/tables/table_no_data_placeholder.svg';\nimport noDataPlaceholderDark from '@/components/tables/table_no_data_placeholder_dark.svg';\nimport { assert } from '@/utils/assert';\n\nexport interface TableOptions<T> {\n pagination?: TablePaginationData;\n sort?: TableSortData<T>;\n}\n\nexport interface GroupHeader<T> {\n __header__: true;\n identifier: string;\n group: Partial<T>;\n}\n\nexport type GroupedTableRow<T> = T | GroupHeader<T>;\n\nexport interface Props<T, K extends keyof T> {\n /**\n * list of items for each row\n */\n rows: T[];\n /**\n * the attribute used to identify each row uniquely for selection, usually `id`\n */\n rowAttr: K;\n /**\n * model for selected rows, add a v-model to support row selection\n */\n modelValue?: T[K][];\n /**\n * model for internal searching\n */\n search?: string;\n /**\n * model for items per page\n * will be used if the `pagination` model isn't specified\n */\n itemsPerPage?: number;\n /**\n * model for paginating data\n * @example v-model:pagination=\"{ total: 10, limit: 5, page: 1 }\"\n */\n pagination?: TablePaginationData;\n /**\n * modifiers for specifying externally paginated tables\n * use this when api controls pagination\n * @example v-model:pagination.external=\"{ total: 10, limit: 5, page: 1 }\"\n */\n paginationModifiers?: {\n external: boolean;\n };\n /**\n * model for sort column/columns data\n * single column sort\n * @example v-model:sort=\"{ column: 'name', direction: 'asc' }\"\n * multi columns sort\n * @example v-model:sort=\"[{ column: 'name', direction: 'asc' }]\"\n */\n sort?: TableSortData<T>;\n /**\n * modifiers for specifying externally sorted tables\n * use this when api controls sorting\n * single column sort\n * @example v-model:sort.external=\"{ column: 'name', direction: 'asc' }\"\n * multi columns sort\n * @example v-model:sort.external=\"[{ column: 'name', direction: 'asc' }]\"\n */\n sortModifiers?: {\n external: boolean;\n };\n /**\n * list of column definitions\n */\n cols?: TableColumn<T>[];\n /**\n * attribute to use from column definitions to display column titles\n */\n columnAttr?: keyof TableColumn<T>;\n /**\n * flag to show a more or less spacious table\n */\n dense?: boolean;\n /**\n * flag to outline the flag with a border\n */\n outlined?: boolean;\n /**\n * should add zebra-striping to the table row\n */\n striped?: boolean;\n /**\n * flag to show loading state of the table\n * triggers indefinite progress at the bottom of the table header\n */\n loading?: boolean;\n disablePerPage?: boolean;\n /**\n * data to display for empty state\n * text and icon\n * @example :empty=\"{ icon: 'transactions-line', label: 'No transactions found' }\"\n */\n empty?: {\n label?: string;\n description?: string;\n };\n /**\n * should hide the header navigation\n */\n hideDefaultHeader?: boolean;\n /**\n * should hide the footer navigation\n */\n hideDefaultFooter?: boolean;\n\n rounded?: 'sm' | 'md' | 'lg';\n /**\n * model for expanded rows\n */\n expanded?: T[];\n /**\n * make expansion work like accordion\n */\n singleExpand?: boolean;\n /**\n * make table head stick to top on scroll\n */\n stickyHeader?: boolean;\n stickyOffset?: number;\n /**\n * Affects how the items per page work across the app.\n * When true, changing the items per page setting in one table will affect other tables.\n */\n globalItemsPerPage?: boolean;\n /**\n * model for grouping column/columns data\n * single column grouping\n * @example v-model:group=\"'name'\"\n * multi columns grouping\n * @example v-model:group=\"['name', 'country']\"\n */\n group?: TableRowKeyData<T>;\n groupExpandButtonPosition?: 'start' | 'end';\n collapsed?: T[];\n disabledRows?: T[];\n multiPageSelect?: boolean;\n scroller?: HTMLElement | null;\n itemClass?: ((item: T) => string) | string;\n}\n\ndefineOptions({\n name: 'RuiDataTable',\n});\n\nconst props = withDefaults(defineProps<Props<T, IdType>>(), {\n modelValue: undefined,\n search: '',\n cols: undefined,\n itemsPerPage: 10,\n pagination: undefined,\n columnAttr: 'label',\n sort: undefined,\n loading: false,\n dense: false,\n outlined: false,\n paginationModifiers: undefined,\n sortModifiers: undefined,\n empty: () => ({ label: 'No item found' }),\n rounded: 'md',\n hideDefaultHeader: false,\n hideDefaultFooter: false,\n disablePerPage: false,\n striped: false,\n expanded: undefined,\n singleExpand: false,\n stickyHeader: false,\n stickyOffset: undefined,\n globalItemsPerPage: undefined,\n group: undefined,\n collapsed: undefined,\n disabledRows: undefined,\n multiPageSelect: false,\n groupExpandButtonPosition: 'start',\n scroller: undefined,\n itemClass: '',\n});\n\nconst emit = defineEmits<{\n (e: 'update:model-value', value?: T[IdType][]): void;\n (e: 'update:expanded', value: T[]): void;\n (e: 'update:pagination', value: TablePaginationData): void;\n (e: 'update:sort', value?: TableSortData<T>): void;\n (e: 'update:options', value: TableOptions<T>): void;\n (e: 'update:group', value?: GroupKeys<T>): void;\n (e: 'update:collapsed', value?: T[]): void;\n (e: 'copy:group', value: GroupData<T>): void;\n}>();\n\nconst slots = defineSlots<\n Partial<Record<`header.${string}`, (props: {\n column: TableColumn<T>;\n }) => any>\n & Record<`item.${string}`, (props: {\n column: TableColumn<T>;\n row: T;\n index: number;\n }) => any>\n & {\n 'body.prepend': (props: { colspan: number }) => any;\n 'body.append': (props: { colspan: number }) => any;\n 'group.header': (props: {\n colspan: number;\n header: GroupHeader<T>;\n isOpen: boolean;\n toggle: () => void;\n }) => any;\n 'group.header.content': (props: {\n header: GroupHeader<T>;\n groupKey: string;\n }) => any;\n 'expanded-item': (props: { row: T; index: number }) => any;\n 'no-data': () => any;\n 'empty-description': () => any;\n 'tfoot': () => any;\n }>\n>();\n\nconst { stickyHeader, collapsed, modelValue, disabledRows } = toRefs(props);\nconst tableDefaults = useTable();\n\nconst { isDark } = useRotkiTheme();\n\nconst stickyHeaderOffset = computed(() => props.stickyOffset !== undefined ? props.stickyOffset : get(tableDefaults.stickyOffset));\n\nfunction isRow<T extends object>(item: GroupedTableRow<T>): item is T {\n return !('__header__' in item);\n}\n\nfunction isHeaderSlot(slotName: string): slotName is `header.${string}` {\n return slotName.startsWith('header.');\n}\n\nconst { stick, table, tableScroller } = useStickyTableHeader(\n stickyHeader,\n get(stickyHeaderOffset),\n);\n\nconst expandable = computed(() => props.expanded && slots['expanded-item']);\n\nconst headerSlots = computed<`header.${string}`[]>(() =>\n Object.keys(slots).filter(isHeaderSlot),\n);\n\nconst globalItemsPerPageSettings = computed(() => {\n if (props.globalItemsPerPage !== undefined)\n return props.globalItemsPerPage;\n\n return get(tableDefaults.globalItemsPerPage);\n});\n\nconst getKeys = <T extends object>(t: T) => Object.keys(t) as TableRowKey<T>[];\n\nconst groupKeys: ComputedRef<TableRowKey<T>[]> = computed(() => {\n const groupBy = props.group;\n\n if (!groupBy) {\n // no grouping\n return [];\n }\n\n if (!Array.isArray(groupBy)) {\n // currently only supports a single grouping\n // only the first item in the array is used\n return [groupBy];\n }\n\n return groupBy;\n});\n\nconst groupKey = computed(() => get(groupKeys).join(':'));\n\nconst isGrouped = computed(() => !!get(groupKey));\n\n/**\n * Prepare the columns from props or generate using first item in the list\n */\nconst columns = computed<TableColumn<T>[]>(() => {\n const data\n = props.cols\n ?? getKeys(props.rows[0] ?? {}).map(\n key =>\n ({\n key,\n [props.columnAttr]: String(key),\n }) satisfies NoneSortableTableColumn<T>,\n );\n\n const hasExpandColumn = data.some(row => row.key === 'expand');\n\n if (get(expandable) && !hasExpandColumn) {\n return [\n ...data,\n {\n key: 'expand' as TableRowKey<T>,\n sortable: false,\n class: 'w-16',\n cellClass: '!py-0 w-16',\n align: 'end',\n } satisfies NoneSortableTableColumn<T>,\n ];\n }\n\n const groupByKeys = get(groupKeys);\n\n if (groupByKeys.length === 0)\n return data;\n\n return data.filter(\n column => !groupByKeys.includes(column.key as TableRowKey<T>),\n );\n});\n\nconst itemsLength = ref(0);\n\nconst selectedData = computed<T[IdType][] | undefined>({\n get() {\n return get(modelValue);\n },\n set(value) {\n emit('update:model-value', value);\n },\n});\n\nconst internalSelectedData: Ref<T[IdType][]> = ref([]);\n\nwatchImmediate(modelValue, (modelValue) => {\n set(internalSelectedData, modelValue);\n});\n\nconst rowIdentifier = computed(() => props.rowAttr);\n\nconst internalPaginationState: Ref<TablePaginationData | undefined> = ref();\nconst collapsedRows: Ref<T[]> = ref([]);\n\nconst pagination = computed(() => props.pagination);\n\nwatchImmediate(pagination, (pagination) => {\n set(internalPaginationState, pagination);\n});\n\nwatchImmediate(collapsed, (value) => {\n set(collapsedRows, value ?? []);\n});\n\n/**\n * Pagination is different for search\n * since search is only used for internal filtering\n * we return the length of search results as total\n */\nconst paginationData: Ref<TablePaginationData> = computed({\n get() {\n const paginated = get(internalPaginationState);\n if (!paginated) {\n return {\n total: get(itemsLength),\n limit: props.itemsPerPage,\n page: 1,\n };\n }\n\n if (props.paginationModifiers?.external)\n return paginated;\n\n return {\n total: get(itemsLength),\n limit: paginated.limit,\n page: paginated.page,\n limits: paginated.limits,\n };\n },\n set(value: TablePaginationData) {\n set(internalPaginationState, value);\n emit('update:pagination', value);\n emit('update:options', {\n pagination: value,\n sort: props.sort,\n });\n },\n});\n\nconst sortData = computed({\n get() {\n return props.sort;\n },\n set(value) {\n if (!props.multiPageSelect)\n onToggleAll(false);\n resetCheckboxShiftState();\n emit('update:sort', value);\n emit('update:options', {\n sort: value,\n pagination: get(pagination),\n });\n },\n});\n\n/**\n * A mapping of the sort columns\n * for easily checking if a column is sorted instead of looping through the array\n */\nconst sortedMap = computed(() => {\n const mapped: Partial<Record<TableRowKey<T>, SortColumn<T>>> = {};\n const sortBy = get(sortData);\n if (!sortBy)\n return mapped;\n\n if (!Array.isArray(sortBy)) {\n if (sortBy.column)\n mapped[sortBy.column] = sortBy;\n\n return mapped;\n }\n\n return sortBy.reduce((acc, curr) => {\n if (!curr.column)\n return acc;\n\n return { ...acc, [curr.column]: curr };\n }, mapped);\n});\n\n/**\n * rows filtered based on search query if it exists\n */\nconst searchData = computed<T[]>(() => {\n const query = props.search?.toLocaleLowerCase();\n if (!query)\n return props.rows;\n\n return props.rows.filter(row =>\n getKeys(row).some(key =>\n `${row[key]}`.toLocaleLowerCase().includes(query),\n ),\n );\n});\n\n/**\n * sort the search results\n */\nconst sorted: ComputedRef<T[]> = computed(() => {\n const sortBy = get(sortData);\n const data = [...get(searchData)];\n if (!sortBy || props.sortModifiers?.external)\n return data;\n\n const sortOptions: Intl.CollatorOptions = { sensitivity: 'accent', usage: 'sort' };\n\n const sort = (by: SortColumn<T>) => {\n data.sort((a, b) => {\n const column = by.column;\n if (!column)\n return 0;\n\n let [aValue, bValue] = [a[column], b[column]];\n if (by.direction === 'desc')\n [aValue, bValue] = [bValue, aValue];\n\n const aNumber = Number(aValue);\n const bNumber = Number(bValue);\n if (!isNaN(aNumber) && !isNaN(bNumber))\n return aNumber - bNumber;\n\n return `${aValue}`.localeCompare(\n `${bValue}`,\n undefined,\n sortOptions,\n );\n });\n };\n\n if (!Array.isArray(sortBy))\n sort(sortBy);\n else\n [...sortBy].reverse().forEach(sort);\n\n return data;\n});\n\n/**\n * comprises search, sorted paginated, and grouped data\n */\nconst mappedGroups = computed<Record<string, GroupedTableRow<T>[]>>(() => {\n if (!get(isGrouped)) {\n // no grouping\n return {};\n }\n\n const result = get(sorted);\n const identifier = props.rowAttr;\n\n return result.reduce((acc: Record<string, GroupedTableRow<T>[]>, row) => {\n if (!isDefined(row[identifier]) || row[identifier] === '')\n return acc;\n\n const group = getRowGroup(row);\n const groupVal = Object.values(group).filter(isDefined).join(',');\n if (!acc[groupVal]) {\n acc[groupVal] = [\n {\n __header__: true,\n group,\n identifier: groupVal,\n } satisfies GroupHeader<T>,\n ];\n }\n\n acc[groupVal].push(row);\n\n return acc;\n }, {});\n});\n\n/**\n * comprises search, sorted paginated, and grouped data\n */\nconst grouped = computed<GroupedTableRow<T>[]>(() => {\n const result = get(sorted);\n const groupByKey = get(groupKey);\n\n if (!groupByKey) {\n // no grouping\n return result;\n }\n\n return Object.values(get(mappedGroups)).flatMap(grouped => grouped);\n});\n\n/**\n * comprises search, sorted and paginated data\n */\nconst filtered = computed<GroupedTableRow<T>[]>(() => {\n const result = get(grouped);\n\n const paginated = get(paginationData);\n const limit = paginated.limit;\n if (paginated && !props.paginationModifiers?.external) {\n const start = (paginated.page - 1) * limit;\n const end = start + limit;\n const preGroups = result.slice(0, start + 1).filter(item => !isRow(item));\n const postGroups = result.slice(start + 1, end + preGroups.length).filter(item => !isRow(item));\n const data = result.slice(start + preGroups.length, end + preGroups.length + postGroups.length);\n const nearestGroup = preGroups.at(-1);\n if (data.length > 0) {\n // if our first item is not a group, push in the nearest group\n const firstItem = data[0];\n assert(firstItem);\n if (isRow(firstItem) && nearestGroup)\n data.unshift(nearestGroup);\n const lastItem = data.at(-1);\n // if our last item is a group, remove it\n if (lastItem && !isRow(lastItem))\n data.pop();\n }\n\n return data.filter(row => !isHiddenRow(row));\n }\n\n return result.filter(row => !isHiddenRow(row));\n});\n\n/**\n * list if ids of the visible table rows used for check-all and uncheck-all\n */\nconst visibleIdentifiers = computed<T[IdType][]>(() => {\n const selectBy = props.rowAttr;\n\n if (!selectBy)\n return [];\n\n return get(filtered)\n .filter(isRow)\n .map(row => row[selectBy]);\n});\n\n/**\n * Flag to know when all rows are selected for the current screen\n */\nconst isAllSelected = computed<boolean>(() => {\n const selectedRows = get(selectedData);\n if (!selectedRows)\n return false;\n\n return (\n selectedRows.length > 0\n && get(visibleIdentifiers).every(id => selectedRows.includes(id))\n );\n});\n\nconst indeterminate = computed(() => {\n const selectedRows = get(selectedData);\n if (!selectedRows)\n return false;\n\n return selectedRows.length > 0 && !get(isAllSelected);\n});\n\nconst noData = computed(() => get(filtered).length === 0);\n\nconst colspan = computed(() => {\n let columnLength = get(columns).length;\n if (get(selectedData))\n columnLength++;\n\n return columnLength;\n});\n\nconst isSortedBy = (key: TableRowKey<T>) => key in get(sortedMap);\n\nfunction getSortIndex(key: TableRowKey<T>) {\n const sortBy = get(sortData);\n\n if (!sortBy || !Array.isArray(sortBy) || !isSortedBy(key))\n return -1;\n\n return sortBy.findIndex(sort => sort.column === key) ?? -1;\n}\n\nfunction isSelected(identifier: T[IdType]) {\n const selection = get(selectedData);\n if (!selection)\n return false;\n\n return selection.includes(identifier);\n}\n\nfunction isDisabledRow(rowKey: T[IdType]) {\n const identifier = props.rowAttr;\n if (!identifier)\n return false;\n\n return !!get(disabledRows)?.some((disabledRow: T) => rowKey === disabledRow[identifier]);\n}\n\nfunction isExpanded(identifier: T[IdType]) {\n const { expanded } = props;\n if (!expanded?.length)\n return false;\n\n return expanded.some(data => data[props.rowAttr] === identifier);\n}\n\nfunction onToggleExpand(row: T) {\n const { expanded } = props;\n if (!expanded)\n return;\n\n const key = props.rowAttr;\n const rowExpanded = isExpanded(row[key]);\n\n if (props.singleExpand)\n return emit('update:expanded', rowExpanded ? [] : [row]);\n\n return emit(\n 'update:expanded',\n rowExpanded\n ? expanded.filter(item => item[key] !== row[key])\n : [...expanded, row],\n );\n}\n\nfunction getRowGroup(row: T): Partial<T> {\n return get(groupKeys).reduce((acc, key) => ({ ...acc, [key]: row[key] }), {});\n}\n\nfunction getGroupRows(groupVal: string) {\n if (!get(isGrouped))\n return [];\n\n const groupRows = get(mappedGroups)[groupVal];\n assert(groupRows);\n return groupRows.filter(isRow);\n}\n\nfunction compareGroupsFn(a: T, b: Partial<T>) {\n const group = get(groupKeys);\n if (group.length === 0)\n return false;\n\n return group.every(key => a[key] === b[key]);\n}\n\nfunction isExpandedGroup(value: Partial<T>) {\n return get(collapsedRows).every(row => !compareGroupsFn(row, value));\n}\n\nfunction isHiddenRow(row: GroupedTableRow<T>) {\n const identifier = props.rowAttr;\n return (\n get(isGrouped)\n && get(collapsedRows).some(\n value => isRow(row) && row[identifier] === value[identifier],\n )\n );\n}\n\nfunction onToggleExpandGroup(group: Partial<T>, value?: string) {\n if (!value)\n return;\n\n const collapsed = get(collapsedRows);\n\n const groupExpanded = isExpandedGroup(group);\n\n const groupRows = getGroupRows(value);\n\n set(\n collapsedRows,\n groupExpanded\n ? [...collapsed, ...groupRows]\n : collapsed.filter(row => !compareGroupsFn(row, group)),\n );\n\n emit('update:collapsed', get(collapsedRows));\n}\n\nfunction onUngroup() {\n set(collapsedRows, []);\n\n emit('update:collapsed', []);\n emit('update:group', Array.isArray(props.group) ? [] : undefined);\n}\n\nfunction onCopyGroup(value: GroupData<T>) {\n emit('copy:group', value);\n}\n\n/**\n * Sort to handle single sort or multiple sort columns\n */\nfunction onSort({\n key,\n direction,\n}: {\n key: TableRowKey<T>;\n direction?: 'asc' | 'desc';\n}) {\n const sortBy = get(sortData);\n if (!sortBy)\n return;\n\n if (!Array.isArray(sortBy)) {\n if (isSortedBy(key)) {\n const newDirection = !direction || direction === 'asc' ? 'desc' : 'asc';\n\n if (sortBy.direction === newDirection) {\n set(sortData, { ...sortBy, column: undefined, direction: 'asc' });\n }\n else {\n set(sortData, {\n ...sortBy,\n direction: sortBy.direction === 'asc' ? 'desc' : 'asc',\n });\n }\n }\n else {\n set(sortData, { column: key, direction: direction || 'asc' });\n }\n return;\n }\n\n if (isSortedBy(key)) {\n const newDirection = !direction || direction === 'asc' ? 'desc' : 'asc';\n\n const index = getSortIndex(key);\n const sortByCol = sortBy[index];\n assert(sortByCol);\n\n if (sortByCol.direction === newDirection)\n sortBy.splice(index, 1);\n else\n sortByCol.direction = sortByCol.direction === 'asc' ? 'desc' : 'asc';\n\n set(sortData, sortBy);\n }\n else {\n set(sortData, [...sortBy, { column: key, direction: direction || 'asc' }]);\n }\n}\n\nfunction isSelectable(rowKey: T[IdType]): boolean {\n return isSelected(rowKey) || !isDisabledRow(rowKey);\n}\n\nfunction mustSelect(rowKey: T[IdType]): boolean {\n return isSelected(rowKey) && isDisabledRow(rowKey);\n}\n\n/**\n * toggles selected rows\n * @param {boolean} checked checkbox state\n */\nfunction onToggleAll(checked: boolean) {\n const selectedRows = get(selectedData);\n\n if (!isDefined(selectedRows)) {\n return;\n }\n\n if (!props.multiPageSelect) {\n if (checked)\n set(selectedData, get(visibleIdentifiers).filter(isSelectable));\n else\n set(selectedData, get(visibleIdentifiers).filter(mustSelect));\n }\n else {\n if (checked) {\n set(\n selectedData,\n Array.from(new Set(\n [\n ...selectedRows,\n ...get(visibleIdentifiers).filter(isSelectable),\n ],\n )),\n );\n }\n else {\n set(\n selectedData,\n selectedRows.filter(rowKey => !get(visibleIdentifiers).includes(rowKey) || get(visibleIdentifiers).filter(mustSelect).includes(rowKey)),\n );\n }\n }\n}\n\nconst shiftClicked: Ref<boolean> = ref(false);\nconst lastSelectedIndex: Ref<number> = ref(-1);\n\nfunction resetCheckboxShiftState() {\n set(shiftClicked, false);\n set(lastSelectedIndex, -1);\n}\n\n/**\n * toggles a single row\n * @param {boolean} checked checkbox state\n * @param {string} value the id of the selected row\n * @param {boolean} userAction whether the select triggered by user manually\n *\n */\nfunction onSelect(checked: boolean, value: T[typeof props.rowAttr], userAction = false) {\n if (get(shiftClicked) && userAction)\n return;\n\n const selectedRows = get(internalSelectedData);\n if (!selectedRows)\n return false;\n\n const selected = isSelected(value);\n\n if (checked && !selected) {\n set(internalSelectedData, [...selectedRows, value]);\n }\n else if (!checked && selected) {\n set(\n internalSelectedData,\n [...selectedRows].filter(r => r !== value),\n );\n }\n\n if (userAction)\n set(selectedData, get(internalSelectedData));\n}\n\nfunction onCheckboxClick(event: any, value: T[typeof props.rowAttr], index: number) {\n const input = event.currentTarget.querySelector('input');\n const nodeName = event.target.nodeName;\n\n const shiftKey = event.shiftKey;\n set(shiftClicked, shiftKey);\n\n if (input && nodeName !== 'INPUT') {\n if (shiftKey) {\n setTimeout(() => {\n let lastIndex = get(lastSelectedIndex);\n if (lastIndex === -1)\n lastIndex = index;\n const tableData = get(filtered);\n const lastSelectedData = tableData[lastIndex];\n assert(lastSelectedData);\n\n if (isRow(lastSelectedData)) {\n const id = get(rowIdentifier);\n const valueToApply = isSelected(lastSelectedData[id]);\n\n if (lastIndex === index) {\n onSelect(!valueToApply, value);\n }\n else {\n const from = Math.min(lastIndex, index);\n const to = Math.max(lastIndex, index);\n\n for (let i = from; i <= to; i++) {\n const currSelectedData = tableData[i];\n assert(currSelectedData);\n if (isRow(currSelectedData) && !isDisabledRow(currSelectedData[id]))\n onSelect(valueToApply, currSelectedData[id]);\n }\n }\n\n set(lastSelectedIndex, index);\n set(selectedData, get(internalSelectedData));\n }\n }, 1);\n }\n\n else { set(lastSelectedIndex, index); }\n }\n}\n\nconst search = computed(() => props.search);\n\nfunction deselectRemovedRows() {\n get(selectedData)?.forEach((key: T[IdType]) => {\n if (isSelected(key) && !get(visibleIdentifiers).includes(key))\n onSelect(false, key, true);\n });\n}\n\nfunction onPaginate() {\n emit('update:expanded', []);\n if (!props.multiPageSelect)\n onToggleAll(false);\n resetCheckboxShiftState();\n}\n\nfunction setInternalTotal(items: GroupedTableRow<T>[]) {\n if (!props.paginationModifiers?.external)\n set(itemsLength, items.filter(isRow).length);\n}\n\nfunction cellValue(row: T, key: TableColumn<T>['key']) {\n return row[key as TableRowKey<T>];\n}\n\n/**\n * Keeps the global items per page in sync with the internal state.\n */\nwatch(internalPaginationState, (pagination) => {\n if (pagination?.limit && get(globalItemsPerPageSettings))\n set(tableDefaults.itemsPerPage, pagination.limit);\n});\n\nwatch(tableDefaults.itemsPerPage, (itemsPerPage) => {\n if (!get(globalItemsPerPageSettings))\n return;\n\n set(paginationData, {\n ...get(paginationData),\n limit: itemsPerPage,\n });\n});\n\n/**\n * on changing search query, need to reset pagination page to 1\n */\nwatch(search, () => {\n set(paginationData, {\n ...get(paginationData),\n page: 1,\n });\n onToggleAll(false);\n resetCheckboxShiftState();\n});\n\nwatch(sorted, (items) => {\n if (!props.multiPageSelect)\n deselectRemovedRows();\n setInternalTotal(items);\n});\n\n/**\n * Automatically adjust page when current page exceeds maximum available pages\n * This can happen when total data decreases while user is on a higher page\n */\nwatch(paginationData, (pagination) => {\n const { total, limit, page } = pagination;\n const maxPages = Math.ceil(total / limit);\n\n if (maxPages > 0 && page > maxPages) {\n set(paginationData, {\n ...pagination,\n page: maxPages,\n });\n }\n});\n\nonMounted(() => {\n setInternalTotal(get(sorted));\n\n if (!get(globalItemsPerPageSettings))\n return;\n\n set(paginationData, {\n ...get(paginationData),\n limit: get(tableDefaults.itemsPerPage),\n });\n});\n</script>\n\n<template>\n <div\n :class=\"[\n $style.wrapper,\n $style[`rounded__${rounded}`],\n { [$style.outlined]: outlined },\n ]\"\n >\n <RuiTablePagination\n v-if=\"paginationData && !hideDefaultHeader\"\n v-model=\"paginationData\"\n :dense=\"dense\"\n :loading=\"loading\"\n :disable-per-page=\"disablePerPage\"\n data-cy=\"table-pagination\"\n @update:model-value=\"onPaginate()\"\n />\n <div\n ref=\"tableScroller\"\n :class=\"$style.scroller\"\n >\n <table\n ref=\"table\"\n :class=\"[$style.table, { [$style.dense]: dense }]\"\n aria-label=\"\"\n >\n <RuiTableHead\n :loading=\"loading\"\n :indeterminate=\"indeterminate\"\n :capitalize-headers=\"!cols\"\n :colspan=\"colspan\"\n :column-attr=\"columnAttr\"\n :columns=\"columns\"\n :dense=\"dense\"\n :disable-check-all=\"!filtered?.length\"\n :is-all-selected=\"isAllSelected\"\n :no-data=\"noData\"\n :selectable=\"!!selectedData\"\n :sort-data=\"sortData\"\n :sorted-map=\"sortedMap\"\n :stick=\"stick\"\n :sticky-header=\"stickyHeader\"\n @sort=\"onSort($event)\"\n @select:all=\"onToggleAll($event)\"\n >\n <template\n v-for=\"headerSlot in headerSlots\"\n #[headerSlot]=\"slotData\"\n >\n <slot\n :name=\"headerSlot\"\n v-bind=\"slotData\"\n />\n </template>\n </RuiTableHead>\n <RuiTableHead\n v-if=\"stickyHeader\"\n :loading=\"loading\"\n :capitalize-headers=\"!cols\"\n :colspan=\"colspan\"\n :column-attr=\"columnAttr\"\n :columns=\"columns\"\n :dense=\"dense\"\n :no-data=\"noData\"\n :selectable=\"!!selectedData\"\n :sort-data=\"sortData\"\n :sorted-map=\"sortedMap\"\n data-id=\"head-clone\"\n class=\"opacity-0 invisible\"\n >\n <template\n v-for=\"headerSlot in headerSlots\"\n #[headerSlot]=\"slotData\"\n >\n <slot\n :name=\"headerSlot\"\n v-bind=\"slotData\"\n />\n </template>\n </RuiTableHead>\n <tbody :class=\"[$style.tbody, { [$style['tbody--striped'] ?? '']: striped }]\">\n <slot\n v-if=\"slots['body.prepend']\"\n :colspan=\"colspan\"\n name=\"body.prepend\"\n />\n <template v-for=\"(row, index) in filtered\">\n <tr\n v-if=\"!isRow(row)\"\n :key=\"`row-${index}`\"\n :class=\"[$style.tr, $style.tr__group]\"\n >\n <slot\n name=\"group.header\"\n :colspan=\"colspan\"\n :header=\"row\"\n :is-open=\"isExpandedGroup(row.group)\"\n :toggle=\"() => onToggleExpandGroup(row.group, row.identifier)\"\n >\n <td\n :class=\"[$style.td]\"\n class=\"!p-2\"\n :colspan=\"colspan\"\n >\n <div class=\"flex items-center gap-2\">\n <RuiExpandButton\n v-if=\"groupExpandButtonPosition === 'start'\"\n :expanded=\"isExpandedGroup(row.group)\"\n @click=\"onToggleExpandGroup(row.group, row.identifier)\"\n />\n <slot\n :group-key=\"groupKey\"\n name=\"group.header.content\"\n :header=\"row\"\n >\n <span>{{ groupKey }}: {{ row.identifier }}</span>\n <RuiButton\n size=\"sm\"\n variant=\"text\"\n icon\n @click=\"\n onCopyGroup({ key: groupKey, value: row.group })\n \"\n >\n <RuiIcon\n name=\"lu-copy\"\n size=\"16\"\n />\n </RuiButton>\n </slot>\n <RuiTooltip\n :popper=\"{ placement: 'top' }\"\n class=\"ml-auto mr-2\"\n >\n <template #activator>\n <RuiButton\n size=\"sm\"\n variant=\"text\"\n icon\n @click=\"onUngroup()\"\n >\n <RuiIcon\n name=\"lu-trash-2\"\n size=\"14\"\n />\n </RuiButton>\n </template>\n Ungroup\n </RuiTooltip>\n <RuiExpandButton\n v-if=\"groupExpandButtonPosition === 'end'\"\n :expanded=\"isExpandedGroup(row.group)\"\n @click=\"onToggleExpandGroup(row.group, row.identifier)\"\n />\n </div>\n </td>\n </slot>\n </tr>\n <template v-else>\n <tr\n :key=\"`row-${index}`\"\n :class=\"[\n $style.tr,\n { [$style.tr__selected ?? '']: isSelected(row[rowIdentifier]) },\n typeof itemClass === 'string' ? itemClass : itemClass(row),\n ]\"\n >\n <td\n v-if=\"selectedData\"\n :class=\"$style.checkbox\"\n colspan=\"1\"\n rowspan=\"1\"\n >\n <RuiCheckbox\n :data-cy=\"`table-toggle-check-${index}`\"\n :model-value=\"isSelected(row[rowIdentifier])\"\n :disabled=\"isDisabledRow(row[rowIdentifier])\"\n :size=\"dense ? 'sm' : undefined\"\n color=\"primary\"\n class=\"select-none\"\n hide-details\n @update:model-value=\"onSelect($event, row[rowIdentifier], true)\"\n @click=\"onCheckboxClick($event, row[rowIdentifier], index)\"\n />\n </td>\n\n <td\n v-for=\"(column, subIndex) in columns\"\n :key=\"subIndex\"\n :class=\"[\n $style.td,\n column.cellClass,\n $style[`align__${column.align ?? 'start'}`],\n ]\"\n :colspan=\"column.colspan ?? 1\"\n :rowspan=\"column.rowspan ?? 1\"\n >\n <slot\n v-if=\"column.key === 'expand'\"\n :name=\"`item.${column.key.toString()}`\"\n :column=\"column\"\n :row=\"row\"\n :index=\"index\"\n >\n <RuiExpandButton\n v-if=\"!slots['item.expand']\"\n :expanded=\"isExpanded(row[rowIdentifier])\"\n @click=\"onToggleExpand(row)\"\n />\n </slot>\n <slot\n v-else\n :column=\"column\"\n :index=\"index\"\n :name=\"`item.${column.key.toString()}`\"\n :row=\"row\"\n >\n {{ cellValue(row, column.key) }}\n </slot>\n </td>\n </tr>\n\n <tr\n v-if=\"expandable && isExpanded(row[rowIdentifier])\"\n :key=\"`row-expand-${index}`\"\n :class=\"[$style.tr, $style.tr__expandable]\"\n >\n <td\n :colspan=\"colspan\"\n :class=\"[$style.td]\"\n >\n <slot\n name=\"expanded-item\"\n :row=\"row\"\n :index=\"index\"\n />\n </td>\n </tr>\n </template>\n </template>\n <tr\n v-if=\"loading && noData\"\n >\n <td\n :class=\"$style.tbody__loader\"\n :colspan=\"colspan\"\n >\n <RuiProgress\n color=\"primary\"\n variant=\"indeterminate\"\n circular\n />\n </td>\n </tr>\n <tr\n v-if=\"noData && empty && !loading\"\n :class=\"[$style.tr, $style.tr__empty]\"\n >\n <Transition\n appear\n enter-active-class=\"transition ease-out duration-200 delay-200\"\n enter-from-class=\"opacity-0 translate-y-1\"\n enter-to-class=\"opacity-100 translate-y-0\"\n leave-active-class=\"transition ease-in duration-150\"\n leave-from-class=\"opacity-100 translate-y-0\"\n leave-to-class=\"opacity-0 translate-y-1\"\n >\n <td\n :class=\"$style.td\"\n :colspan=\"colspan\"\n >\n <slot name=\"no-data\">\n <div :class=\"$style.empty\">\n <img\n :src=\"isDark ? noDataPlaceholderDark : noDataPlaceholder\"\n :alt=\"empty.label\"\n class=\"h-32\"\n />\n <p\n v-if=\"empty.label\"\n :class=\"$style.empty__label\"\n >\n {{ empty.label }}\n </p>\n\n <slot name=\"empty-description\">\n <p\n v-if=\"empty.description\"\n :class=\"$style.empty__description\"\n >\n {{ empty.description }}\n </p>\n </slot>\n </div>\n </slot>\n </td>\n </Transition>\n </tr>\n <slot\n v-if=\"slots['body.append']\"\n :colspan=\"colspan\"\n name=\"body.append\"\n />\n </tbody>\n <tfoot>\n <slot name=\"tfoot\" />\n </tfoot>\n </table>\n </div>\n <RuiTablePagination\n v-if=\"paginationData && !hideDefaultFooter\"\n v-model=\"paginationData\"\n :dense=\"dense\"\n :loading=\"loading\"\n :disable-per-page=\"disablePerPage\"\n data-cy=\"table-pagination\"\n @update:model-value=\"onPaginate()\"\n />\n </div>\n</template>\n\n<style module lang=\"scss\">\n.wrapper {\n @apply relative divide-y divide-black/[0.12] overflow-hidden;\n &.outlined {\n @apply border border-black/[0.12];\n }\n\n &.rounded__sm {\n @apply rounded-[.25rem];\n\n .image {\n @apply rounded-t-[.25rem];\n }\n }\n\n &.rounded__md {\n @apply rounded-[.75rem];\n\n .image {\n @apply rounded-t-[.75rem];\n }\n }\n\n &.rounded__lg {\n @apply rounded-[1rem];\n\n .image {\n @apply rounded-t-[1rem];\n }\n }\n\n .scroller {\n @apply overflow-x-auto overflow-y-hidden;\n clip-path: inset(0 0 0 0);\n }\n\n .table {\n @apply min-w-full table-fixed divide-y divide-black/[0.12] whitespace-nowrap mx-auto my-0 max-w-fit relative border-black/[0.12];\n\n .tbody {\n @apply divide-y divide-black/[0.12];\n\n &--striped {\n > .tr {\n &:nth-child(even) {\n @apply bg-rui-grey-50;\n }\n }\n }\n\n > .tr {\n @apply hover:bg-black/[0.04];\n\n &__selected {\n @apply bg-rui-primary/[0.08];\n }\n\n &__empty {\n @apply hover:bg-transparent;\n }\n\n &__expandable {\n @apply bg-[#f9fafb] hover:bg-[#f9fafb];\n }\n\n &__group {\n @apply bg-black/[0.02];\n }\n\n .td {\n @apply p-4 text-rui-text text-body-2;\n text-wrap: initial;\n\n &.align__start {\n @apply text-left rtl:text-right;\n }\n\n &.align__center {\n @apply text-center;\n }\n\n &.align__end {\n @apply text-right rtl:text-left;\n }\n\n .empty {\n @apply flex flex-col gap-3 items-center justify-center flex-1 min-h-[4.4rem] my-4;\n\n &__label {\n @apply text-body-1 leading-none font-bold text-center text-current pb-0 mb-0;\n }\n\n &__description {\n @apply text-body-2 text-center text-rui-text-secondary pb-0 mb-0;\n }\n }\n }\n }\n\n &__loader {\n @apply py-8 text-center;\n }\n }\n\n .checkbox {\n @apply px-2 w-[3.625rem] max-w-[3.625rem];\n label {\n @apply ml-0;\n }\n }\n\n &.dense {\n .tbody {\n .td {\n @apply py-[0.38rem];\n }\n }\n }\n }\n}\n\n:global(.dark) {\n .wrapper {\n @apply divide-white/[0.12];\n\n &.outlined {\n @apply border-white/[0.12];\n }\n\n .table {\n @apply divide-white/[0.12] border-white/[0.12];\n\n .tbody {\n @apply divide-white/[0.12];\n\n &--striped {\n > .tr {\n &:nth-child(even) {\n @apply bg-rui-grey-900;\n }\n }\n }\n\n > .tr {\n @apply hover:bg-white/[0.04];\n\n &__selected {\n @apply bg-rui-dark-primary/[0.08];\n }\n\n &__expandable {\n @apply bg-[#121212] hover:bg-[#121212];\n }\n\n &__group {\n @apply bg-white/[0.02];\n }\n }\n }\n }\n }\n}\n</style>\n"],"names":["_useSlots","modelValue","pagination","grouped","collapsed","_createElementBlock","_normalizeClass","$style","_unref","_createBlock","_createElementVNode","_createVNode","_renderList","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps","_openBlock","_Fragment","_toDisplayString","_createTextVNode","_Transition"],"mappings":"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"}
package/dist/style.css CHANGED
@@ -6991,8 +6991,8 @@ to {
6991
6991
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
6992
6992
  transition-duration: 75ms;
6993
6993
  --x-padding: 0px;
6994
- --prepend-width: var(--e33098ac);
6995
- --append-width: var(--v04b6e3ba);
6994
+ --prepend-width: var(--v2bf2f1ca);
6995
+ --append-width: var(--v11b143ae);
6996
6996
  padding-left: calc(var(--x-padding) + var(--prepend-width, 0px));
6997
6997
  padding-right: calc(var(--x-padding) + var(--append-width, 0px));
6998
6998
  }
@@ -7003,7 +7003,7 @@ to {
7003
7003
  transition-property: all;
7004
7004
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
7005
7005
  transition-duration: 75ms;
7006
- content: var(--v16ccf914);
7006
+ content: var(--v0604b445);
7007
7007
  }
7008
7008
  ._wrapper_kdkbx_316 ._label_kdkbx_319:after {
7009
7009
  content: "";
@@ -7326,10 +7326,10 @@ to {
7326
7326
  padding-right: 0.5rem;
7327
7327
  }
7328
7328
  ._wrapper_kdkbx_316._outlined_kdkbx_337 ._input_kdkbx_331:-webkit-autofill ~ ._fieldset_kdkbx_337 legend:after {
7329
- content: var(--v16ccf914);
7329
+ content: var(--v0604b445);
7330
7330
  }
7331
7331
  ._wrapper_kdkbx_316._outlined_kdkbx_337 ._input_kdkbx_331:not(:placeholder-shown) ~ ._fieldset_kdkbx_337 legend:after, ._wrapper_kdkbx_316._outlined_kdkbx_337 ._input_kdkbx_331:autofill ~ ._fieldset_kdkbx_337 legend:after, ._wrapper_kdkbx_316._outlined_kdkbx_337 ._input_kdkbx_331:-webkit-autofill ~ ._fieldset_kdkbx_337 legend:after, ._wrapper_kdkbx_316._outlined_kdkbx_337 ._input_kdkbx_331[data-has-value=true] ~ ._fieldset_kdkbx_337 legend:after, ._wrapper_kdkbx_316._outlined_kdkbx_337 ._input_kdkbx_331:focus ~ ._fieldset_kdkbx_337 legend:after {
7332
- content: var(--v16ccf914);
7332
+ content: var(--v0604b445);
7333
7333
  }
7334
7334
  ._wrapper_kdkbx_316._outlined_kdkbx_337 ._fieldset_kdkbx_337{
7335
7335
  pointer-events: none;
@@ -7557,7 +7557,7 @@ to {
7557
7557
  line-height: 1rem;
7558
7558
  }
7559
7559
  ._wrapper_xauli_2 ._activator_xauli_5._float_xauli_78 ~ ._fieldset_xauli_16 legend:after {
7560
- content: var(--v11aaad1c);
7560
+ content: var(--v77580221);
7561
7561
  }
7562
7562
  ._wrapper_xauli_2 ._activator_xauli_5._float_xauli_78:not(._disabled_xauli_19)._opened_xauli_28 ._label_xauli_45, ._wrapper_xauli_2 ._activator_xauli_5._float_xauli_78:not(._disabled_xauli_19)._opened_xauli_28._with-value_xauli_84 ._label_xauli_45, ._wrapper_xauli_2 ._activator_xauli_5._float_xauli_78:not(._disabled_xauli_19):focus ._label_xauli_45, ._wrapper_xauli_2 ._activator_xauli_5._float_xauli_78:not(._disabled_xauli_19):focus._with-value_xauli_84 ._label_xauli_45, ._wrapper_xauli_2 ._activator_xauli_5._float_xauli_78:not(._disabled_xauli_19):focus-within ._label_xauli_45, ._wrapper_xauli_2 ._activator_xauli_5._float_xauli_78:not(._disabled_xauli_19):focus-within._with-value_xauli_84 ._label_xauli_45{
7563
7563
  --tw-text-opacity: 1;
@@ -7924,7 +7924,7 @@ to {
7924
7924
  line-height: 1rem;
7925
7925
  }
7926
7926
  ._wrapper_118qp_2 ._activator_118qp_5._float_118qp_84 ~ ._fieldset_118qp_16 legend:after {
7927
- content: var(--v60b4ee20);
7927
+ content: var(--v95e55b90);
7928
7928
  }
7929
7929
  ._wrapper_118qp_2 ._activator_118qp_5._float_118qp_84._opened_118qp_28 ._label_118qp_45, ._wrapper_118qp_2 ._activator_118qp_5._float_118qp_84._opened_118qp_28._with-value_118qp_90 ._label_118qp_45, ._wrapper_118qp_2 ._activator_118qp_5._float_118qp_84:focus ._label_118qp_45, ._wrapper_118qp_2 ._activator_118qp_5._float_118qp_84:focus._with-value_118qp_90 ._label_118qp_45, ._wrapper_118qp_2 ._activator_118qp_5._float_118qp_84:focus-within ._label_118qp_45, ._wrapper_118qp_2 ._activator_118qp_5._float_118qp_84:focus-within._with-value_118qp_90 ._label_118qp_45{
7930
7930
  --tw-text-opacity: 1;
@@ -9116,7 +9116,7 @@ to {
9116
9116
  line-height: 1rem;
9117
9117
  }
9118
9118
  ._wrapper_1dvzu_2 ._activator_1dvzu_5._float_1dvzu_75 ~ ._fieldset_1dvzu_16 legend:after {
9119
- content: var(--v4b241235);
9119
+ content: var(--v2e36bd88);
9120
9120
  }
9121
9121
  ._wrapper_1dvzu_2 ._activator_1dvzu_5._float_1dvzu_75._opened_1dvzu_28 ._label_1dvzu_45, ._wrapper_1dvzu_2 ._activator_1dvzu_5._float_1dvzu_75._opened_1dvzu_28._with-value_1dvzu_81 ._label_1dvzu_45, ._wrapper_1dvzu_2 ._activator_1dvzu_5._float_1dvzu_75:focus ._label_1dvzu_45, ._wrapper_1dvzu_2 ._activator_1dvzu_5._float_1dvzu_75:focus._with-value_1dvzu_81 ._label_1dvzu_45{
9122
9122
  --tw-text-opacity: 1;
@@ -9836,12 +9836,12 @@ to {
9836
9836
  min-width: 0px;
9837
9837
  }
9838
9838
  ._wrapper_mju0y_315._vertical_mju0y_475 ._inner_mju0y_315 {
9839
- width: var(--v2618ea10);
9840
- height: var(--v31c435d5);
9839
+ width: var(--v4f7b4c22);
9840
+ height: var(--cfeab12a);
9841
9841
  --tw-rotate: -90deg;
9842
9842
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
9843
9843
  transform-origin: 0 0;
9844
- --tw-translate-y: var(--v2618ea10);
9844
+ --tw-translate-y: var(--v4f7b4c22);
9845
9845
  }
9846
9846
  ._wrapper_mju0y_315._vertical_mju0y_475 ._inner_mju0y_315 ._slider__thumb_label_mju0y_491 {
9847
9847
  margin-top: 1.5rem;
@@ -9861,8 +9861,8 @@ to {
9861
9861
  flex: 1 1 0%;
9862
9862
  }
9863
9863
  ._wrapper_mju0y_315 ._inner_mju0y_315 {
9864
- width: var(--v31c435d5);
9865
- height: var(--v2618ea10);
9864
+ width: var(--cfeab12a);
9865
+ height: var(--v4f7b4c22);
9866
9866
  position: relative;
9867
9867
  }
9868
9868
  ._wrapper_mju0y_315 ._inner_mju0y_315 ._input_mju0y_507 {
@@ -9917,7 +9917,7 @@ to {
9917
9917
  border-radius: 9999px;
9918
9918
  }
9919
9919
  ._wrapper_mju0y_315 ._inner_mju0y_315 ._slider__container__track_mju0y_318 {
9920
- width: var(--v07d3ee6a);
9920
+ width: var(--v95dfe716);
9921
9921
  transition-property: all;
9922
9922
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
9923
9923
  transition-delay: 0s;
@@ -9933,13 +9933,13 @@ to {
9933
9933
  display: flex;
9934
9934
  align-items: center;
9935
9935
  justify-content: space-between;
9936
- margin: 0 calc(var(--v9517d00a) / -2);
9937
- width: calc(100% + var(--v9517d00a));
9936
+ margin: 0 calc(var(--v17fbd925) / -2);
9937
+ width: calc(100% + var(--v17fbd925));
9938
9938
  }
9939
9939
  ._wrapper_mju0y_315 ._inner_mju0y_315 ._slider__ticks_mju0y_324 span {
9940
9940
  border-radius: 9999px;
9941
- width: calc(var(--v9517d00a));
9942
- height: calc(var(--v9517d00a));
9941
+ width: calc(var(--v17fbd925));
9942
+ height: calc(var(--v17fbd925));
9943
9943
  }
9944
9944
  ._wrapper_mju0y_315 ._inner_mju0y_315 ._slider__ticks_mju0y_324 span._highlighted_mju0y_324 {
9945
9945
  --tw-bg-opacity: 1;
@@ -9962,7 +9962,7 @@ to {
9962
9962
  --tw-shadow: 0px 3px 1px -2px var(--rui-shadow-primary), 0px 2px 2px var(--rui-shadow-secondary), 0px 1px 5px var(--rui-shadow-tertiary);
9963
9963
  --tw-shadow-colored: 0px 3px 1px -2px var(--tw-shadow-color), 0px 2px 2px var(--tw-shadow-color), 0px 1px 5px var(--tw-shadow-color);
9964
9964
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
9965
- left: var(--v07d3ee6a);
9965
+ left: var(--v95dfe716);
9966
9966
  }
9967
9967
  ._wrapper_mju0y_315 ._inner_mju0y_315 ._slider__thumb_mju0y_321:before {
9968
9968
  position: absolute;
@@ -9983,7 +9983,7 @@ to {
9983
9983
  content: "";
9984
9984
  }
9985
9985
  ._wrapper_mju0y_315 ._inner_mju0y_315 ._slider__thumb_label_mju0y_491 {
9986
- left: var(--v07d3ee6a);
9986
+ left: var(--v95dfe716);
9987
9987
  visibility: hidden;
9988
9988
  opacity: 0;
9989
9989
  position: absolute;
@@ -10931,7 +10931,7 @@ to {
10931
10931
  }
10932
10932
  ._wrapper_1xhla_316 ._textarea_1xhla_328 {
10933
10933
  --x-padding: 0.75rem;
10934
- padding-right: calc(var(--x-padding) + var(--v0693e487)) !important;
10934
+ padding-right: calc(var(--x-padding) + var(--v4d3744d2)) !important;
10935
10935
  }
10936
10936
  ._wrapper_1xhla_316 ._textarea_sizer_1xhla_356{
10937
10937
  pointer-events: none !important;
@@ -10946,7 +10946,7 @@ to {
10946
10946
  padding-bottom: 0.5rem !important;
10947
10947
  padding-left: 0.75rem !important;
10948
10948
  padding-right: 0.75rem !important;
10949
- padding-right: calc(var(--x-padding) + var(--v0693e487)) !important;
10949
+ padding-right: calc(var(--x-padding) + var(--v4d3744d2)) !important;
10950
10950
  }
10951
10951
  ._wrapper_1xhla_316 ._textarea_1xhla_328:focus{
10952
10952
  outline-width: 0px;
@@ -11001,8 +11001,8 @@ to {
11001
11001
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
11002
11002
  transition-duration: 150ms;
11003
11003
  --x-padding: 0rem;
11004
- padding-left: calc(var(--x-padding) + var(--v6faa6706));
11005
- padding-right: calc(var(--x-padding) + var(--v0693e487));
11004
+ padding-left: calc(var(--x-padding) + var(--v4f69756d));
11005
+ padding-right: calc(var(--x-padding) + var(--v4d3744d2));
11006
11006
  }
11007
11007
  ._wrapper_1xhla_316 ._label_1xhla_316:after {
11008
11008
  content: "";
@@ -11289,10 +11289,10 @@ to {
11289
11289
  line-height: 0;
11290
11290
  }
11291
11291
  ._wrapper_1xhla_316._outlined_1xhla_334 ._textarea_1xhla_328:-webkit-autofill ~ ._fieldset_1xhla_334 legend:after {
11292
- content: var(--v27a5adb2);
11292
+ content: var(--c33553d2);
11293
11293
  }
11294
11294
  ._wrapper_1xhla_316._outlined_1xhla_334 ._textarea_1xhla_328:not(:placeholder-shown) ~ ._fieldset_1xhla_334 legend:after, ._wrapper_1xhla_316._outlined_1xhla_334 ._textarea_1xhla_328:autofill ~ ._fieldset_1xhla_334 legend:after, ._wrapper_1xhla_316._outlined_1xhla_334 ._textarea_1xhla_328:-webkit-autofill ~ ._fieldset_1xhla_334 legend:after, ._wrapper_1xhla_316._outlined_1xhla_334 ._textarea_1xhla_328[data-has-value=true] ~ ._fieldset_1xhla_334 legend:after, ._wrapper_1xhla_316._outlined_1xhla_334 ._textarea_1xhla_328:focus ~ ._fieldset_1xhla_334 legend:after {
11295
- content: var(--v27a5adb2);
11295
+ content: var(--c33553d2);
11296
11296
  }
11297
11297
  ._wrapper_1xhla_316._outlined_1xhla_334 ._fieldset_1xhla_334{
11298
11298
  pointer-events: none;
@@ -0,0 +1,15 @@
1
+ /* eslint-disable import/no-default-export */
2
+ declare module 'virtual:rotki-icons' {
3
+ /**
4
+ * Auto-detected icons from your source files.
5
+ * Use this array with `createRui({ theme: { icons } })`.
6
+ */
7
+ interface GeneratedIcon {
8
+ name: string;
9
+ components: [string, Record<string, string>][];
10
+ }
11
+
12
+ const icons: GeneratedIcon[];
13
+
14
+ export default icons;
15
+ }
@@ -0,0 +1,8 @@
1
+ import type { Plugin } from 'vite';
2
+ import type { RuiIconsPluginOptions } from './types';
3
+ /**
4
+ * Vite plugin for automatic icon detection and registration
5
+ */
6
+ export declare function ruiIconsPlugin(options?: RuiIconsPluginOptions): Plugin;
7
+ export type { RuiIconsPluginOptions } from './types';
8
+ export default ruiIconsPlugin;