@appscode/design-system 1.1.0-alpha.9 → 1.1.0-beta.10

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 (200) hide show
  1. package/base/_video-player.scss +65 -0
  2. package/base/utilities/_all.scss +6 -5
  3. package/base/utilities/_colors.scss +408 -0
  4. package/base/utilities/_customize-bulma.scss +23 -27
  5. package/base/utilities/_extended.scss +3 -2
  6. package/base/utilities/{_default.scss → _global.scss} +185 -331
  7. package/base/utilities/_layouts.scss +157 -0
  8. package/base/utilities/_mixin.scss +11 -11
  9. package/base/utilities/_spacing.scss +96 -0
  10. package/base/utilities/_typography.scss +56 -24
  11. package/base/utilities/dark-theme.scss +1 -1
  12. package/components/_ac-accordion.scss +117 -117
  13. package/components/_ac-alert-box.scss +205 -263
  14. package/components/_ac-calendar.scss +4 -4
  15. package/components/_ac-card.scss +0 -597
  16. package/components/_ac-code-highlight.scss +6 -6
  17. package/components/_ac-content-layout.scss +165 -165
  18. package/components/_ac-drag.scss +11 -11
  19. package/components/_ac-input.scss +477 -452
  20. package/components/_ac-modal.scss +212 -212
  21. package/components/_ac-multi-select.scss +780 -751
  22. package/components/_ac-options.scss +122 -123
  23. package/components/_ac-select-box.scss +5 -5
  24. package/components/_ac-table.scss +503 -502
  25. package/components/_ac-tabs.scss +39 -38
  26. package/components/_ac-tags.scss +116 -116
  27. package/components/_ac-terminal.scss +95 -51
  28. package/components/_add-card.scss +3 -3
  29. package/components/_all.scss +29 -26
  30. package/components/_app-drawer.scss +0 -134
  31. package/components/_breadcumb.scss +0 -71
  32. package/components/_buttons.scss +779 -779
  33. package/components/_card-body-wrapper.scss +5 -5
  34. package/components/_dashboard-header.scss +0 -115
  35. package/components/_direct-deploy.scss +8 -8
  36. package/components/_go-to-top.scss +1 -1
  37. package/components/_image-upload.scss +5 -5
  38. package/components/_left-sidebar-menu.scss +448 -579
  39. package/components/_monaco-editor.scss +1 -1
  40. package/components/_navbar.scss +786 -752
  41. package/components/_nested-list.scss +1 -1
  42. package/components/_overview-info.scss +7 -7
  43. package/components/_overview-page.scss +4 -4
  44. package/components/_pagination.scss +106 -124
  45. package/components/_payment-card.scss +21 -21
  46. package/components/_preloader.scss +1 -1
  47. package/components/_preview-modal.scss +18 -18
  48. package/components/_pricing-table.scss +10 -10
  49. package/components/_progress-bar.scss +12 -12
  50. package/components/_subscription-card.scss +14 -14
  51. package/components/_table-of-content.scss +4 -4
  52. package/components/_tfa.scss +9 -9
  53. package/components/_widget-menu.scss +247 -247
  54. package/components/_wizard.scss +557 -559
  55. package/components/ac-toaster/_ac-toasted.scss +7 -12
  56. package/components/bbum/_activities-header.scss +1 -1
  57. package/components/bbum/_card-team.scss +12 -12
  58. package/components/bbum/_information-center.scss +13 -13
  59. package/components/bbum/_left-sidebar.scss +8 -8
  60. package/components/bbum/_mobile-desktop.scss +7 -7
  61. package/components/bbum/_post.scss +5 -5
  62. package/components/bbum/_sign-up-notification.scss +10 -10
  63. package/components/bbum/_single-post-preview.scss +21 -21
  64. package/components/bbum/_user-profile.scss +10 -10
  65. package/components/ui-builder/_ui-builder.scss +15 -15
  66. package/components/ui-builder/_vue-open-api.scss +515 -2
  67. package/layouts/_code-preview.scss +11 -11
  68. package/main.scss +26 -10
  69. package/package.json +1 -1
  70. package/plugins/theme.js +11 -9
  71. package/plugins/vue-toaster.js +1 -1
  72. package/vue-components/plugins/time-convert.js +49 -0
  73. package/vue-components/text.vue +1 -0
  74. package/vue-components/types/cluster.ts +6 -0
  75. package/vue-components/types/importFlow.ts +16 -0
  76. package/vue-components/types/longRunningTasks.ts +20 -0
  77. package/vue-components/types/notification.ts +6 -0
  78. package/vue-components/types/previewYaml.ts +8 -0
  79. package/vue-components/types/table.ts +54 -0
  80. package/vue-components/types/theme.ts +10 -0
  81. package/vue-components/types/user.ts +22 -0
  82. package/vue-components/v2/card/Card.vue +1 -1
  83. package/vue-components/v2/card/OverviewCards.vue +17 -2
  84. package/vue-components/v2/editor/FilteredFileEditor.vue +2 -2
  85. package/vue-components/v2/editor/ResourceKeyValueEditor.vue +21 -21
  86. package/vue-components/v2/icons/Ellipsis.vue +2 -1
  87. package/vue-components/v2/modal/Modal.vue +0 -5
  88. package/vue-components/v2/navbar/Appdrawer.vue +37 -12
  89. package/vue-components/v2/navbar/Navbar.vue +3 -3
  90. package/vue-components/v2/navbar/NavbarItem.vue +3 -1
  91. package/vue-components/v2/navbar/NavbarItemContent.vue +1 -1
  92. package/vue-components/v2/navbar/User.vue +5 -22
  93. package/vue-components/v2/pagination/Pagination.vue +66 -0
  94. package/vue-components/v2/sidebar/SidebarItem.vue +10 -7
  95. package/vue-components/v3/accordion/Accordion.vue +151 -0
  96. package/vue-components/v3/alert/Alert.vue +238 -0
  97. package/vue-components/v3/alert/Toast.vue +79 -0
  98. package/vue-components/v3/banner/Banner.vue +10 -0
  99. package/vue-components/v3/breadcrumbs/Breadcrumb.vue +104 -0
  100. package/vue-components/v3/button/Button.vue +839 -58
  101. package/vue-components/v3/button/Buttons.vue +6 -0
  102. package/vue-components/v3/button/DownloadBtn.vue +31 -0
  103. package/vue-components/v3/cards/Card.vue +32 -0
  104. package/vue-components/v3/cards/CardContent.vue +7 -0
  105. package/vue-components/v3/cards/CardHeader.vue +14 -0
  106. package/vue-components/v3/cards/Cards.vue +7 -0
  107. package/vue-components/v3/cards/Cluster.vue +149 -0
  108. package/vue-components/v3/cards/Counter.vue +39 -0
  109. package/vue-components/v3/cards/FeatureCard.vue +71 -0
  110. package/vue-components/v3/cards/FeatureCards.vue +6 -0
  111. package/vue-components/v3/cards/InfoCard.vue +243 -0
  112. package/vue-components/v3/cards/Monitoring.vue +94 -0
  113. package/vue-components/v3/cards/OverviewCard.vue +24 -0
  114. package/vue-components/v3/cards/OverviewCards.vue +31 -0
  115. package/vue-components/v3/cards/Payment.vue +62 -0
  116. package/vue-components/v3/cards/Vendor.vue +85 -0
  117. package/vue-components/v3/content/ContentHeader.vue +39 -30
  118. package/vue-components/v3/content/ContentLayout.vue +20 -0
  119. package/vue-components/v3/content/ContentTable.vue +43 -62
  120. package/vue-components/v3/dropdown/DropdownDivider.vue +2 -0
  121. package/vue-components/v3/dropdown/DropdownItem.vue +2 -0
  122. package/vue-components/v3/dropdown/DropdownMenu.vue +85 -91
  123. package/vue-components/v3/editor/Editor.vue +100 -113
  124. package/vue-components/v3/editor/FilteredFileEditor.vue +317 -127
  125. package/vue-components/v3/editor/ResourceKeyValueEditor.vue +70 -94
  126. package/vue-components/v3/footer/FooterArea.vue +34 -0
  127. package/vue-components/v3/footer/FooterItem.vue +32 -0
  128. package/vue-components/v3/footer/FooterItems.vue +15 -0
  129. package/vue-components/v3/footer/Info.vue +23 -0
  130. package/vue-components/v3/footer/Status.vue +42 -0
  131. package/vue-components/v3/footer/Usage.vue +44 -0
  132. package/vue-components/v3/form/Form.vue +24 -33
  133. package/vue-components/v3/form/FormFooterControl.vue +7 -0
  134. package/vue-components/v3/form/FormFooterControls.vue +7 -0
  135. package/vue-components/v3/form-fields/AcSingleInput.vue +528 -0
  136. package/vue-components/v3/form-fields/Input.vue +19 -14
  137. package/vue-components/v3/header/Header.vue +119 -25
  138. package/vue-components/v3/header/HeaderItem.vue +18 -0
  139. package/vue-components/v3/header/HeaderItems.vue +4 -0
  140. package/vue-components/v3/icons/Ellipsis.vue +2 -0
  141. package/vue-components/v3/loaders/InfoCardLoader.vue +65 -0
  142. package/vue-components/v3/loaders/ResourceLoader.vue +4 -12
  143. package/vue-components/v3/loaders/SidebarLoader.vue +4 -12
  144. package/vue-components/v3/long-running-tasks/LongRunningTaskItem.vue +17 -15
  145. package/vue-components/v3/modal/Modal.vue +292 -96
  146. package/vue-components/v3/modals/DeleteConfirmationModal.vue +37 -50
  147. package/vue-components/v3/modals/JsonShowModal.vue +62 -68
  148. package/vue-components/v3/modals/LongRunningTasksModal.vue +145 -143
  149. package/vue-components/v3/navbar/Appdrawer.vue +196 -51
  150. package/vue-components/v3/navbar/Navbar.vue +298 -0
  151. package/vue-components/v3/navbar/NavbarItem.vue +81 -0
  152. package/vue-components/v3/navbar/NavbarItemContent.vue +284 -0
  153. package/vue-components/v3/navbar/Notification.vue +179 -0
  154. package/vue-components/v3/navbar/ThemeMode.vue +128 -112
  155. package/vue-components/v3/navbar/User.vue +383 -268
  156. package/vue-components/v3/notification/AlertBox.vue +41 -44
  157. package/vue-components/v3/notification/Notification.vue +49 -43
  158. package/vue-components/v3/notification/NotificationItem.vue +51 -19
  159. package/vue-components/v3/option-dots/Options.vue +188 -0
  160. package/vue-components/v3/pagination/Pagination.vue +203 -99
  161. package/vue-components/v3/preloader/Preloader.vue +23 -0
  162. package/vue-components/v3/searchbars/SearchBar.vue +59 -34
  163. package/vue-components/v3/sidebar/AccentColorPicker.vue +97 -0
  164. package/vue-components/v3/sidebar/ClusterSwitcher.vue +835 -81
  165. package/vue-components/v3/sidebar/Sidebar.vue +267 -0
  166. package/vue-components/v3/sidebar/SidebarBody.vue +7 -0
  167. package/vue-components/v3/sidebar/SidebarFooter.vue +80 -0
  168. package/vue-components/v3/sidebar/SidebarHeader.vue +124 -0
  169. package/vue-components/v3/sidebar/SidebarItem.vue +62 -0
  170. package/vue-components/v3/sidebar/SidebarItemWithDropDown.vue +101 -104
  171. package/vue-components/v3/sidebar/SidebarMenuList.vue +9 -0
  172. package/vue-components/v3/sidebar/Steps.vue +152 -0
  173. package/vue-components/v3/sidebar/sidebar-tabs/SidebarTabs.vue +128 -0
  174. package/vue-components/v3/sidebar/sidebar-tabs/SidebarTabsLayout.vue +29 -0
  175. package/vue-components/v3/sidebar/sidebar-tabs/TabsContent.vue +99 -0
  176. package/vue-components/v3/tab/TabItem.vue +10 -12
  177. package/vue-components/v3/tab/Tabs.vue +9 -0
  178. package/vue-components/v3/tab/TabsBody.vue +7 -0
  179. package/vue-components/v3/table/EmptyTableInfo.vue +8 -0
  180. package/vue-components/v3/table/FakeTableCell.vue +22 -31
  181. package/vue-components/v3/table/InfoTable.vue +89 -61
  182. package/vue-components/v3/table/MultiInfoTable.vue +72 -95
  183. package/vue-components/v3/table/Table.vue +589 -151
  184. package/vue-components/v3/table/TableCell.vue +20 -23
  185. package/vue-components/v3/table/TableContainer.vue +50 -28
  186. package/vue-components/v3/table/TableRow.vue +63 -85
  187. package/vue-components/v3/table/table-cell/ArrayCell.vue +67 -79
  188. package/vue-components/v3/table/table-cell/CellValue.vue +97 -103
  189. package/vue-components/v3/table/table-cell/GenericCell.vue +43 -42
  190. package/vue-components/v3/table/table-cell/ObjectCell.vue +67 -79
  191. package/vue-components/v3/table/table-cell/ValueWithModal.vue +22 -31
  192. package/vue-components/v3/tabs/EditorTabs.vue +18 -24
  193. package/vue-components/v3/tag/Tag.vue +15 -12
  194. package/vue-components/v3/tag/Tags.vue +7 -0
  195. package/vue-components/v3/terminal/LongRunningTaskTerminal.vue +26 -23
  196. package/base/utilities/_derived-variables.scss +0 -25
  197. package/base/utilities/_initial-variables.scss +0 -215
  198. package/components/_basic-card.scss +0 -128
  199. package/mixins/stickyContent.js +0 -141
  200. package/plugins/caching.ts +0 -243
