@appscode/design-system 1.1.0 → 2.0.0

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 (215) hide show
  1. package/base/_video-player.scss +65 -0
  2. package/base/utilities/_all.scss +7 -5
  3. package/base/utilities/_colors.scss +377 -0
  4. package/base/utilities/_customize-bulma.scss +23 -27
  5. package/base/utilities/_extended.scss +39 -0
  6. package/base/utilities/{_default.scss → _global.scss} +192 -333
  7. package/base/utilities/_layouts.scss +19 -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/components/_ac-alert-box.scss +205 -263
  12. package/components/_ac-calendar.scss +4 -4
  13. package/components/_ac-code-highlight.scss +13 -16
  14. package/components/_ac-content-layout.scss +165 -165
  15. package/components/_ac-drag.scss +13 -13
  16. package/components/_ac-modal.scss +212 -212
  17. package/components/_ac-options.scss +122 -123
  18. package/components/_ac-select-box.scss +10 -10
  19. package/components/_ac-table.scss +503 -502
  20. package/components/_ac-tabs.scss +65 -61
  21. package/components/_ac-tags.scss +116 -116
  22. package/components/_accordion.scss +117 -0
  23. package/components/_add-card.scss +3 -3
  24. package/components/_all.scss +35 -28
  25. package/components/_app-drawer.scss +0 -134
  26. package/components/_breadcumb.scss +0 -71
  27. package/components/_buttons.scss +779 -779
  28. package/components/_card-body-wrapper.scss +5 -5
  29. package/components/_dashboard-header.scss +0 -115
  30. package/components/_direct-deploy.scss +8 -8
  31. package/components/_getkeeper.scss +110 -0
  32. package/components/_go-to-top.scss +1 -1
  33. package/components/_graph.scss +10 -10
  34. package/components/_image-upload.scss +9 -9
  35. package/components/_input-card.scss +232 -0
  36. package/components/_input.scss +573 -0
  37. package/components/_left-sidebar-menu.scss +452 -587
  38. package/components/_monaco-editor.scss +2 -2
  39. package/components/{_ac-multi-select.scss → _multi-select.scss} +89 -251
  40. package/components/_navbar.scss +786 -752
  41. package/components/_nested-list.scss +3 -3
  42. package/components/_overview-info.scss +10 -10
  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 +14 -14
  49. package/components/_progress-bar.scss +73 -86
  50. package/components/_subscription-card.scss +22 -24
  51. package/components/_table-of-content.scss +8 -8
  52. package/components/{_ac-terminal.scss → _terminal.scss} +114 -81
  53. package/components/_tfa.scss +9 -9
  54. package/components/_transitions.scss +35 -0
  55. package/components/_widget-menu.scss +252 -257
  56. package/components/_wizard.scss +518 -793
  57. package/components/ac-toaster/_ac-toasted.scss +11 -16
  58. package/components/bbum/_activities-header.scss +1 -1
  59. package/components/bbum/_card-team.scss +12 -12
  60. package/components/bbum/_information-center.scss +21 -23
  61. package/components/bbum/_left-sidebar.scss +8 -8
  62. package/components/bbum/_mobile-desktop.scss +16 -21
  63. package/components/bbum/_post.scss +5 -5
  64. package/components/bbum/_sign-up-notification.scss +10 -10
  65. package/components/bbum/_single-post-preview.scss +29 -29
  66. package/components/bbum/_user-profile.scss +10 -10
  67. package/components/ui-builder/_ui-builder.scss +221 -31
  68. package/components/ui-builder/_vue-open-api.scss +565 -7
  69. package/icons/close-icon.svg +3 -0
  70. package/layouts/_code-preview.scss +17 -18
  71. package/main.scss +26 -10
  72. package/package.json +1 -1
  73. package/plugins/theme.js +11 -9
  74. package/plugins/vue-toaster.js +1 -1
  75. package/vue-components/images/icons/cluster-icon.svg +10 -0
  76. package/vue-components/images/icons/org-icon.svg +10 -0
  77. package/vue-components/plugins/time-convert.js +49 -0
  78. package/vue-components/types/cluster.ts +6 -0
  79. package/vue-components/types/importFlow.ts +16 -0
  80. package/vue-components/types/notification.ts +6 -0
  81. package/vue-components/types/previewYaml.ts +8 -0
  82. package/vue-components/types/table.ts +55 -0
  83. package/vue-components/types/theme.ts +10 -0
  84. package/vue-components/types/user.ts +22 -0
  85. package/vue-components/v2/banner/Banner.vue +1 -1
  86. package/vue-components/v2/button/Buttons.vue +1 -1
  87. package/vue-components/v2/card/Card.vue +1 -1
  88. package/vue-components/v2/card/OverviewCards.vue +17 -2
  89. package/vue-components/v2/content/ContentTable.vue +14 -9
  90. package/vue-components/v2/editor/FilteredFileEditor.vue +2 -2
  91. package/vue-components/v2/editor/ResourceKeyValueEditor.vue +21 -21
  92. package/vue-components/v2/icons/Ellipsis.vue +2 -1
  93. package/vue-components/v2/modal/Modal.vue +2 -6
  94. package/vue-components/v2/navbar/Appdrawer.vue +37 -12
  95. package/vue-components/v2/navbar/Navbar.vue +3 -3
  96. package/vue-components/v2/navbar/NavbarItem.vue +3 -1
  97. package/vue-components/v2/navbar/NavbarItemContent.vue +1 -1
  98. package/vue-components/v2/navbar/User.vue +5 -22
  99. package/vue-components/v2/pagination/Pagination.vue +66 -0
  100. package/vue-components/v2/sidebar/SidebarItem.vue +10 -7
  101. package/{components/_ac-accordion.scss → vue-components/v3/accordion/Accordion.vue} +40 -6
  102. package/vue-components/v3/alert/Alert.vue +238 -0
  103. package/vue-components/v3/alert/Toast.vue +79 -0
  104. package/vue-components/v3/banner/Banner.vue +10 -0
  105. package/vue-components/v3/breadcrumbs/Breadcrumb.vue +166 -0
  106. package/vue-components/v3/button/Button.vue +110 -57
  107. package/vue-components/v3/button/Buttons.vue +22 -0
  108. package/vue-components/v3/button/DownloadBtn.vue +31 -0
  109. package/vue-components/v3/cards/Card.vue +32 -0
  110. package/vue-components/v3/cards/CardContent.vue +7 -0
  111. package/vue-components/v3/cards/CardHeader.vue +14 -0
  112. package/vue-components/v3/cards/Cards.vue +7 -0
  113. package/vue-components/v3/cards/Cluster.vue +159 -0
  114. package/vue-components/v3/cards/Counter.vue +39 -0
  115. package/vue-components/v3/cards/FeatureCard.vue +67 -0
  116. package/vue-components/v3/cards/FeatureCards.vue +6 -0
  117. package/vue-components/v3/cards/InfoCard.vue +242 -0
  118. package/vue-components/v3/cards/Monitoring.vue +90 -0
  119. package/vue-components/v3/cards/OrgClusterCard.vue +86 -0
  120. package/vue-components/v3/cards/OverviewCard.vue +28 -0
  121. package/vue-components/v3/cards/OverviewCards.vue +39 -0
  122. package/vue-components/v3/cards/Payment.vue +62 -0
  123. package/vue-components/v3/cards/Vendor.vue +89 -0
  124. package/vue-components/v3/content/ContentHeader.vue +39 -30
  125. package/vue-components/v3/content/ContentLayout.vue +20 -0
  126. package/vue-components/v3/content/ContentTable.vue +44 -58
  127. package/vue-components/v3/dropdown/DropdownAction.vue +95 -0
  128. package/vue-components/v3/dropdown/DropdownDivider.vue +2 -0
  129. package/vue-components/v3/dropdown/DropdownItem.vue +2 -0
  130. package/vue-components/v3/dropdown/DropdownMenu.vue +85 -91
  131. package/vue-components/v3/editor/Editor.vue +117 -115
  132. package/vue-components/v3/editor/FilteredFileEditor.vue +325 -128
  133. package/vue-components/v3/editor/ResourceKeyValueEditor.vue +73 -94
  134. package/vue-components/v3/footer/FooterArea.vue +40 -0
  135. package/vue-components/v3/footer/FooterItem.vue +32 -0
  136. package/vue-components/v3/footer/FooterItems.vue +15 -0
  137. package/vue-components/v3/footer/Info.vue +25 -0
  138. package/vue-components/v3/footer/Status.vue +43 -0
  139. package/vue-components/v3/footer/Usage.vue +34 -0
  140. package/vue-components/v3/form/Form.vue +24 -36
  141. package/vue-components/v3/form/FormFooter.vue +24 -0
  142. package/vue-components/v3/form/FormFooterControl.vue +7 -0
  143. package/vue-components/v3/form/FormFooterControls.vue +7 -0
  144. package/vue-components/v3/form-fields/AcSingleInput.vue +21 -0
  145. package/vue-components/v3/form-fields/FileUpload.vue +89 -0
  146. package/vue-components/v3/form-fields/Input.vue +19 -15
  147. package/vue-components/v3/header/Header.vue +120 -26
  148. package/vue-components/v3/header/HeaderItem.vue +18 -0
  149. package/vue-components/v3/header/HeaderItems.vue +4 -0
  150. package/vue-components/v3/icons/Ellipsis.vue +2 -0
  151. package/vue-components/v3/loaders/ClusterSwitcherLoader.vue +13 -0
  152. package/vue-components/v3/loaders/InfoCardLoader.vue +19 -0
  153. package/vue-components/v3/loaders/ResourceLoader.vue +4 -12
  154. package/vue-components/v3/loaders/SidebarLoader.vue +4 -12
  155. package/vue-components/v3/loaders/SingleInfoCardLoader.vue +24 -0
  156. package/vue-components/v3/modal/Modal.vue +294 -95
  157. package/vue-components/v3/modals/DeleteConfirmationModal.vue +37 -50
  158. package/vue-components/v3/modals/JsonShowModal.vue +63 -68
  159. package/vue-components/v3/navbar/Appdrawer.vue +198 -51
  160. package/vue-components/v3/navbar/Navbar.vue +139 -0
  161. package/vue-components/v3/navbar/NavbarItem.vue +103 -0
  162. package/vue-components/v3/navbar/NavbarItemContent.vue +282 -0
  163. package/vue-components/v3/navbar/Notification.vue +207 -0
  164. package/vue-components/v3/navbar/ThemeMode.vue +128 -112
  165. package/vue-components/v3/navbar/User.vue +394 -267
  166. package/vue-components/v3/notification/AlertBox.vue +266 -39
  167. package/vue-components/v3/notification/Notification.vue +50 -44
  168. package/vue-components/v3/notification/NotificationItem.vue +51 -19
  169. package/vue-components/v3/option-dots/Options.vue +197 -0
  170. package/vue-components/v3/pagination/Pagination.vue +216 -102
  171. package/vue-components/v3/preloader/Preloader.vue +23 -0
  172. package/vue-components/v3/searchbars/SearchBar.vue +50 -34
  173. package/vue-components/v3/sidebar/AccentColorPicker.vue +97 -0
  174. package/vue-components/v3/sidebar/ClusterSwitcher.vue +71 -86
  175. package/vue-components/v3/sidebar/Sidebar.vue +239 -0
  176. package/vue-components/v3/sidebar/SidebarBody.vue +14 -0
  177. package/vue-components/v3/sidebar/SidebarFooter.vue +89 -0
  178. package/vue-components/v3/sidebar/SidebarHeader.vue +131 -0
  179. package/vue-components/v3/sidebar/SidebarItem.vue +62 -0
  180. package/vue-components/v3/sidebar/SidebarItemWithDropDown.vue +101 -104
  181. package/vue-components/v3/sidebar/SidebarMenuList.vue +9 -0
  182. package/vue-components/v3/sidebar/Steps.vue +152 -0
  183. package/vue-components/v3/sidebar/sidebar-tabs/SidebarTabs.vue +204 -0
  184. package/vue-components/v3/sidebar/sidebar-tabs/SidebarTabsLayout.vue +44 -0
  185. package/vue-components/v3/sidebar/sidebar-tabs/TabsContent.vue +99 -0
  186. package/vue-components/v3/tab/TabItem.vue +10 -12
  187. package/vue-components/v3/tab/Tabs.vue +36 -0
  188. package/vue-components/v3/tab/TabsBody.vue +7 -0
  189. package/vue-components/v3/table/EmptyTableInfo.vue +8 -0
  190. package/vue-components/v3/table/FakeTableCell.vue +22 -31
  191. package/vue-components/v3/table/InfoTable.vue +89 -61
  192. package/vue-components/v3/table/MultiInfoTable.vue +72 -95
  193. package/vue-components/v3/table/Table.vue +596 -157
  194. package/vue-components/v3/table/TableCell.vue +13 -24
  195. package/vue-components/v3/table/TableContainer.vue +50 -28
  196. package/vue-components/v3/table/TableRow.vue +65 -87
  197. package/vue-components/v3/table/table-cell/ArrayCell.vue +94 -103
  198. package/vue-components/v3/table/table-cell/CellValue.vue +74 -106
  199. package/vue-components/v3/table/table-cell/GenericCell.vue +43 -42
  200. package/vue-components/v3/table/table-cell/ObjectCell.vue +91 -101
  201. package/vue-components/v3/table/table-cell/ValueWithModal.vue +22 -31
  202. package/vue-components/v3/tabs/EditorTabs.vue +18 -24
  203. package/vue-components/v3/tag/Tag.vue +16 -12
  204. package/vue-components/v3/tag/Tags.vue +7 -0
  205. package/base/utilities/_derived-variables.scss +0 -25
  206. package/base/utilities/_initial-variables.scss +0 -215
  207. package/base/utilities/dark-theme.scss +0 -26
  208. package/components/_ac-card.scss +0 -597
  209. package/components/_ac-input.scss +0 -876
  210. package/mixins/stickyContent.js +0 -141
  211. package/plugins/caching.ts +0 -243
  212. package/vue-components/v3/long-running-tasks/LongRunningTaskItem.vue +0 -92
  213. package/vue-components/v3/modals/LongRunningTasksModal.vue +0 -400
  214. package/vue-components/v3/terminal/LongRunningTaskTerminal.vue +0 -148
  215. /package/components/{_ac-report.scss → _report.scss} +0 -0
