@appscode/design-system 1.0.3-alpha.7 → 1.0.43-alpha.100

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 (112) hide show
  1. package/base/utilities/_default.scss +298 -23
  2. package/base/utilities/_derived-variables.scss +2 -15
  3. package/base/utilities/_initial-variables.scss +99 -64
  4. package/base/utilities/_mixin.scss +90 -10
  5. package/base/utilities/_typography.scss +23 -7
  6. package/base/utilities/dark-theme.scss +25 -0
  7. package/components/_ac-accordion.scss +1 -0
  8. package/components/_ac-alert-box.scss +47 -11
  9. package/components/_ac-card.scss +55 -20
  10. package/components/_ac-code-highlight.scss +7 -1
  11. package/components/_ac-content-layout.scss +4 -4
  12. package/components/_ac-drag.scss +6 -6
  13. package/components/_ac-input.scss +140 -38
  14. package/components/_ac-modal.scss +5 -4
  15. package/components/_ac-multi-select.scss +220 -18
  16. package/components/_ac-options.scss +31 -16
  17. package/components/_ac-select-box.scss +15 -5
  18. package/components/_ac-table.scss +88 -47
  19. package/components/_ac-tabs.scss +72 -23
  20. package/components/_ac-tags.scss +2 -2
  21. package/components/_ac-terminal.scss +272 -0
  22. package/components/_app-drawer.scss +6 -6
  23. package/components/_breadcumb.scss +8 -3
  24. package/components/_buttons.scss +86 -33
  25. package/components/_card-body-wrapper.scss +3 -3
  26. package/components/_dashboard-header.scss +1 -1
  27. package/components/_direct-deploy.scss +69 -0
  28. package/components/_go-to-top.scss +1 -1
  29. package/components/_graph.scss +45 -0
  30. package/components/_image-upload.scss +6 -4
  31. package/components/_left-sidebar-menu.scss +206 -46
  32. package/components/_monaco-editor.scss +1 -1
  33. package/components/_navbar.scss +104 -27
  34. package/components/_overview-info.scss +4 -4
  35. package/components/_overview-page.scss +1 -2
  36. package/components/_pagination.scss +45 -7
  37. package/components/_payment-card.scss +28 -12
  38. package/components/_preloader.scss +1 -1
  39. package/components/_preview-modal.scss +8 -8
  40. package/components/_pricing-table.scss +1 -1
  41. package/components/_progress-bar.scss +5 -5
  42. package/components/_subscription-card.scss +15 -8
  43. package/components/_table-of-content.scss +1 -1
  44. package/components/_tfa.scss +69 -0
  45. package/components/_widget-menu.scss +9 -9
  46. package/components/_wizard.scss +32 -20
  47. package/components/ac-toaster/_ac-toasted.scss +40 -8
  48. package/components/bbum/_card-team.scss +18 -10
  49. package/components/bbum/_information-center.scss +19 -5
  50. package/components/bbum/_mobile-desktop.scss +6 -6
  51. package/components/bbum/_post.scss +5 -4
  52. package/components/bbum/_sign-up-notification.scss +6 -6
  53. package/components/bbum/_single-post-preview.scss +9 -9
  54. package/components/bbum/_user-profile.scss +97 -90
  55. package/components/ui-builder/_ui-builder.scss +31 -12
  56. package/components/ui-builder/_vue-open-api.scss +98 -0
  57. package/layouts/_404.scss +159 -0
  58. package/layouts/_code-preview.scss +14 -6
  59. package/main.scss +4 -0
  60. package/package.json +2 -7
  61. package/plugins/theme.js +142 -0
  62. package/plugins/vue-toaster.js +7 -6
  63. package/vue-components/v2/card/CardContent.vue +5 -0
  64. package/vue-components/v2/card/CardHeader.vue +12 -0
  65. package/vue-components/v2/card/OverviewCard.vue +10 -0
  66. package/vue-components/v2/card/OverviewCards.vue +5 -0
  67. package/vue-components/v2/card/PaymentCards.vue +16 -10
  68. package/vue-components/v2/content/ContentHeader.vue +1 -1
  69. package/vue-components/v2/editor/Editor.vue +37 -17
  70. package/vue-components/v2/header/Header.vue +0 -1
  71. package/vue-components/v2/modal/Modal.vue +32 -14
  72. package/vue-components/v2/modals/JsonShowModal.vue +0 -1
  73. package/vue-components/v2/navbar/Appdrawer.vue +9 -6
  74. package/vue-components/v2/navbar/ThemeMode.vue +120 -0
  75. package/vue-components/v2/pagination/Pagination.vue +8 -1
  76. package/vue-components/v2/preloader/Preloader.vue +5 -5
  77. package/vue-components/v2/sidebar/ClusterSwitcher.vue +126 -0
  78. package/vue-components/v2/sidebar/SidebarItem.vue +24 -2
  79. package/vue-components/v2/table/InfoTable.vue +13 -3
  80. package/vue-components/v2/table/Table.vue +75 -5
  81. package/vue-components/v2/table/TableRow.vue +17 -8
  82. package/vue-components/v2/table/table-cell/CellValue.vue +10 -1
  83. package/vue-components/v2/tabs/EditorTabs.vue +1 -1
  84. package/vue-components/v3/button/Button.vue +73 -0
  85. package/vue-components/v3/content/ContentHeader.vue +54 -0
  86. package/vue-components/v3/content/ContentTable.vue +65 -0
  87. package/vue-components/v3/dropdown/DropdownDivider.vue +3 -0
  88. package/vue-components/v3/dropdown/DropdownItem.vue +5 -0
  89. package/vue-components/v3/dropdown/DropdownMenu.vue +111 -0
  90. package/vue-components/v3/editor/Editor.vue +157 -0
  91. package/vue-components/v3/form-fields/Input.vue +21 -0
  92. package/vue-components/v3/header/Header.vue +45 -0
  93. package/vue-components/v3/modal/Modal.vue +135 -0
  94. package/vue-components/v3/modals/JsonShowModal.vue +87 -0
  95. package/vue-components/v3/navbar/Appdrawer.vue +63 -0
  96. package/vue-components/v3/navbar/ThemeMode.vue +128 -0
  97. package/vue-components/v3/navbar/User.vue +64 -0
  98. package/vue-components/v3/pagination/Pagination.vue +159 -0
  99. package/vue-components/v3/searchbars/SearchBar.vue +47 -0
  100. package/vue-components/v3/sidebar/ClusterSwitcher.vue +133 -0
  101. package/vue-components/v3/tab/TabItem.vue +17 -0
  102. package/vue-components/v3/table/FakeTableCell.vue +39 -0
  103. package/vue-components/v3/table/InfoTable.vue +105 -0
  104. package/vue-components/v3/table/Table.vue +238 -0
  105. package/vue-components/v3/table/TableCell.vue +28 -0
  106. package/vue-components/v3/table/TableRow.vue +60 -0
  107. package/vue-components/v3/table/table-cell/ArrayCell.vue +111 -0
  108. package/vue-components/v3/table/table-cell/CellValue.vue +117 -0
  109. package/vue-components/v3/table/table-cell/ObjectCell.vue +105 -0
  110. package/vue-components/v3/table/table-cell/ValueWithModal.vue +43 -0
  111. package/vue-components/v3/tabs/EditorTabs.vue +36 -0
  112. package/vue-components/v3/tag/Tag.vue +17 -0