@@ -1,3 +1,25 @@
1
+ <script setup lang="ts">
2
+ import { defineAsyncComponent, computed } from "vue";
3
+
4
+ interface Props {
5
+ isHeaderCell?: boolean;
6
+ fakeCellWidth?: number;
7
+ }
8
+
9
+ const props = withDefaults(defineProps<Props>(), {
10
+ isHeaderCell: false,
11
+ fakeCellWidth: 0,
12
+ });
13
+
14
+ const TableCell = defineAsyncComponent(() => import("./TableCell.vue"));
15
+
16
+ const dynamicColumnStyle = computed(() => {
17
+ return {
18
+ right: `-${props.fakeCellWidth}px`,
19
+ };
20
+ });
21
+ </script>
22
+
1
23
  <template>
2
24
  <th v-if="isHeaderCell" class="increase-width">
3
25
  <div class="increase-innner" :style="dynamicColumnStyle" />
@@ -6,34 +28,3 @@
6
28
  <div class="increase-innner" :style="dynamicColumnStyle" />
7
29
  </table-cell>
8
30
  </template>
9
-
10
- <script>
11
- import { defineComponent, defineAsyncComponent } from "vue";
12
-
13
- export default defineComponent({
14
- props: {
15
- isHeaderCell: {
16
- type: Boolean,
17
- default: false,
18
- },
19
- fakeCellWidth: {
20
- type: Number,
21
- default: 0,
22
- },
23
- },
24
-
25
- components: {
26
- TableCell: defineAsyncComponent(() =>
27
- import("./TableCell.vue").then((module) => module.default)
28
- ),
29
- },
30
-
31
- computed: {
32
- dynamicColumnStyle() {
33
- return {
34
- right: `-${this.fakeCellWidth}px`,
35
- };
36
- },
37
- },
38
- });
39
- </script>
@@ -1,3 +1,43 @@
1
+ <script setup lang="ts">
2
+ import { computed, defineAsyncComponent, ref } from "vue";
3
+
4
+ interface Props {
5
+ isLoaderActive?: boolean;
6
+ isTableEmpty?: boolean;
7
+ tableHeaders?: Array<unknown>;
8
+ removeContentPadding?: boolean;
9
+ }
10
+
11
+ const props = withDefaults(defineProps<Props>(), {
12
+ isLoaderActive: false,
13
+ isTableEmpty: true,
14
+ tableHeaders: () => [],
15
+ removeContentPadding: false,
16
+ });
17
+
18
+ const TableContainer = defineAsyncComponent(
19
+ () => import("./TableContainer.vue")
20
+ );
21
+
22
+ const EmptyTableInfo = defineAsyncComponent(
23
+ () => import("./EmptyTableInfo.vue")
24
+ );
25
+
26
+ const TableRow = defineAsyncComponent(() => import("./TableRow.vue"));
27
+
28
+ const TableCell = defineAsyncComponent(() => import("./TableCell.vue"));
29
+
30
+ const CellValue = defineAsyncComponent(
31
+ () => import("./table-cell/CellValue.vue")
32
+ );
33
+
34
+ const loaderCols = ref(5);
35
+
36
+ const isFullTableLoaderActive = computed(() => {
37
+ return !props.tableHeaders.length;
38
+ });
39
+ </script>
40
+
1
41
  <template>