@@ -1,16 +1,159 @@
1
+ <script setup lang="ts">
2
+ import {
3
+ computed,
4
+ defineAsyncComponent,
5
+ nextTick,
6
+ onUpdated,
7
+ ref,
8
+ watch,
9
+ } from "vue";
10
+ import type { AcTableCol } from "../../types/table";
11
+
12
+ interface Props {
13
+ isLoaderActive?: boolean;
14
+ isTableEmpty?: boolean;
15
+ tableHeaders?: Array<AcTableCol>;
16
+ collapsible?: boolean;
17
+ actionable?: boolean;
18
+ isDynamicWidthTable?: boolean;
19
+ fullWidth?: number;
20
+ columnStriped?: boolean;
21
+ }
22
+
23
+ const props = withDefaults(defineProps<Props>(), {
24
+ isLoaderActive: false,
25
+ isTableEmpty: true,
26
+ tableHeaders: () => [],
27
+ collapsible: false,
28
+ actionable: false,
29
+ isDynamicWidthTable: false,
30
+ fullWidth: 1920,
31
+ columnStriped: false,
32
+ });
33
+
34
+ const emit = defineEmits(["sort", "scroller"]);
35
+
36
+ const TableContainer = defineAsyncComponent(
37
+ () => import("../table/TableContainer.vue")
38
+ );
39
+ const TableRow = defineAsyncComponent(() => import("../table/TableRow.vue"));
40
+ const TableCell = defineAsyncComponent(() => import("../table/TableCell.vue"));
41
+ const CellValue = defineAsyncComponent(
42
+ () => import("../table/table-cell/CellValue.vue")
43
+ );
44
+ const EmptyTableInfo = defineAsyncComponent(
45
+ () => import("../table/EmptyTableInfo.vue")
46
+ );
47
+ const FakeTableCell = defineAsyncComponent(
48
+ () => import("../table/FakeTableCell.vue")
49
+ );
50
+
51
+ const fakeCellWidth = ref(0);
52
+ const headerSortables = ref<Array<{ enabled: boolean; mode: string }>>([]);
53
+ const ac_table = ref(null as HTMLElement | null);
54
+ const ac_table_container = ref(null as HTMLElement | null);
55
+
56
+ const headerLabels = computed(() => {
57
+ return props.tableHeaders.map((th) =>
58
+ typeof th === "string" ? th : th?.name || "Label"
59
+ );
60
+ });
61
+
62
+ const isFullTableLoaderActive = computed(() => {
63
+ return !props.tableHeaders.length;
64
+ });
65
+
66
+ const loaderCols = computed(() => {
67
+ if (isFullTableLoaderActive.value) {
68
+ return 5;
69
+ } else if (props.isLoaderActive) {
70
+ return Math.max(props.tableHeaders.length + 1, 5);
71
+ } else {
72
+ return props.tableHeaders.length || 5;
73
+ }
74
+ });
75
+
76
+ const handleScroller = (value: number) => {
77
+ emit("scroller", value);
78
+ };
79
+
80
+ const onWindowResize = () => {
81
+ if (ac_table.value && props.isDynamicWidthTable) {
82
+ const tableWidth = ac_table.value.clientWidth;
83
+ const d = props.fullWidth - tableWidth;
84
+ fakeCellWidth.value = d;
85
+ }
86
+ };
87
+
88
+ const emitSortEvent = (index: number) => {
89
+ const emitValue = {
90
+ index,
91
+ label: props.tableHeaders[index].name,
92
+ mode: "",
93
+ };
94
+
95
+ headerSortables.value.forEach((hs, idx) => {
96
+ if (idx !== index) hs.mode = "";
97
+ else {
98
+ if (hs.mode === "asc") hs.mode = "desc";
99
+ else hs.mode = "asc";
100
+
101
+ emitValue.mode = hs.mode;
102
+ }
103
+ });
104
+
105
+ emit("sort", emitValue);
106
+ };
107
+
108
+ watch(
109
+ () => props.tableHeaders,
110
+ (n) => {
111
+ if (headerSortables.value.length === n.length) {
112
+ n.forEach((th, idx) => {
113
+ if (headerSortables.value[idx].enabled !== !!th?.sort?.enable) {
114
+ headerSortables.value[idx].enabled = !!th?.sort?.enable;
115
+ headerSortables.value[idx].mode = "";
116
+ }
117
+ });
118
+ } else {
119
+ headerSortables.value = n.map((th) => {
120
+ if (typeof th === "string") {
121
+ return {
122
+ enabled: false,
123
+ mode: "",
124
+ };
125
+ } else {
126
+ return {
127
+ enabled: !!th?.sort?.enable,
128
+ mode: "",
129
+ };
130
+ }
131
+ });
132
+ }
133
+ },
134
+ { immediate: true }
135
+ );
136
+
137
+ onUpdated(() => {
138
+ nextTick(() => {
139
+ onWindowResize();
140
+ });
141
+ });
142
+ </script>
143
+
1
144
  <template>
