@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,119 @@
1
+ import { Input } from '@zeedhi/common';
2
+ import { ITekGridLayout, TekGridLayoutOptions, TekRestDatasource } from '@zeedhi/teknisa-components-common';
3
+ import { IEventParam } from '@zeedhi/core';
4
+ import { defineComponent, mergeProps, onMounted, ref } from 'vue';
5
+ import { ZdComponentRenderProps, useCreateInstance } from '@zeedhi/vuetify';
6
+ import { useTableLayout } from '../../../composables/useTableLayout';
7
+
8
+ export const TekGridLayoutOptionsProps = {
9
+ ...ZdComponentRenderProps,
10
+ // Zeedhi 3.0
11
+ };
12
+
13
+ const layoutOptionsComponent = defineComponent({
14
+ props: TekGridLayoutOptionsProps,
15
+ inheritAttrs: false,
16
+ setup(props, ctx) {
17
+ const { instance, root } = useCreateInstance<TekGridLayoutOptions>(props, ctx, TekGridLayoutOptions);
18
+
19
+ const { applyLayout: applyTekGridLayout, getColumnElements, getTableWidth } = useTableLayout();
20
+
21
+ onMounted(() => {
22
+ instance.viewApplyLayout = applyLayout;
23
+ instance.viewGetCurrentLayout = getCurrentLayout;
24
+ });
25
+
26
+ const confirmLayoutClick = ({ component }: IEventParam<Input>) => {
27
+ const layoutName = component.value;
28
+ if (layoutName) {
29
+ const newLayout: ITekGridLayout = getCurrentLayout(layoutName);
30
+ instance.newLayout(newLayout);
31
+ }
32
+
33
+ menuActive.value = false;
34
+ component.value = '';
35
+ };
36
+
37
+ const datasourceDynamicFilter = () => {
38
+ const datasource = instance.grid.datasource;
39
+ if (datasource instanceof TekRestDatasource) return datasource.dynamicFilter;
40
+ return {};
41
+ };
42
+
43
+ const changeLayout = (layout: ITekGridLayout) => {
44
+ instance.updateLayout(layout.name, getCurrentLayout(layout.name));
45
+ };
46
+
47
+ const applyLayout = (layout?: ITekGridLayout) => {
48
+ const defaultLayout = {
49
+ originalDatasourceOrder: instance.originalDatasourceOrder,
50
+ originalDatasourceFilter: instance.originalDatasourceFilter,
51
+ originalColumnProps: instance.originalColumnProps,
52
+ originalDatasourceDynamicFilter: instance.originalDatasourceDynamicFilter,
53
+ };
54
+ applyTekGridLayout({ layout, defaultLayout, changeLayoutCallback: changeLayout });
55
+ menuActive.value = false;
56
+ };
57
+
58
+ const getCurrentLayout = (layoutName: string) => {
59
+ const { grid } = instance;
60
+
61
+ const gridWidth = getTableWidth();
62
+ const columnElementsDict = getColumnElements();
63
+
64
+ return {
65
+ name: layoutName,
66
+ gridWidth,
67
+ order: grid.datasource.order,
68
+ filter: grid.datasource.filter,
69
+ dynamicFilter: datasourceDynamicFilter(),
70
+ columns: grid.columns.map((column: any, index) => {
71
+ const columnElement = columnElementsDict[index];
72
+ return {
73
+ name: column.name,
74
+ label: column.label,
75
+ align: column.align,
76
+ width: columnElement ? window.getComputedStyle(columnElement).width : 'unset',
77
+ minWidth: column.minWidth,
78
+ maxWidth: column.maxWidth,
79
+ isVisible: column.isVisible,
80
+ fixed: column.fixed,
81
+ grouped: column.grouped,
82
+ groupOpened: column.groupOpened,
83
+ aggregation: column.aggregation,
84
+ filterHelperValue: instance.getHelperValue(column),
85
+ };
86
+ }),
87
+ };
88
+ };
89
+
90
+ const menuActive = ref(false);
91
+
92
+ const applyOrUpdateLayout = (event: Event, layoutName: string) => {
93
+ if (instance.layoutEdited) {
94
+ instance.updateLayout(layoutName, getCurrentLayout(layoutName));
95
+ event.stopImmediatePropagation();
96
+ menuActive.value = false;
97
+ } else {
98
+ instance.applyLayout(layoutName);
99
+ }
100
+ };
101
+
102
+ const deleteLayout = (event: Event, layoutName: string) => {
103
+ instance.deleteLayout(layoutName);
104
+ event.stopImmediatePropagation();
105
+ };
106
+
107
+ return {
108
+ instance,
109
+ root,
110
+ menuActive,
111
+ confirmLayoutClick,
112
+ applyOrUpdateLayout,
113
+ deleteLayout,
114
+ mergeProps,
115
+ };
116
+ },
117
+ });
118
+
119
+ export default layoutOptionsComponent;
@@ -0,0 +1,172 @@
1
+ <template>
2
+ <v-menu
3
+ :id="instance.name"
4
+ :name="instance.name"
5
+ :class="['tek-grid-layout-options', instance.cssClass]"
6
+ :style="instance.cssStyle"
7
+ v-model="menuActive"
8
+ offset-y
9
+ :closeOnContentClick="false"
10
+ >
11
+ <template v-slot:activator="{ props: onMenu }">
12
+ <v-tooltip bottom>
13
+ <template v-slot:activator="{ props: onTooltip }">
14
+ <v-badge
15
+ v-show="instance.isVisible"
16
+ overlap
17
+ class="tek-grid-layout-options-badge"
18
+ dot
19
+ :offsetX="12"
20
+ :offsetY="12"
21
+ :value="instance.layoutEdited"
22
+ >
23
+ <zd-activator-wrapper
24
+ ref="root"
25
+ v-bind="mergeProps(onMenu, onTooltip)"
26
+ :child-props="{
27
+ component: 'ZdButton',
28
+ name: instance.name + '_button',
29
+ icon: true,
30
+ iconName: 'mdi-table-star',
31
+ isVisible: instance.isVisible,
32
+ }"
33
+ ></zd-activator-wrapper>
34
+ </v-badge>
35
+ </template>
36
+ <span>{{ $t('LAYOUT') + (instance.currentLayoutName || $t('DEFAULT_LAYOUT')) }}</span>
37
+ </v-tooltip>
38
+ </template>
39
+ <v-list>
40
+ <v-list-item
41
+ :class="['tek-grid-layout-item-header', { edited: instance.layoutEdited }]"
42
+ >
43
+ {{ instance.layoutEdited ? $t('LAYOUT_MODIFIED') : $t('LAYOUT_NOT_MODIFIED')}}
44
+ </v-list-item>
45
+ <v-list-item>
46
+ <zd-text-input
47
+ :name="instance.name+'_new_layout'"
48
+ ref="inputNewLayout"
49
+ v-bind="{
50
+ showHelper: false,
51
+ showLabel: false,
52
+ placeholder: 'NEW_LAYOUT',
53
+ appendOuterIcon: 'mdi-check',
54
+ autofocus: true,
55
+ autofill: false,
56
+ keyMap: {
57
+ enter: {
58
+ event: confirmLayoutClick,
59
+ input: true,
60
+ active: true,
61
+ },
62
+ },
63
+ events: {
64
+ appendOuterIconClick: confirmLayoutClick,
65
+ },
66
+ }"
67
+ />
68
+ </v-list-item>
69
+ <v-list-item
70
+ v-if="!instance.layoutEdited"
71
+ :class="['tek-grid-layout-item', {
72
+ selected: instance.currentLayoutName === ''
73
+ }]"
74
+ @click="instance.applyLayout('')"
75
+ >
76
+ {{ $t('DEFAULT_LAYOUT') }}
77
+ </v-list-item>
78
+ <v-list-item
79
+ v-for="item in instance.layoutNames"
80
+ :key="item"
81
+ :class="['tek-grid-layout-item', {
82
+ selected: item === instance.currentLayoutName
83
+ }]"
84
+ @click="applyOrUpdateLayout($event, item)"
85
+ >
86
+ {{ item }}
87
+ <span v-if="!instance.layoutEdited" class="tek-grid-layout-item-buttons">
88
+ <zd-button
89
+ :name="'tek-grid-layout-item-delete_' + instance.name + item"
90
+ v-bind="{
91
+ small: true,
92
+ icon: true,
93
+ iconName: 'mdi-trash-can-outline',
94
+ events: {
95
+ click: ({ event }) => { deleteLayout(event, item) },
96
+ },
97
+ }"
98
+ />
99
+ </span>
100
+ </v-list-item>
101
+ <v-list-item
102
+ v-if="instance.layoutEdited"
103
+ :class="['tek-grid-layout-item-discard']"
104
+ @click="instance.discardChanges()"
105
+ >
106
+ <zd-button small color="error darken-2" width="100%" name="tek-grid-layout-item-discard-changes" label="LAYOUT_DISCART_CHANGES"></zd-button>
107
+ </v-list-item>
108
+ </v-list>
109
+ </v-menu>
110
+ </template>
111
+
112
+ <script lang="ts" src="./TekGridLayoutOptions.ts"></script>
113
+
114
+ <style lang="scss">
115
+ .tek-grid-layout-options {
116
+ &-badge {
117
+ .v-badge__badge {
118
+ font-size: var(--zd-font-caption-size);
119
+ font-weight: var(--zd-font-caption-weight);
120
+ line-height: 14px;
121
+ pointer-events: none;
122
+ background-color: var(--zd-badge-background-color) !important;
123
+
124
+ span {
125
+ color: var(--zd-badge-text-color) !important;
126
+ }
127
+ }
128
+ }
129
+ }
130
+
131
+ .tek-grid-layout-item {
132
+ font-size: 13px;
133
+ cursor: pointer;
134
+ min-height: 30px;
135
+
136
+ &.selected {
137
+ font-weight: 700;
138
+ }
139
+
140
+ &:hover {
141
+ &.theme--light {
142
+ background: #eee;
143
+ }
144
+ }
145
+
146
+ .tek-grid-layout-item-buttons {
147
+ position: absolute;
148
+ right: 16px;
149
+
150
+ .v-icon {
151
+ font-size: 18px;
152
+ }
153
+ }
154
+ }
155
+
156
+ .tek-grid-layout-item-header {
157
+ max-width: 270px;
158
+ font-size: 13px;
159
+ font-weight: bold;
160
+ color: var(--v-primary-base) !important;
161
+ line-height: 18px;
162
+
163
+ &.edited {
164
+ color: var(--v-error-darken2) !important;
165
+ }
166
+ }
167
+
168
+ .tek-grid-layout-item-discard {
169
+ min-height: 30px;
170
+ padding-top: 10px;
171
+ }
172
+ </style>
@@ -0,0 +1,62 @@
1
+ import { GridColumn } from '@zeedhi/common';
2
+ import { IDictionary } from '@zeedhi/core';
3
+ import { PropType, defineComponent } from 'vue';
4
+
5
+ export default defineComponent({
6
+ props: {
7
+ isSelected: {
8
+ type: Boolean,
9
+ required: true,
10
+ },
11
+ selectable: {
12
+ type: Boolean,
13
+ required: true,
14
+ },
15
+ selectionDisabled: {
16
+ type: Boolean,
17
+ required: true,
18
+ },
19
+ cellSelection: {
20
+ type: Boolean,
21
+ required: true,
22
+ },
23
+ isCurrent: {
24
+ type: Function as PropType<(args: { row: IDictionary; column?: GridColumn }) => boolean>,
25
+ required: true,
26
+ },
27
+ columns: {
28
+ type: Array as PropType<GridColumn[]>,
29
+ required: true,
30
+ },
31
+ row: {
32
+ type: Object as PropType<IDictionary>,
33
+ required: true,
34
+ },
35
+ fixedLeft: {
36
+ type: Object as PropType<IDictionary>,
37
+ required: true,
38
+ },
39
+ fixedRight: {
40
+ type: Object as PropType<IDictionary>,
41
+ required: true,
42
+ },
43
+ },
44
+ emits: ['focusin'],
45
+ setup(props, { emit }) {
46
+ const focusin = (event: Event) => {
47
+ emit('focusin', { event, row: props.row });
48
+ };
49
+
50
+ const getLevel = (row: IDictionary) => {
51
+ if (!row.groupHeaders) return 0;
52
+
53
+ const { length } = row.groupHeaders;
54
+ return length + 1;
55
+ };
56
+
57
+ return {
58
+ focusin,
59
+ getLevel,
60
+ };
61
+ },
62
+ });
@@ -0,0 +1,64 @@
1
+ <template>
2
+ <table-row
3
+ :cssClass="[
4
+ 'tek-grid-footer-row',
5
+ { 'tek-grid-footer-row--summary': row.groupSummary }
6
+ ]"
7
+ >
8
+ <td
9
+ v-if="selectable"
10
+ :class="[
11
+ 'zd-grid__cell',
12
+ 'zd-grid__cell--fixed',
13
+ 'zd-grid__selectable-cell',
14
+ ]"
15
+ ></td>
16
+ <zd-grid-cell
17
+ v-for="(column, index) in columns" :key="column.name"
18
+ :row="row"
19
+ :column="column"
20
+ :cssClass="[
21
+ {
22
+ 'zd-grid__cell--fixed': column.fixed,
23
+ 'zd-grid__action-cell--fixed': column.actionFixed,
24
+ },
25
+ ]"
26
+ :cssStyle="[{
27
+ left: column.fixed ? fixedLeft[column.name] : 'unset',
28
+ right: column.actionFixed ? fixedRight[column.name] : 'unset',
29
+ }]"
30
+ :cellSelection="cellSelection"
31
+ :isCurrent="isCurrent({ row, column })"
32
+ v-memo="[row, column, fixedLeft, fixedRight, cellSelection, isCurrent({ row, column })]"
33
+ @focus="cellFocus($event, column)"
34
+ @focusin="focusin($event, column)"
35
+ >
36
+ <template #prepend>
37
+ <tek-grid-indentation
38
+ v-if="index === 0"
39
+ footer
40
+ :level="getLevel(row)"
41
+ ></tek-grid-indentation>
42
+ </template>
43
+ </zd-grid-cell>
44
+ </table-row>
45
+ </template>
46
+
47
+ <script lang="ts" src="./TekGridFooterRow"></script>
48
+
49
+ <style lang="scss">
50
+ .tek-grid-footer-row {
51
+ &--summary {
52
+ background: var(--row-active-color);
53
+
54
+ .zd-grid__cell-content {
55
+ font-size: 15px;
56
+ }
57
+ }
58
+
59
+ .zd-grid__cell-content {
60
+ padding: 0 8px;
61
+ font-weight: bold;
62
+ }
63
+ }
64
+ </style>
@@ -0,0 +1,65 @@
1
+ import { GridColumn } from '@zeedhi/common';
2
+ import { IDictionary } from '@zeedhi/core';
3
+ import { PropType, defineComponent } from 'vue';
4
+
5
+ export default defineComponent({
6
+ props: {
7
+ isSelected: {
8
+ type: Boolean,
9
+ required: true,
10
+ },
11
+ isCurrentRow: {
12
+ type: Boolean,
13
+ required: true,
14
+ },
15
+ selectable: {
16
+ type: Boolean,
17
+ required: true,
18
+ },
19
+ selectionDisabled: {
20
+ type: Boolean,
21
+ required: true,
22
+ },
23
+ cellSelection: {
24
+ type: Boolean,
25
+ required: true,
26
+ },
27
+ isCurrent: {
28
+ type: Function as PropType<(args: { row: IDictionary; column?: GridColumn }) => boolean>,
29
+ required: true,
30
+ },
31
+ row: {
32
+ type: Object as PropType<IDictionary>,
33
+ required: true,
34
+ },
35
+ indeterminate: {
36
+ type: Boolean,
37
+ required: true,
38
+ },
39
+ },
40
+ emits: ['click', 'checkboxClick', 'focusin', 'expandClick'],
41
+ setup(props, { emit }) {
42
+ const click = (event: Event) => {
43
+ emit('click', event);
44
+ };
45
+
46
+ const checkboxClick = (event: Event) => {
47
+ emit('checkboxClick', event);
48
+ };
49
+
50
+ const focusin = (event: Event) => {
51
+ emit('focusin', { event, row: props.row });
52
+ };
53
+
54
+ const expandClick = (event: Event) => {
55
+ emit('expandClick', { event, row: props.row });
56
+ };
57
+
58
+ return {
59
+ click,
60
+ focusin,
61
+ checkboxClick,
62
+ expandClick,
63
+ };
64
+ },
65
+ });
@@ -0,0 +1,65 @@
1
+ <template>
2
+ <table-row
3
+ :class="[
4
+ 'tek-grid-group-row',
5
+ { 'tek-grid-row-group--summary': row.groupSummary }
6
+ ]"
7
+ :isCurrentRow="isCurrentRow"
8
+ @click="click($event)"
9
+ >
10
+ <zd-grid-checkbox
11
+ v-if="selectable"
12
+ :disabled="selectionDisabled"
13
+ :isSelected="isSelected"
14
+ :indeterminate="indeterminate"
15
+ :cellSelection="cellSelection"
16
+ :isCurrent="isCurrent({ row })"
17
+ @focusin="focusin($event)"
18
+ @click.stop="checkboxClick($event)"
19
+ />
20
+
21
+ <td
22
+ :colspan="999"
23
+ :class="
24
+ [
25
+ 'zd-grid__cell',
26
+ 'text-left',
27
+ 'tek-grid-group-cell',
28
+ 'zd-grid__cell--fixed',
29
+ ]"
30
+ :style="`left: ${(selectable ? 40 : 0)}px`"
31
+ :tabindex="cellSelection ? 0 : ''"
32
+ >
33
+ <span
34
+ :class="[
35
+ 'tek-grid-group-cell__container'
36
+ ]"
37
+ :style="`left: ${(selectable ? 48 : 8)}px`"
38
+ >
39
+ <tek-grid-indentation
40
+ :level="row.groupHeaders.length"
41
+ ></tek-grid-indentation>
42
+ <v-icon
43
+ :class="{ closed: !row.groupOpened }"
44
+ @click="expandClick($event)"
45
+ :key="`${row.groupIndex}_${row.groupValue}`"
46
+ >{{ $getIcon('expand') }}</v-icon>
47
+ <span class="tek-grid__group-text zd-ml-2">{{ (row.groupLabel? row.groupLabel + ': ': '') + row.groupValue }}</span>
48
+ </span>
49
+ </td>
50
+ </table-row>
51
+ </template>
52
+
53
+ <script lang="ts" src="./TekGridGroupRow"></script>
54
+
55
+ <style lang="scss">
56
+ .tek-grid-group-cell {
57
+ font-weight: bold;
58
+
59
+ &__container {
60
+ height: 100%;
61
+ align-items: center;
62
+ position: sticky;
63
+ }
64
+ }
65
+ </style>
@@ -0,0 +1,51 @@
1
+ import { ZdUserInfoProps } from '@zeedhi/zd-user-info-vue';
2
+ import { defineComponent } from 'vue';
3
+ import { TekUserInfo as TekUserInfoClass } from '@zeedhi/teknisa-components-common';
4
+ import type { IComponentRender } from '@zeedhi/common';
5
+ import { useCreateInstance, useGetMethods } from '@zeedhi/vuetify';
6
+
7
+ export const TekUserInfoProps ={
8
+ ...ZdUserInfoProps,
9
+ aboutImage: {
10
+ type: String,
11
+ default: '',
12
+ },
13
+ defaultEmail: {
14
+ type: String,
15
+ default: '',
16
+ },
17
+ versionInfo: {
18
+ type: [Object, String],
19
+ default: null,
20
+ },
21
+ versionUrl: {
22
+ type: String,
23
+ default: '',
24
+ },
25
+ bottomSlot: {
26
+ type: Array as () => IComponentRender[],
27
+ default: undefined,
28
+ },
29
+ };
30
+
31
+ const tekUserInfoComponent = defineComponent({
32
+ props: TekUserInfoProps,
33
+ inheritAttrs: false,
34
+ setup(props, ctx) {
35
+ const { instance, root } = useCreateInstance<TekUserInfoClass>(props, ctx, TekUserInfoClass);
36
+
37
+ const { click, focus, blur, mouseenter, mouseleave } = useGetMethods(instance, root);
38
+
39
+ return {
40
+ instance,
41
+ root,
42
+ click,
43
+ focus,
44
+ blur,
45
+ mouseenter,
46
+ mouseleave,
47
+ };
48
+ }
49
+ })
50
+
51
+ export default tekUserInfoComponent;
@@ -0,0 +1,53 @@
1
+ <template>
2
+ <zd-user-info
3
+ :id="instance.name"
4
+ :instance-object="instance"
5
+ name="user-info"
6
+ >
7
+ </zd-user-info>
8
+ </template>
9
+
10
+ <script lang="ts" src="./TekUserInfo.ts"></script>
11
+
12
+ <style lang="scss">
13
+ .about-modal {
14
+ flex-grow: 0;
15
+ overflow-y: unset;
16
+ width: auto;
17
+ border: 3px solid var(--v-primary-base);
18
+
19
+ .zd-modal-card, .zd-modal-card-text, .zd-modal-container, .zd-tabs {
20
+ height: 100%;
21
+ }
22
+
23
+ .v-card-text {
24
+ font-size: .875rem !important;
25
+ }
26
+
27
+ .zd-modal-card-text{
28
+ padding: 8px !important;
29
+ }
30
+
31
+ .zd-modal-container {
32
+ display: flex;
33
+ flex-direction: column;
34
+ }
35
+
36
+ .zd-tabs, .v-tabs-items {
37
+ overflow-y: auto;
38
+ }
39
+
40
+ .zd-image-valid{
41
+ width: 50%;
42
+ align-items: center;
43
+ }
44
+
45
+ #basic-user-info_version_tabs{
46
+ height: 300px !important;
47
+ }
48
+
49
+ #basic-user-info_about_image {
50
+ text-align: center;
51
+ }
52
+ }
53
+ </style>
@@ -0,0 +1,39 @@
1
+ import { TekUserInfoList as TekUserInfoListClass } from '@zeedhi/teknisa-components-common';
2
+ import { defineComponent } from 'vue';
3
+ import { useCreateInstance, useGetMethods, ZdListProps } from '@zeedhi/vuetify';
4
+
5
+
6
+ const TekUserInfoListProps = {
7
+ ...ZdListProps,
8
+ parentName: {
9
+ type: String,
10
+ default: '',
11
+ },
12
+ dense: {
13
+ type: [Boolean, String],
14
+ default: true,
15
+ },
16
+ };
17
+
18
+ const tekUserInfoListComponent = defineComponent({
19
+ props: TekUserInfoListProps,
20
+ inheritAttrs: false,
21
+ setup(props,ctx) {
22
+ const { instance, root } = useCreateInstance<TekUserInfoListClass>(props, ctx, TekUserInfoListClass);
23
+
24
+ const { click, focus, blur, mouseenter, mouseleave } = useGetMethods(instance, root);
25
+
26
+ return {
27
+ instance,
28
+ root,
29
+ click,
30
+ focus,
31
+ blur,
32
+ mouseenter,
33
+ mouseleave,
34
+ };
35
+ }
36
+
37
+ })
38
+
39
+ export default tekUserInfoListComponent;
@@ -0,0 +1,12 @@
1
+ <template>
2
+ <zd-list
3
+ :id="instance.name"
4
+ :instance-object="instance"
5
+ name="list"
6
+ ></zd-list>
7
+ </template>
8
+
9
+ <script lang="ts" src="./TekUserInfoList.ts"></script>
10
+
11
+ <style lang="scss">
12
+ </style>