@zeedhi/teknisa-components-vuetify 1.117.1 → 3.0.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 (92) hide show
  1. package/.package.json +49 -0
  2. package/dist/teknisa-vuetify.css +1 -0
  3. package/dist/teknisa-vuetify.js +3882 -0
  4. package/environments.json +16 -0
  5. package/package.json +18 -17
  6. package/src/components/index.ts +38 -0
  7. package/src/components/public.ts +41 -0
  8. package/src/components/tek-breadcrumb-header/TekBreadcrumbHeader.ts +34 -0
  9. package/src/components/tek-breadcrumb-header/TekBreadcrumbHeader.vue +75 -0
  10. package/src/components/tek-grid/TekGrid.ts +318 -0
  11. package/src/components/tek-grid/TekGrid.vue +235 -0
  12. package/src/components/tek-grid/column-filter/TekGridColumnFilter.ts +244 -0
  13. package/src/components/tek-grid/column-filter/TekGridColumnFilter.vue +93 -0
  14. package/src/components/tek-grid/column-header/TekGridHeaderRow.ts +147 -0
  15. package/src/components/tek-grid/column-header/TekGridHeaderRow.vue +78 -0
  16. package/src/components/tek-grid/columns-button/TekGridColumnsButton.ts +96 -0
  17. package/src/components/tek-grid/columns-button/TekGridColumnsButton.vue +273 -0
  18. package/src/components/tek-grid/columns-button/TekGridColumnsOptionsController.ts +470 -0
  19. package/src/components/tek-grid/columns-button/TekGridColumnsOptionsModal.ts +513 -0
  20. package/src/components/tek-grid/filter-button/TekGridFilterButton.ts +47 -0
  21. package/src/components/tek-grid/filter-button/TekGridFilterButton.vue +28 -0
  22. package/src/components/tek-grid/indentation/TekGridIndentation.ts +21 -0
  23. package/src/components/tek-grid/indentation/TekGridIndentation.vue +33 -0
  24. package/src/components/tek-grid/layout-options/TekGridLayoutOptions.ts +119 -0
  25. package/src/components/tek-grid/layout-options/TekGridLayoutOptions.vue +172 -0
  26. package/src/components/tek-grid/row/TekGridFooterRow.ts +62 -0
  27. package/src/components/tek-grid/row/TekGridFooterRow.vue +64 -0
  28. package/src/components/tek-grid/row/TekGridGroupRow.ts +65 -0
  29. package/src/components/tek-grid/row/TekGridGroupRow.vue +65 -0
  30. package/src/components/tek-user-info/TekUserInfo.ts +51 -0
  31. package/src/components/tek-user-info/TekUserInfo.vue +53 -0
  32. package/src/components/tek-user-info/TekUserInfoList.ts +39 -0
  33. package/src/components/tek-user-info/TekUserInfoList.vue +12 -0
  34. package/src/composables/useTableLayout.ts +290 -0
  35. package/src/index.ts +29 -0
  36. package/src/shims-vue.d.ts +6 -0
  37. package/src/styles/index.scss +0 -0
  38. package/src/utils/isArrayOperation.ts +5 -0
  39. package/types/components/index.d.ts +5 -3
  40. package/types/components/public.d.ts +5 -18
  41. package/types/components/tek-breadcrumb-header/TekBreadcrumbHeader.d.ts +1137 -12
  42. package/types/components/tek-breadcrumb-header/TekBreadcrumbHeader.ts.d.ts +1138 -0
  43. package/types/components/tek-grid/TekGrid.d.ts +7208 -86
  44. package/types/components/tek-grid/TekGrid.ts.d.ts +7211 -0
  45. package/types/components/tek-grid/column-filter/TekGridColumnFilter.d.ts +130 -0
  46. package/types/components/tek-grid/column-filter/TekGridColumnFilter.ts.d.ts +130 -0
  47. package/types/components/tek-grid/column-header/TekGridHeaderRow.d.ts +225 -0
  48. package/types/components/tek-grid/column-header/TekGridHeaderRow.ts.d.ts +225 -0
  49. package/types/components/tek-grid/columns-button/TekGridColumnsButton.d.ts +2432 -0
  50. package/types/components/tek-grid/columns-button/TekGridColumnsButton.ts.d.ts +2432 -0
  51. package/types/components/tek-grid/{TekGridColumnsOptionsController.d.ts → columns-button/TekGridColumnsOptionsController.d.ts} +7 -8
  52. package/types/components/tek-grid/{TekGridColumnsOptionsModal.d.ts → columns-button/TekGridColumnsOptionsModal.d.ts} +2 -3
  53. package/types/components/tek-grid/filter-button/TekGridFilterButton.d.ts +2920 -0
  54. package/types/components/tek-grid/filter-button/TekGridFilterButton.ts.d.ts +2920 -0
  55. package/types/components/tek-grid/indentation/TekGridIndentation.d.ts +32 -0
  56. package/types/components/tek-grid/indentation/TekGridIndentation.ts.d.ts +32 -0
  57. package/types/components/tek-grid/layout-options/TekGridLayoutOptions.d.ts +1893 -0
  58. package/types/components/tek-grid/layout-options/TekGridLayoutOptions.ts.d.ts +1893 -0
  59. package/types/components/tek-grid/row/TekGridFooterRow.d.ts +90 -0
  60. package/types/components/tek-grid/row/TekGridFooterRow.ts.d.ts +90 -0
  61. package/types/components/tek-grid/row/TekGridGroupRow.d.ts +87 -0
  62. package/types/components/tek-grid/row/TekGridGroupRow.ts.d.ts +87 -0
  63. package/types/components/tek-user-info/TekUserInfo.d.ts +1937 -10
  64. package/types/components/tek-user-info/TekUserInfo.ts.d.ts +1940 -0
  65. package/types/components/tek-user-info/TekUserInfoList.d.ts +1014 -8
  66. package/types/components/tek-user-info/TekUserInfoList.ts.d.ts +1015 -0
  67. package/types/composables/useTableLayout.d.ts +26 -0
  68. package/types/index.d.ts +2 -2
  69. package/types/utils/isArrayOperation.d.ts +2 -0
  70. package/dist/tek-components-vuetify.esm.js +0 -8924
  71. package/dist/tek-components-vuetify.umd.js +0 -8949
  72. package/types/components/crud/TekCrudAddButton.d.ts +0 -14
  73. package/types/components/crud/TekCrudButton.d.ts +0 -12
  74. package/types/components/crud/TekCrudCancelButton.d.ts +0 -12
  75. package/types/components/crud/TekCrudDeleteButton.d.ts +0 -14
  76. package/types/components/crud/TekCrudForm.d.ts +0 -9
  77. package/types/components/crud/TekCrudSaveButton.d.ts +0 -11
  78. package/types/components/tek-card-title/TekCardTitle.d.ts +0 -16
  79. package/types/components/tek-drag-grid/TekDragGrid.d.ts +0 -20
  80. package/types/components/tek-grid/TekGridColumnsButton.d.ts +0 -16
  81. package/types/components/tek-grid/TekGridFilterButton.d.ts +0 -27
  82. package/types/components/tek-grid/TekGridLayoutOptions.d.ts +0 -19
  83. package/types/components/tek-grid/subcomponents/TekGridCellIdentation.d.ts +0 -9
  84. package/types/components/tek-grid/subcomponents/TekGridColumnFilter.d.ts +0 -16
  85. package/types/components/tek-grid/subcomponents/TekGridHeaderIndentation.d.ts +0 -5
  86. package/types/components/tek-image/TekImage.d.ts +0 -20
  87. package/types/components/tek-iterable-carousel/TekIterableCarousel.d.ts +0 -11
  88. package/types/components/tek-iterable-component-render/TekIterableComponentRender.d.ts +0 -9
  89. package/types/components/tek-loading/TekLoading.d.ts +0 -9
  90. package/types/components/tek-notifications/TekNotifications.d.ts +0 -12
  91. package/types/components/tek-product-card/TekProductCard.d.ts +0 -24
  92. package/types/components/tek-tree-grid/TekTreeGrid.d.ts +0 -72