2
- <table-container ref="ac-table-container" @scroller="handleScroller">
145
+ <table-container ref="ac_table_container" @scroller="handleScroller">
3
146
  <table
4
- ref="ac-table"
5
- class="table ac-table"
147
+ ref="ac_table"
148
+ class="table ac-table is-bordered"
6
149
  :class="{
7
150
  'is-fullwidth':
8
151
  !isDynamicWidthTable ||
9
152
  isFullTableLoaderActive ||
10
153
  isTableEmpty ||
11
154
  isLoaderActive,
12
- 'ac-striped': !columnStriped,
13
- 'ac-label-texted': columnStriped,
155
+ // 'ac-striped': !columnStriped,
156
+ // 'is-bordered': columnStriped,
14
157
  }"
15
158
  >
16
159
  <thead>
@@ -56,11 +199,7 @@
56
199
  <i class="fa fa-exclamation-triangle" />
57
200
  </span>
58
201
  </th>
59
- <th
60
- ref="action-section"
61
- v-if="actionable"
62
- style="min-width: 100px"
63
- ></th>
202
+ <th ref="action-section" v-if="actionable"></th>
64
203
  <fake-table-cell
65
204
  v-if="fakeCellWidth > 0"
66
205
  :is-header-cell="true"
@@ -97,7 +236,9 @@
97
236
  <table-row class="is-hoverless">