2
42
  <table-container>
3
43
  <table
@@ -24,11 +64,13 @@
24
64
  <template v-if="!isTableEmpty">
25
65
  <table-row
26
66
  v-for="(tableHeader, idx) in tableHeaders"
27
- :key="tableHeader"
67
+ :key="(tableHeader as string)"
28
68
  >
29
69
  <table-cell>
30
- <slot :name="`table-cell-icon-${idx}`" />
31
- {{ tableHeader }}
70
+ <span class="is-flex is-align-items-center">
71
+ <slot :name="`table-cell-icon-${idx}`" />
72
+ {{ tableHeader }}
73
+ </span>
32
74
  </table-cell>
33
75
  <table-cell v-if="isLoaderActive">
34
76
  <cell-value :is-loader-active="true" />
@@ -45,61 +87,47 @@
45
87
  </table-container>
46
88
  </template>
47
89
 
48
- <script>
49
- import { defineComponent, defineAsyncComponent } from "vue";
50
-
51
- export default defineComponent({
52
- props: {
53
- isLoaderActive: {
54
- type: Boolean,
55
- default: false,
56
- },
57
- isTableEmpty: {
58
- type: Boolean,
59
- default: true,
60
- },
61
- tableHeaders: {
62
- type: Array,
63
- default: () => [],
64
- },
65
- removeContentPadding: {
66
- type: Boolean,
67
- default: false,
68
- },
69
- },
70
-
71
- components: {
72
- TableContainer: defineAsyncComponent(() =>
73
- import("../../v2/table/TableContainer.vue").then(
74
- (module) => module.default
75
- )
76
- ),
77
- EmptyTableInfo: defineAsyncComponent(() =>
78
- import("../../v2/table/EmptyTableInfo.vue").then(
79
- (module) => module.default
80
- )
81
- ),
82
- TableRow: defineAsyncComponent(() =>
83
- import("./TableRow.vue").then((module) => module.default)
84
- ),
85
- TableCell: defineAsyncComponent(() =>
86
- import("./TableCell.vue").then((module) => module.default)
87
- ),
88
- CellValue: defineAsyncComponent(() =>
89
- import("./table-cell/CellValue.vue").then((module) => module.default)
90
- ),
91
- },
92
-
93
- data() {
94
- return {
95
- loaderCols: 5,
96
- };
97
- },
98
-
99
- computed: {
100
- isFullTableLoaderActive() {
101
- return !this.tableHeaders.length;
102
- },
103
- },
104
- });
105
- </script>
90
+ <style lang="scss">
91
+ // INFO TABLE START
92
+ .table.ac-info-table {
93
+ background-color: transparent;
94
+ border-top: 1px solid $primary-93;
95
+
96
+ &.is-fullwidth {
97
+ tbody {
98
+ tr {
99
+ td {
100
+ &:first-child {
101
+ width: 1%;
102
+ }
103
+ }
104
+ }
105
+ }
106
+ }
107
+
108
+ padding: 10px;
109
+ border-radius: 4px;
110
+
111
+ tbody {
112
+ display: block;
113
+ padding: 5px 20px;
114
+
115
+ tr {
116
+ td {
117
+ border: none;
118
+ font-size: 13px;
119
+ color: $primary-20;
120
+ font-weight: 400;
121
+ padding: 3px 0px;
122
+ min-width: 230px;
123
+
124
+ &:first-child {
125
+ font-weight: 400;
126
+ padding-right: 10px;
127
+ color: $primary-5;
128
+ }
129
+ }
130
+ }
131
+ }
132
+ }
133
+ </style>
@@ -1,3 +1,75 @@
1
+ <script setup lang="ts">
2
+ import type { AcTableCol } from "../../types/table";
3
+ import { defineAsyncComponent, ref, computed, watch } from "vue";
4
+
5
+ interface Props {
6
+ isLoaderActive?: boolean;
7
+ isTableEmpty?: boolean;
8
+ tableHeaders?: Array<AcTableCol>;
9
+ removeContentPadding?: boolean;
10
+ }
11
+
12
+ const props = withDefaults(defineProps<Props>(), {
13
+ isLoaderActive: false,
14
+ isTableEmpty: false,
15
+ tableHeaders: () => [],
16
+ removeContentPadding: false,
17
+ });
18
+
19
+ const TableContainer = defineAsyncComponent(
20
+ () => import("../table/TableContainer.vue")
21
+ );
22
+ const EmptyTableInfo = defineAsyncComponent(
23
+ () => import("../table/EmptyTableInfo.vue")
24
+ );
25
+ const TableRow = defineAsyncComponent(() => import("../table/TableRow.vue"));
26
+ const TableCell = defineAsyncComponent(() => import("../table/TableCell.vue"));
27
+ const CellValue = defineAsyncComponent(
28
+ () => import("../table/table-cell/CellValue.vue")
29
+ );
30
+
31
+ const loaderCols = ref(5);
32
+ const headerSortables = ref<Array<{ enabled: boolean; mode: string }>>([]);
33
+
34
+ const isFullTableLoaderActive = computed(() => {
35
+ return !props.tableHeaders.length;
36
+ });
37
+
38
+ const headerLabels = computed(() => {
39
+ return props.tableHeaders.map((th) =>
40
+ typeof th === "string" ? th : th?.name || "Label"
41
+ );
42
+ });
43
+
44
+ watch(
45
+ () => props.tableHeaders,
46
+ (n) => {
47
+ if (headerSortables.value.length === n.length) {
48
+ n.forEach((th, idx) => {
49
+ if (headerSortables.value[idx].enabled !== !!th?.sort?.enable) {
50
+ headerSortables.value[idx].enabled = !!th?.sort?.enable;
51
+ headerSortables.value[idx].mode = "";
52
+ }
53
+ });
54
+ } else {
55
+ headerSortables.value = n.map((th) => {
56
+ if (typeof th === "string") {
57
+ return {
58
+ enabled: false,
59
+ mode: "",
60
+ };
61
+ } else {
62
+ return {
63
+ enabled: !!th?.sort?.enable,
64
+ mode: "",
65
+ };
66
+ }
67
+ });
68
+ }
69
+ }
70
+ );
71
+ </script>
72
+
1
73
  <template>