@@ -18,6 +18,10 @@
18
18
  .ac-html-preview {
19
19
  width: 100%;
20
20
 
21
+ i.is-block {
22
+ color: $ac-color-value;
23
+ }
24
+
21
25
  .ac-navbar-area {
22
26
  position: inherit;
23
27
  }
@@ -29,7 +33,7 @@
29
33
  }
30
34
 
31
35
  &.ac-bg-dark {
32
- background-color: $ac-bg-dark;
36
+ background-color: $ac-color-heading;
33
37
  }
34
38
 
35
39
  .ac-html-preview {
@@ -54,13 +58,13 @@
54
58
 
55
59
  /* Handle */
56
60
  &::-webkit-scrollbar-thumb {
57
- background: #8392a5;
61
+ background-color: $ac-gray-light;
58
62
  border-radius: 10px;
59
63
  }
60
64
 
61
65
  /* Handle on hover */
62
66
  &::-webkit-scrollbar-thumb:hover {
63
- background: #8392a5;
67
+ background-color: $ac-gray-light;
64
68
  }
65
69
 
66
70
  .number {
@@ -91,7 +95,7 @@
91
95
  }
92
96
 
93
97
  .ac-code-preview-wrapper {
94
- border: 1px solid #e5e8ea;
98
+ border: 1px solid $ac-white-light;
95
99
  border-radius: 4px;
96
100
 
97
101
  .ac-code-header {
@@ -113,7 +117,7 @@
113
117
  .component-header {
114
118
  display: flex;
115
119
  justify-content: space-between;
116
- border-bottom: 1px solid #edf2f7;
120
+ border-bottom: 1px solid $ac-white-light;
117
121
  background-color: $ac-white;
118
122
 
119
123
  h3 {
@@ -121,7 +125,7 @@
121
125
  font-size: 16px;
122
126
  font-weight: 500;
123
127
  font-family: $ac-family-paragraph;
124
- color: #333;
128
+ color: $ac-color-value;
125
129
  }
126
130
 
127
131
  .component-switch {
@@ -145,17 +149,21 @@
145
149
  z-index: 1;
146
150
  max-height: 500px;
147
151
  overflow-y: auto;
152
+
148
153
  .copy-button {
149
154
  position: absolute;
150
155
  right: 5px;
151
156
  top: 5px;
157
+
152
158
  &:hover {
153
159
  box-shadow: none;
154
160
  }
155
161
  }
162
+
156
163
  pre {
157
164
  margin: 0;
158
165
  border-radius: 4px;
166
+ font-size: 14px;
159
167
 
160
168
  .token {
161
169
  &.tag {
package/main.scss CHANGED
@@ -3,10 +3,12 @@
3
3
  @import "~bulma-checkradio";
4
4
  @import "~bulma-switch";
5
5
  @import "~bulma-tooltip";
6
+ @import url("https://fonts.googleapis.com/css2?family=Material+Icons&display=swap");
6
7
  @import "vue-multiselect/dist/vue-multiselect.min.css";
7
8
 
8
9
  // BASE
9
10
  @import "~assets/design-system/base/utilities/initial-variables";
11
+ @import "~assets/design-system/base/utilities/dark-theme";
10
12
  @import "~assets/design-system/base/utilities/derived-variables";
11
13
  @import "~assets/design-system/base/utilities/typography";
12
14
  @import "~assets/design-system/base/utilities/default";
@@ -48,10 +50,12 @@
48
50
  @import "~assets/design-system/components/overview-info";
49
51
  @import "~assets/design-system/components/pricing-table";
50
52
  @import "~assets/design-system/components/table-of-content";
53
+ @import "~assets/design-system/components/direct-deploy";
51
54
  @import "~assets/design-system/components/preview-modal";
52
55
  @import "~assets/design-system/components/wizard";
53
56
  @import "~assets/design-system/components/preloader";
54
57
  @import "~assets/design-system/components/pagination";
58
+ @import "~assets/design-system/components/graph";
55
59
  @import "~assets/design-system/components/ui-builder/ui-builder";
56
60
  @import "~assets/design-system/components/ac-toaster/ac-toasted";
57
61
  @import "~assets/design-system/components/bbum/post";
package/package.json CHANGED
@@ -1,18 +1,13 @@
1
1
  {
2
2
  "name": "@appscode/design-system",
3
- "version": "1.0.3-alpha.7",
3
+ "version": "1.0.43-alpha.100",
4
4
  "description": "A design system for Appscode websites and dashboards made using Bulma",
5
5
  "main": "main.scss",
6
6
  "scripts": {
7
7
  "test": "echo \"Error: no test specified\" && exit 1"
8
8
  },
9
9
  "dependencies": {
10
- "@appscode/design-system-images": "0.0.13",
11
- "bulma-checkradio": "^1.1.1",
12
- "bulma-switch": "^2.0.0",
13
- "bulma-tooltip": "^3.0.2",
14
- "v-calendar": "^1.0.6",
15
- "vue-multiselect": "^2.1.6"
10
+ "@appscode/design-system-images": "0.0.13"
16
11
  },
17
12
  "repository": {
18
13
  "type": "git",
@@ -0,0 +1,142 @@
1
+ export function HSLToHex(h, s, l) {
2
+ s /= 100;
3
+ l /= 100;
4
+
5
+ const c = (1 - Math.abs(2 * l - 1)) * s,
6
+ x = c * (1 - Math.abs(((h / 60) % 2) - 1)),
7
+ m = l - c / 2;
8
+
9
+ let r = 0,
10
+ g = 0,
11
+ b = 0;
12
+
13
+ if (0 <= h && h < 60) {
14
+ r = c;
15
+ g = x;
16
+ b = 0;
17
+ } else if (60 <= h && h < 120) {
18
+ r = x;
19
+ g = c;
20
+ b = 0;
21
+ } else if (120 <= h && h < 180) {
22
+ r = 0;
23
+ g = c;
24
+ b = x;
25
+ } else if (180 <= h && h < 240) {
26
+ r = 0;
27
+ g = x;
28
+ b = c;
29
+ } else if (240 <= h && h < 300) {
30
+ r = x;
31
+ g = 0;
32
+ b = c;
33
+ } else if (300 <= h && h < 360) {
34
+ r = c;
35
+ g = 0;
36
+ b = x;
37
+ }
38
+ // Having obtained RGB, convert channels to hex
39
+ r = Math.round((r + m) * 255).toString(16);
40
+ g = Math.round((g + m) * 255).toString(16);
41
+ b = Math.round((b + m) * 255).toString(16);
42
+
43
+ // Prepend 0s, if necessary
44
+ if (r.length == 1) r = "0" + r;
45
+ if (g.length == 1) g = "0" + g;
46
+ if (b.length == 1) b = "0" + b;
47
+
48
+ return "#" + r + g + b;
49
+ }
50
+ export function HexToHSL(H) {
51
+ // Convert hex to RGB first
52
+ let r = 0,
53
+ g = 0,
54
+ b = 0;
55
+ if (H.length == 4) {
56
+ r = parseInt("0x" + H[1] + H[1]);
57
+ g = parseInt("0x" + H[2] + H[2]);
58
+ b = parseInt("0x" + H[3] + H[3]);
59
+ } else if (H.length == 7) {
60
+ r = parseInt("0x" + H[1] + H[2]);
61
+ g = parseInt("0x" + H[3] + H[4]);
62
+ b = parseInt("0x" + H[5] + H[6]);
63
+ }
64
+ // Then to HSL
65
+ r /= 255;
66
+ g /= 255;
67
+ b /= 255;
68
+ const cmin = Math.min(r, g, b),
69
+ cmax = Math.max(r, g, b),
70
+ delta = cmax - cmin;
71
+ let h = 0,
72
+ s = 0,
73
+ l = 0;
74
+
75
+ if (delta == 0) h = 0;
76
+ else if (cmax == r) h = ((g - b) / delta) % 6;
77
+ else if (cmax == g) h = (b - r) / delta + 2;
78
+ else h = (r - g) / delta + 4;
79
+
80
+ h = Math.round(h * 60);
81
+
82
+ if (h < 0) h += 360;
83
+
84
+ l = (cmax + cmin) / 2;
85
+ s = delta == 0 ? 0 : delta / (1 - Math.abs(2 * l - 1));
86
+ s = +(s * 100).toFixed(1);
87
+ l = +(l * 100).toFixed(1);
88
+
89
+ return {
90
+ hue: `${h}`,
91
+ saturation: `${s}%`,
92
+ lightness: `${l}%`,
93
+ };
94
+ }
95
+ export function getThemeHSL() {
96
+ const hue = getComputedStyle(document.documentElement).getPropertyValue(
97
+ "--hsl-hue"
98
+ );
99
+ const saturation = getComputedStyle(
100
+ document.documentElement
101
+ ).getPropertyValue("--hsl-saturation");
102
+ const lightness = getComputedStyle(
103
+ document.documentElement
104
+ ).getPropertyValue("--hsl-lightness");
105
+
106
+ return {
107
+ hue,
108
+ saturation,
109
+ lightness,
110
+ };
111
+ }
112
+ export function setThemeHSL(h, s, l) {
113
+ document.documentElement.style.setProperty("--hsl-hue", h);
114
+ document.documentElement.style.setProperty("--hsl-saturation", s);
115
+ document.documentElement.style.setProperty("--hsl-lightness", l);
116
+ }
117
+ export function setFontHSL(h, s, l) {
118
+ document.documentElement.style.setProperty("--font-hsl-hue", h);
119
+ document.documentElement.style.setProperty("--font-hsl-saturation", s);
120
+ document.documentElement.style.setProperty("--font-hsl-lightness", l);
121
+ }
122
+ export function getFontHSL() {
123
+ const hue = getComputedStyle(document.documentElement).getPropertyValue(
124
+ "--font-hsl-hue"
125
+ );
126
+ const saturation = getComputedStyle(
127
+ document.documentElement
128
+ ).getPropertyValue("--font-hsl-saturation");
129
+ const lightness = getComputedStyle(
130
+ document.documentElement
131
+ ).getPropertyValue("--font-hsl-lightness");
132
+
133
+ return {
134
+ hue,
135
+ saturation,
136
+ lightness,
137
+ };
138
+ }
139
+ export const loaderLightThemePrimaryColor = "#f5f7f9";
140
+ export const loaderDarkThemePrimaryColor = "#2e323c";
141
+ export const loaderLightThemeSecondaryColor = "#ecebeb";
142
+ export const loaderDarkThemeSecondaryColor = "#21272e";
@@ -2,9 +2,9 @@ module.exports = {
2
2
  position: "top-center",
3
3
  theme: "toasted-primary",
4
4
  iconPack: "fontawesome",
5
- className: "ac-toasted",
5
+ className: "ac-toast",
6
6
  action: {
7
- text: "Close",
7
+ icon: "close",
8
8
  class: "ac-toast-action",
9
9
  onClick: (e, toastObject) => {
10
10
  toastObject.goAway(0);
@@ -26,7 +26,7 @@ module.exports = {
26
26
  icon: "fa-check",
27
27
  duration: 2500,
28
28
  type: "success",
29
- className: "ac-toasted is-success",
29
+ className: "ac-toast is-success",
30
30
  },
31
31
  },
32
32
  {
@@ -34,6 +34,7 @@ module.exports = {
34
34
  message: (payload) => {
35
35
  if (payload) {
36
36
  if (typeof payload === "string") return payload;
37
+ else if (payload.response && payload.response.data && payload.response.data.message) return payload.response.data.message;
37
38
  else if (payload.message) return payload.message;
38
39
  else return "Something Went Wrong";
39
40
  } else return "Something Went Wrong";
@@ -41,7 +42,7 @@ module.exports = {
41
42
  options: {
42
43
  icon: "fa-warning",
43
44
  type: "error",
44
- className: "ac-toasted is-error",
45
+ className: "ac-toast is-error",
45
46
  },
46
47
  },
47
48
  {
@@ -56,7 +57,7 @@ module.exports = {
56
57
  options: {
57
58
  icon: "fa-info",
58
59
  type: "info",
59
- className: "ac-toasted is-info",
60
+ className: "ac-toast is-info",
60
61
  },
61
62
  },
62
63
  {
@@ -73,7 +74,7 @@ module.exports = {
73
74
  options: {
74
75
  icon: "fa-warning",
75
76
  type: "error",
76
- className: "ac-toasted is-warning",
77
+ className: "ac-toast is-warning",
77
78
  },
78
79
  },
79
80
  ],
@@ -0,0 +1,5 @@
1
+ <template>
2
+ <div class="ac-card-content b-1 b-t-n">
3
+ <slot />
4
+ </div>
5
+ </template>
@@ -0,0 +1,12 @@
1
+ <template>
2
+ <div
3
+ class="is-flex is-justify-content-space-between pt-8 pb-8 pl-20 pr-20 b-1"
4
+ >
5
+ <div class="header-left-content">
6
+ <slot name="card-header-left" />
7
+ </div>
8
+ <div class="header-right-content">
9
+ <slot name="card-header-right" />
10
+ </div>
11
+ </div>
12
+ </template>
@@ -0,0 +1,10 @@
1
+ <template>
2
+ <div class="card-data">
3
+ <p>
4
+ <slot name="card-label" />
5
+ </p>
6
+ <h5>
7
+ <slot name="card-value" />
8
+ </h5>
9
+ </div>
10
+ </template>
@@ -0,0 +1,5 @@
1
+ <template>
2
+ <div class="overview-card">
3
+ <slot />
4
+ </div>
5
+ </template>
@@ -1,13 +1,12 @@
1
1
  <template>
2
- <!-- card start -->
3
2
  <div class="ac-payment-card-wrapper">
4
3
  <!-- loader start -->
5
4
  <div v-if="isLoaderActive" class="ac-payment-card is-transparent-bg p-0">
6
5
  <content-loader
7
6
  :height="235"
8
7
  :speed="2"
9
- :primary-color="'#f3f3fa'"
10
- :secondary-color="'#ffffff'"
8
+ :primaryColor="primaryColor"
9
+ :secondaryColor="secondaryColor"
11
10
  />
12
11
  </div>
13
12
  <!-- loader end -->
@@ -15,24 +14,31 @@
15
14
  <slot name="cards" />
16
15
  </template>
17
16
 
18
- <div class="ac-payment-card add-card">
19
- <!-- single payment methode start -->
20
- <slot name="add-card" />
21
- </div>
17
+ <!-- single payment method start -->
18
+ <slot name="add-card" />
22
19
  </div>
23
20
  </template>
24
21
  <script>
25
22
  import { ContentLoader } from "vue-content-loader";
23
+ import {loaderLightThemePrimaryColor, loaderDarkThemePrimaryColor, loaderLightThemeSecondaryColor, loaderDarkThemeSecondaryColor} from "@appscode/design-system/plugins/theme";
26
24
 
27
25
  export default {
28
26
  components: {
29
- ContentLoader
27
+ ContentLoader,
30
28
  },
31
29
  props: {
32
30
  isLoaderActive: {
33
31
  type: Boolean,
34
- default: false
35
- }
32
+ default: false,
33
+ },
34
+ },
35
+ computed: {
36
+ primaryColor() {
37
+ return document.documentElement.classList.contains("is-dark-theme") ? loaderDarkThemePrimaryColor : loaderLightThemePrimaryColor;
38
+ },
39
+ secondaryColor() {
40
+ return document.documentElement.classList.contains("is-dark-theme") ? loaderDarkThemeSecondaryColor : loaderLightThemeSecondaryColor;
41
+ }
36
42
  }
37
43
  };
38
44
  </script>
@@ -38,7 +38,7 @@ export default {
38
38
  default: ""
39
39
  },
40
40
  removeBorderBottom: {
41
- type: String,
41
+ type: Boolean,
42
42
  default: false
43
43
  }
44
44
  },
@@ -15,10 +15,12 @@
15
15
  :language="language"
16
16
  :options="{
17
17
  minimap: {
18
- enabled: calcShowMinimap,
18
+ enabled: calcShowMinimap
19
19
  },
20
+ theme: theme,
20
21
  readOnly: readOnly,
21
- scrollBeyondLastLine: false,
22
+ wordWrap: wordWrap,
23
+ scrollBeyondLastLine: false
22
24
  }"
23
25
  />
24
26
  <monaco-editor
@@ -29,10 +31,12 @@
29
31
  :language="language"
30
32
  :options="{
31
33
  minimap: {
32
- enabled: calcShowMinimap,
34
+ enabled: calcShowMinimap
33
35
  },
36
+ theme: theme,
34
37
  readOnly: true,
35
- scrollBeyondLastLine: false,
38
+ wordWrap: wordWrap,
39
+ scrollBeyondLastLine: false
36
40
  }"
37
41
  :original="originalEditorContent"
38
42
  :diff-editor="true"
@@ -45,39 +49,47 @@ export default {
45
49
  props: {
46
50
  value: {
47
51
  type: String,
48
- default: "",
52
+ default: ""
49
53
  },
50
54
  originalValue: {
51
55
  type: String,
52
- default: "",
56
+ default: ""
53
57
  },
54
58
  readOnly: {
55
59
  type: Boolean,
56
- default: false,
60
+ default: false
57
61
  },
58
62
  language: {
59
63
  type: String,
60
- default: "yaml",
64
+ default: "yaml"
61
65
  },
62
66
  showMinimap: {
63
67
  type: Boolean,
64
- default: true,
68
+ default: true
65
69
  },
66
70
  editorHeight: {
67
71
  type: Number,
68
- default: 40,
72
+ default: 40
73
+ },
74
+ editorTheme: {
75
+ type: String,
76
+ default: ""
77
+ },
78
+ wordWrap: {
79
+ type: String,
80
+ default: "off"
69
81
  },
70
82
  },
71
83
  components: {
72
84
  EditorTabs: () => import("../tabs/EditorTabs.vue"),
73
- MonacoEditor: () => import("vue-monaco"),
85
+ MonacoEditor: () => import("vue-monaco")
74
86
  },
75
87
 
76
88
  data() {
77
89
  return {
78
90
  activeTab: "edit",
79
91
  editorContent: "",
80
- originalEditorContent: "",
92
+ originalEditorContent: ""
81
93
  };
82
94
  },
83
95
 
@@ -86,6 +98,14 @@ export default {
86
98
  const noOfLines = this.editorContent.split("\n").length;
87
99
  return this.showMinimap && noOfLines * 2 > this.editorHeight;
88
100
  },
101
+ theme() {
102
+ return (
103
+ this.editorTheme ||
104
+ (document.documentElement.classList.contains("is-dark-theme")
105
+ ? "vs-dark"
106
+ : "vs")
107
+ );
108
+ }
89
109
  },
90
110
 
91
111
  watch: {
@@ -95,7 +115,7 @@ export default {
95
115
  if (this.editorContent !== n) {
96
116
  this.editorContent = n;
97
117
  }
98
- },
118
+ }
99
119
  },
100
120
  originalValue: {
101
121
  immediate: true,
@@ -103,8 +123,8 @@ export default {
103
123
  if (this.originalEditorContent !== n) {
104
124
  this.originalEditorContent = n;
105
125
  }
106
- },
107
- },
126
+ }
127
+ }
108
128
  },
109
129
 
110
130
  methods: {
@@ -114,7 +134,7 @@ export default {
114
134
  editor.onDidBlurEditorText(() => {
115
135
  this.$emit("input", this.editorContent);
116
136
  });
117
- },
118
- },
137
+ }
138
+ }
119
139
  };
120
140
  </script>
@@ -1,5 +1,4 @@
1
1
  <template>
2
- <!-- body header start -->
3
2
  <div class="inner-header">
4
3
  <div
5
4
  class="is-flex is-justify-content-space-between"
@@ -1,12 +1,12 @@
1
1
  <template>
2
- <!-- for transition https://github.com/adamwathan/vue-tailwind-examples/blob/master/src/components/Modal.vue -->
3
- <!-- modal start -->
4
2
  <portal to="modal">
3
+ <!-- for transition https://github.com/adamwathan/vue-tailwind-examples/blob/master/src/components/Modal.vue -->
4
+ <!-- modal start -->
5
5
  <div
6
6
  v-if="showModal"
7
7
  class="ac-modal is-middle-alignment"
8
8
  :class="modifierClasses"
9
- @click.self="destroyModal"
9
+ @click.self="onModalOutsideClick"
10
10
  >
11
11
  <div class="ac-modal-inner">
12
12
  <!-- modal header start -->
@@ -17,6 +17,7 @@
17
17
  <header-item>
18
18
  <ac-button
19
19
  modifier-classes="is-square is-transparent"
20
+ :disabled="isCloseOptionDisabled"
20
21
  :icon-image="require('@/assets/images/icons/close-icon.svg')"
21
22
  @click.stop="destroyModal"
22
23
  />
@@ -36,7 +37,12 @@
36
37
  <!-- modal body end -->
37
38
 
38
39
  <!-- modal footer start -->
39
- <div class="ac-modal-footer action-footer">
40
+ <div
41
+ class="ac-modal-footer action-footer is-flex is-align-items-center is-justify-content-space-between"
42
+ >
43
+ <div>
44
+ <slot name="modal-footer-left" />
45
+ </div>
40
46
  <buttons class="has-text-right is-block">
41
47
  <slot name="modal-footer-controls" />
42
48
  </buttons>
@@ -45,7 +51,6 @@
45
51
  </div>
46
52
  </div>
47
53
  </portal>
48
- <!-- modal end -->
49
54
  </template>
50
55
 
51
56
  <script>
@@ -53,28 +58,36 @@ export default {
53
58
  props: {
54
59
  open: {
55
60
  type: Boolean,
56
- default: false,
61
+ default: false
57
62
  },
58
63
  title: {
59
64
  type: String,
60
- default: "Modal",
65
+ default: "Modal"
61
66
  },
62
67
  modifierClasses: {
63
68
  type: String,
64
- default: "",
69
+ default: ""
70
+ },
71
+ isCloseOptionDisabled: {
72
+ type: Boolean,
73
+ default: false
65
74
  },
75
+ ignoreOutsideClick: {
76
+ type: Boolean,
77
+ default: false
78
+ }
66
79
  },
67
80
 
68
81
  components: {
69
82
  HeaderItems: () => import("../header/HeaderItems.vue"),
70
83
  HeaderItem: () => import("../header/HeaderItem.vue"),
71
84
  Buttons: () => import("../button/Buttons.vue"),
72
- AcButton: () => import("../button/Button.vue"),
85
+ AcButton: () => import("../button/Button.vue")
73
86
  },
74
87
 
75
88
  data() {
76
89
  return {
77
- showModal: false,
90
+ showModal: false
78
91
  };
79
92
  },
80
93
 
@@ -87,8 +100,8 @@ export default {
87
100
  } else {
88
101
  this.destroyModal();
89
102
  }
90
- },
91
- },
103
+ }
104
+ }
92
105
  },
93
106
 
94
107
  methods: {
@@ -98,16 +111,21 @@ export default {
98
111
  this.destroyModal();
99
112
  }
100
113
  },
114
+ onModalOutsideClick() {
115
+ if (this.ignoreOutsideClick) return;
116
+ this.destroyModal();
117
+ },
101
118
  initializeModal() {
102
119
  this.showModal = true;
103
120
  document.addEventListener("keydown", this.onKeyDown);
104
121
  },
105
122
  destroyModal() {
123
+ if (this.isCloseOptionDisabled) return;
106
124
  this.showModal = false;
107
125
  document.removeEventListener("keydown", this.onKeyDown);
108
126
 
109
127
  this.$emit("closemodal", true);
110
- },
111
- },
128
+ }
129
+ }
112
130
  };
113
131
  </script>
@@ -1,5 +1,4 @@
1
1
  <template>
2
- <!-- modal start -->
3
2
  <modal
4
3
  :title="editorTitle"
5
4
  :open="open"