98
237
  <table-cell
99
238
  :colspan="
100
- actionable ? tableHeaders.length + 1 : tableHeaders.length
239
+ tableHeaders.length +
240
+ (actionable ? 1 : 0) +
241
+ (collapsible ? 1 : 0)
101
242
  "
102
243
  class="no-data-available has-text-centered"
103
244
  >
@@ -118,160 +259,458 @@
118
259
  </table-container>
119
260
  </template>
120
261
 
121
- <script>
122
- import { defineComponent, defineAsyncComponent } from "vue";
123
-
124
- export default defineComponent({
125
- props: {
126
- isLoaderActive: {
127
- type: Boolean,
128
- default: false,
129
- },
130
- isTableEmpty: {
131
- type: Boolean,
132
- default: true,
133
- },
134
- tableHeaders: {
135
- type: Array,
136
- default: () => [],
137
- },
138
- collapsible: {
139
- type: Boolean,
140
- default: false,
141
- },
142
- actionable: {
143
- type: Boolean,
144
- default: false,
145
- },
146
- isDynamicWidthTable: {
147
- type: Boolean,
148
- default: false,
149
- },
150
- fullWidth: {
151
- type: Number,
152
- default: 1920,
153
- },
154
- columnStriped: {
155
- type: Boolean,
156
- default: false,
157
- },
158
- },
159
- emits: ["sort", "scroller"],
160
- components: {
161
- TableContainer: defineAsyncComponent(() =>
162
- import("./TableContainer.vue").then((module) => module.default)
163
- ),
164
- TableRow: defineAsyncComponent(() =>
165
- import("./TableRow.vue").then((module) => module.default)
166
- ),
167
- TableCell: defineAsyncComponent(() =>
168
- import("./TableCell.vue").then((module) => module.default)
169
- ),
170
- CellValue: defineAsyncComponent(() =>
171
- import("./table-cell/CellValue.vue").then((module) => module.default)
172
- ),
173
- EmptyTableInfo: defineAsyncComponent(() =>
174
- import("../../v2/table/EmptyTableInfo.vue").then(
175
- (module) => module.default
176
- )
177
- ),
178
- FakeTableCell: defineAsyncComponent(() =>
179
- import("./FakeTableCell.vue").then((module) => module.default)
180
- ),
181
- },
262
+ <style lang="scss">
263
+ // INFO TABLE END
182
264
 
183
- data() {
184
- return {
185
- fakeCellWidth: 0,
186
- headerSortables: [],
187
- };
188
- },
265
+ // GENERAL TABLE START
266
+ .table.ac-table {
267
+ background-color: transparent;
268
+ margin-bottom: 0;
269
+
270
+ thead {
271
+ background-color: $primary-95;
272
+ font-size: 13px;
273
+ line-height: initial;
189
274
 
190
- computed: {
191
- loaderCols() {
192
- if (this.isFullTableLoaderActive) {
193
- return 5;
194
- } else if (this.isLoaderActive) {
195
- return Math.max(this.tableHeaders.length + 1, 5);
196
- } else {
197
- return this.tableHeaders.length || 5;
275
+ tr {
276
+ border-bottom: 1px solid $primary-95;
277
+
278
+ th {
279
+ padding: 10px 20px;
280
+ color: $primary-5;
281
+ border: none;
282
+ font-weight: 500;
283
+ // background-color: $primary-97;
284
+ // text-transform: uppercase;
285
+ font-weight: 500;
286
+
287
+ &.sorting {
288
+ cursor: pointer;
289
+ position: relative;
290
+
291
+ &.sorting-asc {
292
+ &::before {
293
+ color: $primary-5;
294
+ }
295
+ }
296
+
297
+ &.sorting-desc {
298
+ &::after {
299
+ color: $primary-5;
300
+ }
301
+ }
302
+
303
+ &:after,
304
+ &::before {
305
+ position: absolute;
306
+ color: #808998;
307
+ top: 0.4em;
308
+ font-size: 13px;
309
+ font-weight: 1000;
310
+ display: block;
311
+ }
312
+
313
+ &:before {
314
+ right: 1em;
315
+ content: "\2191";
316
+ }
317
+
318
+ &:after {
319
+ right: 0.5em;
320
+ content: "\2193";
321
+ }
322
+ }
323
+ }
324
+ }
325
+ }
326
+
327
+ tbody {
328
+ &.is-selected {
329
+ transform: matrix(1, 0, 0, 1, 0, 0) !important;
330
+ box-shadow: inset 0 0 0 1px $primary;
331
+ border-radius: 4px;
332
+ border-bottom: none;
333
+ color: $black-5;
334
+ }
335
+
336
+ tr {
337
+ border-bottom: 1px solid $primary-90;
338
+ &.is-link {
339
+ cursor: pointer;
340
+ }
341
+ &.is-selected {
342
+ background-color: $primary-97 !important;
343
+ transform: matrix(1, 0, 0, 1, 0, 0) !important;
344
+ box-shadow: inset 0 0 0 1.2px $primary;
345
+ border-radius: 4px;
346
+ border-bottom: none;
347
+ color: $black-5;
348
+ transition: 0.3s ease-in-out;
349
+ .tag {
350
+ background-color: $primary-80;
351
+ }
352
+ &:hover {
353
+ background-color: $primary-95 !important;
354
+ transform: matrix(1, 0, 0, 1, 0, 0) !important;
355
+ box-shadow: inset 0 0 0 1.2px $primary !important;
356
+ }
198
357
  }
199
- },
200
- isFullTableLoaderActive() {
201
- return !this.tableHeaders.length;
202
- },
203
- headerLabels() {
204
- return this.tableHeaders.map((th) =>
205
- typeof th === "string" ? th : th?.name || "Label"
206
- );
207
- },
208
- },
209
358
 
210
- watch: {
211
- tableHeaders: {
212
- immediate: true,
213
- handler(n) {
214
- if (this.headerSortables.length === n.length) {
215
- n.forEach((th, idx) => {
216
- if (this.headerSortables[idx].enabled !== !!th?.sort?.enable) {
217
- this.headerSortables[idx].enabled = !!th?.sort?.enable;
218
- this.headerSortables[idx].mode = "";
359
+ &.is-hoverless {
360
+ box-shadow: none !important;
361
+ transform: none !important;
362
+ background-color: $white-100 !important;
363
+ }
364
+ td {
365
+ font-size: 13px;
366
+ padding: 5px 20px;
367
+ color: $primary-10;
368
+ border: none;
369
+
370
+ a:not(.tag a) {
371
+ color: $primary;
372
+ font-weight: 500 !important;
373
+ transition: 0.3s ease-in-out;
374
+ font-weight: 400;
375
+ }
376
+
377
+ .tags {
378
+ .tag {
379
+ a {
380
+ color: $primary;
381
+ transition: 0.3s ease-in-out;
382
+ font-weight: 500;
383
+
384
+ &:hover {
385
+ color: $primary-5;
386
+ }
219
387
  }
220
- });
221
- } else {
222
- this.headerSortables = n.map((th) => {
223
- if (typeof th === "string") {
224
- return {
225
- enabled: false,
226
- mode: "",
227
- };
228
- } else {
229
- return {
230
- enabled: !!th?.sort?.enable,
231
- mode: "",
232
- };
388
+ }
389
+ }
390
+
391
+ &.is-danger {
392
+ color: $danger;
393
+ }
394
+
395
+ .image-with-status {
396
+ margin-right: 20px;
397
+ position: relative;
398
+ z-index: 1;
399
+ display: inline-flex;
400
+
401
+ &.is-danger {
402
+ background-color: $danger;
403
+ }
404
+
405
+ i.fa {
406
+ position: absolute;
407
+ background-color: $primary;
408
+ color: $white-100;
409
+ font-size: 11px;
410
+ width: 15px;
411
+ height: 15px;
412
+ text-align: center;
413
+ line-height: 15px;
414
+ border-radius: 50%;
415
+ right: -5px;
416
+ top: 5px;
417
+
418
+ &.fa-close {
419
+ background-color: $danger;
233
420
  }
234
- });
421
+ }
422
+
423
+ img {
424
+ width: 20px;
425
+ height: 20px;
426
+ object-fit: cover;
427
+ border-radius: 50%;
428
+ }
235
429
  }
236
- },
237
- },
238
- },
239
- updated() {
240
- this.$nextTick(() => {
241
- this.onWindowResize();
242
- });
243
- },
244
430
 
245
- methods: {
246
- handleScroller(value) {
247
- this.$emit("scroller", value);
248
- },
249
- onWindowResize() {
250
- if (this.$refs["ac-table"] && this.isDynamicWidthTable) {
251
- const tableWidth = this.$refs["ac-table"]?.clientWidth;
252
- const d = this.fullWidth - tableWidth;
253
- this.fakeCellWidth = d;
431
+ .collapsible-row {
432
+ max-height: 0;
433
+ overflow-y: hidden;
434
+
435
+ &.is-active {
436
+ max-height: 60vh;
437
+ overflow-y: overlay;
438
+ animation: expand 0.5s ease-in-out;
439
+ }
440
+
441
+ &.is-closed {
442
+ max-height: 0;
443
+ overflow-y: hidden;
444
+ animation: collapse 0.5s ease-in-out;
445
+ }
446
+ }
447
+
448
+ white-space: nowrap;
254
449
  }
255
- },
256
- emitSortEvent(index) {
257
- const emitValue = {
258
- index,
259
- label: this.tableHeaders[index].name,
260
- mode: "",
261
- };
262
-
263
- this.headerSortables.forEach((hs, idx) => {
264
- if (idx !== index) hs.mode = "";
265
- else {
266
- if (hs.mode === "asc") hs.mode = "desc";
267
- else hs.mode = "asc";
268
-
269
- emitValue.mode = hs.mode;
450
+
451
+ .options-items {
452
+ a:hover {
453
+ color: $white-100;
454
+ text-decoration: none;
270
455
  }
271
- });
456
+ }
272
457
 
273
- this.$emit("sort", emitValue);
274
- },
275
- },
276
- });
277
- </script>
458
+ transition: 0.3s ease-in-out;
459
+ }
460
+ }
461
+
462
+ .increase-width {
463
+ position: relative;
464
+ visibility: hidden;
465
+ width: 36px;
466
+
467
+ .increase-innner {
468
+ border-bottom: 1px solid $primary-90;
469
+ border-top: 1px solid $primary-90;
470
+ bottom: -1px;
471
+ left: 0;
472
+ position: absolute;
473
+ right: -451px;
474
+ top: -1px;
475
+ visibility: visible;
476
+ background-color: $primary-90;
477
+ }
478
+ }
479
+
480
+ td {
481
+ &.increase-width {
482
+ .increase-innner {
483
+ background-color: transparent;
484
+ }
485
+ }
486
+ }
487
+
488
+ &.is-bordered {
489
+ thead {
490
+ tr {
491
+ th {
492
+ border-top: 1px solid $primary-95;
493
+ border-bottom: 1px solid $primary-95;
494
+ border-right: 1px solid $primary-95;
495
+ background-color: $primary-97;
496
+
497
+ &:first-child {
498
+ border-left: 1px solid transparent;
499
+ }
500
+ &:last-child {
501
+ border-right: 1px solid transparent;
502
+ }
503
+ }
504
+ }
505
+ }
506
+
507
+ tbody {
508
+ tr {
509
+ &:hover {
510
+ box-shadow: none;
511
+ }
512
+
513
+ td {
514
+ font-size: 13px;
515
+ color: $primary-20;
516
+ background-color: transparent;
517
+ border-bottom: 1px solid $primary-95;
518
+ border-right: 1px solid $primary-95;
519
+ &:last-child {
520
+ border-right: 1px solid transparent;
521
+ }
522
+ &:first-child {
523
+ border-left: 1px solid transparent;
524
+ }
525
+
526
+ &:first-child {
527
+ color: $primary-5;
528
+ border-radius: 0;
529
+ }
530
+
531
+ &:last-child {
532
+ border-radius: 0;
533
+ }
534
+
535
+ .ac-single-checkbox {
536
+ .is-checkradio[type="checkbox"] {
537
+ &.ac-checkbox + label {
538
+ color: $primary-20;
539
+
540
+ &::before {
541
+ height: 16px;
542
+ width: 16px;
543
+ background-color: $primary-95;
544
+ }
545
+
546
+ &::after {
547
+ top: 6px;
548
+ left: 6px;
549
+ border-color: $black-80;
550
+ width: 0.3rem;
551
+ height: 0.5rem;
552
+ }
553
+ }
554
+
555
+ &:checked + label::before {
556
+ background-color: $primary;
557
+ border-color: $primary;
558
+ }
559
+
560
+ &:checked + label::after {
561
+ border-color: $primary-90;
562
+ }
563
+ }
564
+ }
565
+
566
+ .is-checkradio[type="checkbox"].ac-checkbox:checked + label::before {
567
+ background-color: $primary;
568
+ border-color: $primary;
569
+ }
570
+
571
+ .is-checkradio[type="checkbox"] + label::before,
572
+ .is-checkradio[type="checkbox"] + label:before {
573
+ top: 3px;
574
+ }
575
+ }
576
+ }
577
+ }
578
+ }
579
+
580
+ &.ac-separate-tr {
581
+ border-collapse: separate;
582
+ border-spacing: 0px 5px;
583
+
584
+ tbody {
585
+ tr {
586
+ background-color: transparent;
587
+ }
588
+ }
589
+ }
590
+
591
+ &.is-middle-aligned {
592
+ thead {
593
+ tr {
594
+ th {
595
+ vertical-align: middle;
596
+ }
597
+ }
598
+ }
599
+
600
+ tbody {
601
+ tr {
602
+ td {
603
+ vertical-align: middle;
604
+ }
605
+ }
606
+ }
607
+ }
608
+
609
+ &.is-dark {
610
+ thead {
611
+ background-color: $primary-5;
612
+
613
+ tr {
614
+ th {
615
+ color: $white-100;
616
+ }
617
+ }
618
+ }
619
+
620
+ tbody {
621
+ tr {
622
+ td {
623
+ color: $white-100;
624
+ }
625
+
626
+ &:nth-child(odd) {
627
+ background-color: $primary-20;
628
+ }
629
+
630
+ &:nth-child(even) {
631
+ background-color: $primary-5;
632
+ }
633
+
634
+ &:hover {
635
+ background-color: $primary;
636
+
637
+ td {
638
+ color: $white-100;
639
+ }
640
+ }
641
+ }
642
+ }
643
+ }
644
+ }
645
+
646
+ .table.ac-table tbody tr:hover td a:not(.tag a) {
647
+ text-decoration: underline;
648
+ color: $primary;
649
+ }
650
+
651
+ // table inner shadow
652
+ .table-inner-shadow {
653
+ border-radius: 0px;
654
+ background: $primary-90;
655
+ box-shadow: inset 5px 5px 10px #e3e6e9, inset -5px -5px 10px #ffffff;
656
+ }
657
+
658
+ @keyframes expand {
659
+ from {
660
+ max-height: 0;
661
+ overflow-y: hidden;
662
+ }
663
+ 1% {
664
+ overflow-y: hidden;
665
+ }
666
+ 99% {
667
+ overflow-y: hidden;
668
+ }
669
+ to {
670
+ max-height: 60vh;
671
+ overflow-y: overlay;
672
+ }
673
+ }
674
+
675
+ @keyframes collapse {
676
+ from {
677
+ max-height: 60vh;
678
+ overflow-y: overlay;
679
+ }
680
+ 1% {
681
+ overflow-y: hidden;
682
+ }
683
+ 99% {
684
+ overflow-y: hidden;
685
+ }
686
+ to {
687
+ max-height: 0;
688
+ overflow-y: hidden;
689
+ }
690
+ }
691
+
692
+ // GENERAL TABLE END
693
+
694
+ /****************************************
695
+ Responsive Classes
696
+ *****************************************/
697
+ // Extra small devices (portrait phones, less than 576px)
698
+ @media (max-width: 575.98px) {
699
+ }
700
+
701
+ // Small devices (landscape phones, 576px and up)
702
+ @media (min-width: 576px) and (max-width: 767.98px) {
703
+ }
704
+
705
+ // Medium devices (tablets, 768px and up)
706
+ @media (min-width: 768px) and (max-width: 991.98px) {
707
+ }
708
+
709
+ // Large devices (desktops, 992px and up)
710
+ @media (min-width: 992px) and (max-width: 1199.98px) {
711
+ }
712
+
713
+ // Extra large devices (large desktops, 1200px and up)
714
+ @media (min-width: 1200px) {
715
+ }
716
+ </style>