@@ -0,0 +1,147 @@
1
+ import { Column, GridColumn } from '@zeedhi/common';
2
+ import { IDynamicFilterItem, TekGridColumn } from '@zeedhi/teknisa-components-common';
3
+ import { IDictionary } from '@zeedhi/core';
4
+ import { PropType, UnwrapRef, defineComponent, inject } from 'vue';
5
+ import { ResizeParams, CalcWidth } from '@zeedhi/vuetify';
6
+
7
+ export default defineComponent({
8
+ props: {
9
+ selectable: {
10
+ type: Boolean,
11
+ default: false,
12
+ },
13
+ headerBackground: {
14
+ type: String,
15
+ default: '',
16
+ },
17
+ showSelectAll: {
18
+ type: Boolean,
19
+ default: false,
20
+ },
21
+ allselectedState: {
22
+ type: Number,
23
+ default: 0,
24
+ },
25
+ visibleColumns: {
26
+ type: Array as PropType<GridColumn[]>,
27
+ default: () => [],
28
+ },
29
+ dragColumns: {
30
+ type: Boolean,
31
+ default: false,
32
+ },
33
+ headerCellTextColor: {
34
+ type: String,
35
+ default: '',
36
+ },
37
+ resizeColumns: {
38
+ type: Boolean,
39
+ default: false,
40
+ },
41
+ getSortIcon: {
42
+ type: Function,
43
+ default: () => {},
44
+ },
45
+ isSorted: {
46
+ type: Function,
47
+ default: () => {},
48
+ },
49
+ toggleSort: {
50
+ type: Function,
51
+ default: () => {},
52
+ },
53
+ tableColumns: {
54
+ type: Array as PropType<any[]>,
55
+ default: () => [],
56
+ },
57
+ sortBy: {
58
+ type: Array as PropType<any[]>,
59
+ default: () => [],
60
+ },
61
+ disableCheckbox: {
62
+ type: Boolean,
63
+ default: false,
64
+ },
65
+ sortable: {
66
+ type: Boolean,
67
+ default: true,
68
+ },
69
+ name: {
70
+ type: String,
71
+ default: '',
72
+ },
73
+ modelValue: {
74
+ type: Object as PropType<IDictionary<IDynamicFilterItem[]>>,
75
+ default: () => [],
76
+ },
77
+ instanceName: {
78
+ type: String,
79
+ required: true,
80
+ },
81
+ filterRelationsDatasource: {
82
+ type: [Object, null],
83
+ required: false,
84
+ },
85
+ filterOperationsDatasource: {
86
+ type: [Object, null],
87
+ required: false,
88
+ },
89
+ columnFilterButton: {
90
+ type: Boolean,
91
+ required: true,
92
+ },
93
+ columnHasFilter: {
94
+ type: Function as PropType<(columnName: string) => boolean>,
95
+ required: true,
96
+ },
97
+ level: {
98
+ type: Number,
99
+ default: 0,
100
+ },
101
+ },
102
+ emits: ['selectAllClick', 'resizeMousedown', 'resizeClick', 'update:modelValue'],
103
+ setup(props, { emit }) {
104
+ const calcWidth = inject<CalcWidth>('calcWidth');
105
+
106
+ if (!calcWidth) {
107
+ // TODO: use NotProvidedError
108
+ throw new Error('calcWidth');
109
+ }
110
+
111
+ const selectAllClick = (event: Event) => {
112
+ emit('selectAllClick', event);
113
+ };
114
+
115
+ const resizeMousedown = (column: GridColumn, event: ResizeParams) => {
116
+ emit('resizeMousedown', { event, column });
117
+ };
118
+
119
+ const resizeClick = (event: Event) => {
120
+ emit('resizeClick', { event });
121
+ };
122
+
123
+ const findOrderIndex = (sortBy: readonly any[], column: UnwrapRef<Column>) => {
124
+ return sortBy.findIndex((sort) => sort.key === column.name);
125
+ };
126
+
127
+ const updateModelValue = (columnName: string, value: IDynamicFilterItem[]) => {
128
+ const modelValue = { ...props.modelValue };
129
+ modelValue[columnName] = value;
130
+ emit('update:modelValue', modelValue);
131
+ };
132
+
133
+ const showFilterButton = (column: TekGridColumn) => {
134
+ return column.type !== 'action' && props.columnFilterButton && column.filterable;
135
+ };
136
+
137
+ return {
138
+ calcWidth,
139
+ resizeMousedown,
140
+ resizeClick,
141
+ findOrderIndex,
142
+ updateModelValue,
143
+ showFilterButton,
144
+ selectAllClick,
145
+ };
146
+ },
147
+ });
@@ -0,0 +1,78 @@
1
+ <template>
2
+ <zd-grid-header-row
3
+ :name="name"
4
+ :selectable="selectable"
5
+ :headerBackground="headerBackground"
6
+ :showSelectAll="showSelectAll"
7
+ :allselectedState="allselectedState"
8
+ :visibleColumns="visibleColumns"
9
+ :dragColumns="dragColumns"
10
+ :headerCellTextColor="headerCellTextColor"
11
+ :resizeColumns="resizeColumns"
12
+ :getSortIcon="getSortIcon"
13
+ :toggleSort="toggleSort"
14
+ :sortBy="sortBy"
15
+ :tableColumns="tableColumns"
16
+ :isSorted="isSorted"
17
+ :disableCheckbox="disableCheckbox"
18
+ @selectAllClick="selectAllClick"
19
+ >
20
+ <template #default="{ column, index, isHovering }">
21
+ <zd-grid-column-header
22
+ :cssStyle="{
23
+ 'color': headerCellTextColor,
24
+ width: calcWidth(column),
25
+ }"
26
+ :action="column.type === 'action'"
27
+ :overflow="column.overflow"
28
+ :helperText="column.helperText"
29
+ :label="column.label"
30
+ :columnAlign="column.align"
31
+ :orderIndex="findOrderIndex(sortBy, column)"
32
+ :isSortable="sortable && column.sortable"
33
+ :resizeColumns="resizeColumns"
34
+ :sortIcon="getSortIcon(tableColumns[index])"
35
+ :isSorted="isSorted(tableColumns[index])"
36
+ :isHovering="isHovering"
37
+ @click="toggleSort(tableColumns[index])"
38
+ @resizeMousedown="resizeMousedown(column, $event)"
39
+ @resizeClick="resizeClick($event)"
40
+ >
41
+ <template #prepend v-if="index === 0">
42
+ <tek-grid-indentation
43
+ :level="level"
44
+ :show-divider="false"
45
+ ></tek-grid-indentation>
46
+ </template>
47
+ <template #label>
48
+ <span
49
+ v-if="column.aggregation"
50
+ class="tek-grid-column-aggregation"
51
+ >({{ $t(`TEKGRID_AGGREGATION_${column.aggregation}`) }})
52
+ </span>
53
+ </template>
54
+
55
+ <template
56
+ #append="{ isHovering }"
57
+ v-if="showFilterButton(column)"
58
+ >
59
+ <tek-grid-column-filter
60
+ :modelValue="modelValue[column.name]"
61
+ :hasFilterData="columnHasFilter(column.name)"
62
+ :column="column"
63
+ :instanceName="instanceName"
64
+ :filterRelationsDatasource="filterRelationsDatasource"
65
+ :filterOperationsDatasource="filterOperationsDatasource"
66
+ :isHovering="isHovering"
67
+ :multiple="!!filterRelationsDatasource && !!filterOperationsDatasource"
68
+ @update:modelValue="updateModelValue(column.name, $event)"
69
+ ></tek-grid-column-filter>
70
+ </template>
71
+ </zd-grid-column-header>
72
+ </template>
73
+ </zd-grid-header-row>
74
+ </template>
75
+
76
+ <script lang="ts" src="./TekGridHeaderRow.ts"></script>
77
+
78
+ <style lang="scss"></style>
@@ -0,0 +1,96 @@
1
+ import { TekGrid, TekGridColumnsButton } from '@zeedhi/teknisa-components-common';
2
+ import sortable from 'sortablejs';
3
+ import { ComponentPublicInstance, computed, defineComponent, mergeProps, nextTick, ref, watch } from 'vue';
4
+ import { ZdIterableColumnsButtonProps, useButtonInstance, useCreateInstance } from '@zeedhi/vuetify';
5
+ import optionsModal from './TekGridColumnsOptionsModal';
6
+
7
+ export const TekGridColumnsButtonProps = {
8
+ ...ZdIterableColumnsButtonProps,
9
+ hideGroups: {
10
+ type: [Boolean, String],
11
+ default: false,
12
+ },
13
+ };
14
+
15
+ const tekGridColumnsButton = defineComponent({
16
+ props: TekGridColumnsButtonProps,
17
+ inheritAttrs: false,
18
+ setup(props, ctx) {
19
+ const { instance, root } = useCreateInstance<TekGridColumnsButton, ComponentPublicInstance>(
20
+ props,
21
+ ctx,
22
+ TekGridColumnsButton,
23
+ );
24
+ const buttonScope = useButtonInstance({ instance, root });
25
+
26
+ const menuIsOpened = ref(false);
27
+
28
+ const sortableInitialized = ref(false);
29
+
30
+ const teste = (a: any) => {
31
+ console.warn(a);
32
+ };
33
+
34
+ watch(menuIsOpened, () => {
35
+ if (!menuIsOpened.value || sortableInitialized.value) return;
36
+
37
+ sortableInitialized.value = true;
38
+ nextTick(() => {
39
+ const columnsTableBody = document.querySelector(`#${instance.name}_columns_table tbody`);
40
+ if (columnsTableBody) {
41
+ sortable.create(columnsTableBody as HTMLElement, {
42
+ handle: '.sortHandle',
43
+ dragClass: 'tek-grid-columns-button-sortable-drag',
44
+ onEnd: sortEnd,
45
+ });
46
+ }
47
+ });
48
+ });
49
+
50
+ const gridGroupColumnNames = computed(() => {
51
+ return instance.iterableComponent.columns.filter((column) => column.grouped).map((column) => column.name) || [];
52
+ });
53
+
54
+ const sortEnd = (event: any) => {
55
+ const grid: TekGrid = instance.iterableComponent as any;
56
+ const newOrder = Array.from(event.srcElement.querySelectorAll('tr')).map((row: any) => row.getAttribute('name'));
57
+ const groupColumnNames: string[] = [];
58
+ const newColumns = newOrder.map((columnName) => {
59
+ const column = grid.getColumn(columnName);
60
+ if (column.grouped) {
61
+ groupColumnNames.push(columnName);
62
+ }
63
+
64
+ return column;
65
+ });
66
+ const ignoredColumns = grid.columns.filter((column) => instance.ignoreColumns.indexOf(column.name) !== -1);
67
+ grid.columns = newColumns.concat(ignoredColumns);
68
+
69
+ if (grid.updateGrouping && JSON.stringify(groupColumnNames) !== JSON.stringify(gridGroupColumnNames)) {
70
+ grid.updateGrouping();
71
+ }
72
+ grid.changeLayout();
73
+ };
74
+
75
+ const moreOptions = () => {
76
+ optionsModal.show(instance);
77
+ };
78
+
79
+ const close = () => {
80
+ menuIsOpened.value = false;
81
+ };
82
+
83
+ return {
84
+ ...buttonScope,
85
+ instance,
86
+ root,
87
+ menuIsOpened,
88
+ moreOptions,
89
+ close,
90
+ teste,
91
+ mergeProps,
92
+ };
93
+ },
94
+ });
95
+
96
+ export default tekGridColumnsButton;
@@ -0,0 +1,273 @@
1
+ <template>
2
+ <v-menu
3
+ :id="instance.name"
4
+ v-model="menuIsOpened"
5
+ :class="['zd-iterable-columns-button', 'tek-grid-columns-button', instance.cssClass]"
6
+ :style="instance.cssStyle"
7
+ :closeOnContentClick="false"
8
+ offset-y
9
+ content-class="zd-iterable-columns-button-options tek-grid-columns-button-options"
10
+ >
11
+ <template v-slot:activator="{ props: onMenu }">
12
+ <v-tooltip bottom>
13
+ <template v-slot:activator="{ props: onTooltip }">
14
+ <zd-activator-wrapper
15
+ :child-props="{
16
+ component: 'ZdButton',
17
+ name: instance.name,
18
+ instanceObject: instance,
19
+ }"
20
+ v-bind="mergeProps(onMenu, onTooltip)"
21
+ ></zd-activator-wrapper>
22
+ </template>
23
+ <span>{{ $t('TEKGRID_COLUMNS') }}</span>
24
+ </v-tooltip>
25
+ </template>
26
+
27
+ <v-card class="zd-pa-2">
28
+ <div class="tek-grid-columns-button-table-wrapper zd-mb-2">
29
+ <table class="tek-grid-columns-button-table" :id="instance.name + '_columns_table'">
30
+ <thead>
31
+ <tr>
32
+ <th><!--Name--></th>
33
+ <th>{{ $t('TEKGRID_COLUMN_VISIBLE') }}</th>
34
+ <th v-if="!instance.hideGroups">{{ $t('TEKGRID_COLUMN_GROUPED') }}</th>
35
+ <th v-if="!instance.hideGroups">{{ $t('TEKGRID_COLUMN_AGGREGATION') }}</th>
36
+ </tr>
37
+ </thead>
38
+ <tbody>
39
+ <tr
40
+ v-for="column in instance.filteredColumns()"
41
+ :key="column.name"
42
+ :name="column.name"
43
+ >
44
+ <td class="tek-grid-columns-button-column-name sortHandle">
45
+ <span>⦙⦙</span>{{ $t(column.label) }}
46
+ </td>
47
+ <td>
48
+ <zd-checkbox
49
+ :name="instance.name + '_column_visible_' + column.name"
50
+ :value="column.grouped || column.isVisible"
51
+ :events="{
52
+ change: instance.controller.showHideTekColumn.bind(instance.controller, column)
53
+ }"
54
+ />
55
+ </td>
56
+ <td v-if="!instance.hideGroups">
57
+ <zd-checkbox
58
+ v-if="column.type !== 'action'"
59
+ :name="instance.name + '_column_grouped_' + column.name"
60
+ :value="column.grouped"
61
+ :events="{
62
+ change: instance.controller.changeGroupedColumn.bind(instance.controller, column)
63
+ }"
64
+ />
65
+ </td>
66
+ <td v-if="!instance.hideGroups" class="tek-grid-columns-button-column-aggregation">
67
+ <zd-select
68
+ v-if="column.type !== 'action'"
69
+ :name="instance.name + '_column_aggregation_' + column.name"
70
+ v-bind="{
71
+ value: column.aggregation,
72
+ disabled: column.grouped || !column.isVisible,
73
+ events: {
74
+ change: instance.controller.changeAggregationColumn.bind(instance.controller, column)
75
+ },
76
+ dataText: 'text',
77
+ dataValue: 'value',
78
+ autocomplete: false,
79
+ showHelper: false,
80
+ showLabel: false,
81
+ datasource: {
82
+ data: instance.getAggregationSelectData(),
83
+ },
84
+ }"
85
+ />
86
+ </td>
87
+ </tr>
88
+ </tbody>
89
+ </table>
90
+ </div>
91
+ <div class="tek-grid-columns-button-table-footer">
92
+ <zd-button
93
+ :name="instance.name + '_columns_table_footer_button'"
94
+ label="TEKGRID_MORE_OPTIONS"
95
+ small
96
+ outline
97
+ cssClass="zd-ma-2 zd-mr-1"
98
+ @click="moreOptions()"
99
+ ></zd-button>
100
+ <zd-button
101
+ :name="instance.name + '_columns_table_footer_close'"
102
+ label="TEKGRID_CLOSE"
103
+ small
104
+ cssClass="zd-ma-2 zd-ml-1"
105
+ @click="close()"
106
+ ></zd-button>
107
+ </div>
108
+ </v-card>
109
+ </v-menu>
110
+ </template>
111
+
112
+ <script lang="ts" src="./TekGridColumnsButton.ts"></script>
113
+
114
+ <style lang="scss">
115
+ .tek-grid-columns-button-options {
116
+ max-height: 250px;
117
+ display: flex;
118
+ flex-direction: column;
119
+ background-color: #fff;
120
+
121
+ &.theme--dark {
122
+ background-color: #1e1e1e
123
+ }
124
+
125
+ .tek-grid-columns-button-table-wrapper {
126
+ flex: 1;
127
+ overflow-y: auto;
128
+
129
+ .tek-grid-columns-button-table {
130
+ font-size: 13px;
131
+ border-spacing: 0;
132
+ width: 100%;
133
+
134
+ thead {
135
+ tr {
136
+ th {
137
+ padding: var(--spacing-2) var(--spacing-2) var(--spacing-1) var(--spacing-2);
138
+ white-space: nowrap;
139
+ text-align: left;
140
+ position: sticky;
141
+ top: 0;
142
+ z-index: 10;
143
+ background-color: var(--zd-background-base);
144
+ }
145
+ }
146
+ }
147
+
148
+ tbody {
149
+ tr {
150
+ td {
151
+ padding: var(--spacing-1) var(--spacing-2);
152
+ white-space: nowrap;
153
+
154
+ &.tek-grid-columns-button-column-name {
155
+ cursor: -webkit-grab;
156
+
157
+ > span {
158
+ padding-right: 4px;
159
+ }
160
+ }
161
+
162
+ &.tek-grid-columns-button-column-aggregation {
163
+ max-width: 150px;
164
+ }
165
+ }
166
+ }
167
+ }
168
+ }
169
+ }
170
+
171
+ .tek-grid-columns-button-table-footer {
172
+ display: flex;
173
+
174
+ .zd-button {
175
+ flex: 1;
176
+ }
177
+ }
178
+ }
179
+
180
+ .tek-grid-columns-button-sortable-drag {
181
+ background: white;
182
+ }
183
+
184
+ // column options modal
185
+ .tek-grid-column-option-box {
186
+ margin: var(--spacing-1);
187
+ background: #ccc;
188
+ padding: 2px var(--spacing-1);
189
+ cursor: pointer;
190
+
191
+ > * {
192
+ display: inline-block;
193
+ }
194
+
195
+ > .zd-icon {
196
+ font-size: 0.9rem;
197
+ margin-left: var(--spacing-2);
198
+ }
199
+
200
+ &.tek-grid-column-option-grouped-true {
201
+ cursor: default;
202
+ background: #fafafa;
203
+
204
+ > .zd-icon {
205
+ display: none;
206
+ }
207
+ }
208
+
209
+ &.tek-grid-column-option-selected-true {
210
+ background: var(--v-primary-base);
211
+ color: white;
212
+
213
+ > .zd-icon {
214
+ color: white;
215
+ }
216
+ }
217
+ }
218
+
219
+
220
+ .tek-grid-column-option-container-col {
221
+ position: relative;
222
+
223
+ .tek-grid-column-option-container {
224
+ background: #eee;
225
+ padding: var(--spacing-1);
226
+ max-height: 100px;
227
+ min-height: 42px;
228
+ align-content: center;
229
+ position: relative;
230
+
231
+ .tek-iterable-footer {
232
+ display: none !important;
233
+ }
234
+
235
+ .zd-text.no-data {
236
+ position: absolute;
237
+ left: 50%;
238
+ top: 50%;
239
+ transform: translate(-50%, -50%);
240
+ text-align: center;
241
+ font-size: 0.7rem;
242
+ }
243
+ }
244
+
245
+ .tek-grid-column-option-label {
246
+ font-weight: var(--zd-font-body2-weight);
247
+ }
248
+
249
+ .tek-grid-column-option-select-all {
250
+ position: absolute;
251
+ top: 0.5rem;
252
+ right: var(--spacing-1);
253
+ color: var(--v-primary-base);
254
+ cursor: pointer;
255
+ font-size: 0.8rem;
256
+ }
257
+
258
+ .tek-grid-column-option-drop-here {
259
+ position: absolute;
260
+ z-index: 100;
261
+ left: 50%;
262
+ transform: translateX(-50%);
263
+ top: 35px;
264
+ }
265
+ }
266
+
267
+ .tek-grid-column-option-detail-name {
268
+ color: var(--v-primary-base);
269
+ font-weight: var(--zd-font-body2-weight);
270
+ font-size: 1.1rem;
271
+ margin-top: var(--spacing-6);
272
+ }
273
+ </style>