2
74
  <table-container>
3
75
  <table
@@ -46,98 +118,3 @@
46
118
  <!-- pagination end -->
47
119
  </table-container>
48
120
  </template>
49
-
50
- <script>
51
- import { defineComponent, defineAsyncComponent } from "vue";
52
-
53
- export default defineComponent({
54
- props: {
55
- isLoaderActive: {
56
- type: Boolean,
57
- default: false,
58
- },
59
- isTableEmpty: {
60
- type: Boolean,
61
- default: true,
62
- },
63
- tableHeaders: {
64
- type: Array,
65
- default: () => [],
66
- },
67
- removeContentPadding: {
68
- type: Boolean,
69
- default: false,
70
- },
71
- },
72
-
73
- components: {
74
- TableContainer: defineAsyncComponent(() =>
75
- import("../../v2/table/TableContainer.vue").then(
76
- (module) => module.default
77
- )
78
- ),
79
- EmptyTableInfo: defineAsyncComponent(() =>
80
- import("../../v2/table/EmptyTableInfo.vue").then(
81
- (module) => module.default
82
- )
83
- ),
84
- TableRow: defineAsyncComponent(() =>
85
- import("./TableRow.vue").then((module) => module.default)
86
- ),
87
- TableCell: defineAsyncComponent(() =>
88
- import("./TableCell.vue").then((module) => module.default)
89
- ),
90
- CellValue: defineAsyncComponent(() =>
91
- import("./table-cell/CellValue.vue").then((module) => module.default)
92
- ),
93
- },
94
-
95
- data() {
96
- return {
97
- loaderCols: 5,
98
- headerSortables: [],
99
- };
100
- },
101
-
102
- computed: {
103
- isFullTableLoaderActive() {
104
- return !this.tableHeaders.length;
105
- },
106
- headerLabels() {
107
- return this.tableHeaders.map((th) =>
108
- typeof th === "string" ? th : th?.name || "Label"
109
- );
110
- },
111
- },
112
-
113
- watch: {
114
- tableHeaders: {
115
- immediate: true,
116
- handler(n) {
117
- if (this.headerSortables.length === n.length) {
118
- n.forEach((th, idx) => {
119
- if (this.headerSortables[idx].enabled !== !!th?.sort?.enable) {
120
- this.headerSortables[idx].enabled = !!th?.sort?.enable;
121
- this.headerSortables[idx].mode = "";
122
- }
123
- });
124
- } else {
125
- this.headerSortables = n.map((th) => {
126
- if (typeof th === "string") {
127
- return {
128
- enabled: false,
129
- mode: "",
130
- };
131
- } else {
132
- return {
133
- enabled: !!th?.sort?.enable,
134
- mode: "",
135
- };
136
- }
137
- });
138
- }
139
- },
140
- },
141
- },
142
- });
143
- </script>