@varlet/cli 1.22.0-alpha.3 → 1.22.0-alpha.64

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 (120) hide show
  1. package/README.en-US.md +11 -0
  2. package/README.md +11 -0
  3. package/generators/sfc/package.json +3 -3
  4. package/generators/sfc/varlet.config.js +5 -0
  5. package/generators/tsx/package.json +3 -3
  6. package/generators/tsx/varlet.config.js +5 -0
  7. package/lib/commands/dev.js +14 -3
  8. package/lib/commands/preview.d.ts +1 -0
  9. package/lib/commands/preview.js +65 -0
  10. package/lib/compiler/compileSiteEntry.d.ts +1 -4
  11. package/lib/compiler/compileSiteEntry.js +10 -20
  12. package/lib/config/jest.config.js +0 -1
  13. package/lib/config/vite.config.js +16 -7
  14. package/lib/index.js +2 -0
  15. package/lib/shared/constant.d.ts +1 -9
  16. package/lib/shared/constant.js +2 -10
  17. package/lib/site/components/app-bar/index.d.ts +3 -0
  18. package/lib/site/components/app-bar/index.js +12 -0
  19. package/lib/site/components/app-bar/props.d.ts +21 -0
  20. package/lib/site/components/app-bar/props.js +28 -0
  21. package/lib/site/components/button/index.d.ts +3 -0
  22. package/lib/site/components/button/index.js +12 -0
  23. package/lib/site/components/button/props.d.ts +62 -0
  24. package/lib/site/components/button/props.js +69 -0
  25. package/lib/site/components/cell/index.d.ts +3 -0
  26. package/lib/site/components/cell/index.js +12 -0
  27. package/lib/site/components/cell/props.d.ts +27 -0
  28. package/lib/site/components/cell/props.js +30 -0
  29. package/lib/site/components/context/index.d.ts +15 -0
  30. package/lib/site/components/context/index.js +11 -0
  31. package/lib/site/components/context/lock.d.ts +10 -0
  32. package/lib/site/components/context/lock.js +94 -0
  33. package/lib/site/components/context/zIndex.d.ts +4 -0
  34. package/lib/site/components/context/zIndex.js +19 -0
  35. package/lib/site/components/icon/index.d.ts +3 -0
  36. package/lib/site/components/icon/index.js +12 -0
  37. package/lib/site/components/icon/props.d.ts +23 -0
  38. package/lib/site/components/icon/props.js +25 -0
  39. package/lib/site/components/loading/index.d.ts +3 -0
  40. package/lib/site/components/loading/index.js +12 -0
  41. package/lib/site/components/loading/props.d.ts +26 -0
  42. package/lib/site/components/loading/props.js +34 -0
  43. package/lib/site/components/menu/index.d.ts +3 -0
  44. package/lib/site/components/menu/index.js +12 -0
  45. package/lib/site/components/menu/props.d.ts +40 -0
  46. package/lib/site/components/menu/props.js +43 -0
  47. package/lib/site/components/progress/index.d.ts +3 -0
  48. package/lib/site/components/progress/index.js +12 -0
  49. package/lib/site/components/progress/props.d.ts +43 -0
  50. package/lib/site/components/progress/props.js +57 -0
  51. package/lib/site/components/ripple/index.d.ts +8 -0
  52. package/lib/site/components/ripple/index.js +125 -0
  53. package/lib/site/components/utils/components.d.ts +53 -0
  54. package/lib/site/components/utils/components.js +279 -0
  55. package/lib/site/components/utils/elements.d.ts +30 -0
  56. package/lib/site/components/utils/elements.js +240 -0
  57. package/lib/site/components/utils/shared.d.ts +36 -0
  58. package/lib/site/components/utils/shared.js +181 -0
  59. package/lib/site/mobile/main.d.ts +3 -0
  60. package/lib/site/mobile/main.js +93 -0
  61. package/lib/site/pc/main.d.ts +3 -0
  62. package/lib/site/pc/main.js +69 -0
  63. package/lib/site/useProgress.d.ts +4 -0
  64. package/lib/site/useProgress.js +58 -0
  65. package/lib/site/utils.d.ts +24 -0
  66. package/lib/site/utils.js +133 -0
  67. package/package.json +10 -9
  68. package/site/.DS_Store +0 -0
  69. package/site/components/app-bar/AppBar.vue +45 -0
  70. package/site/components/app-bar/appBar.less +66 -0
  71. package/site/components/app-bar/index.ts +10 -0
  72. package/site/components/app-bar/props.ts +25 -0
  73. package/site/components/button/Button.vue +84 -0
  74. package/site/components/button/button.less +183 -0
  75. package/site/components/button/index.ts +10 -0
  76. package/site/components/button/props.ts +70 -0
  77. package/site/components/cell/Cell.vue +42 -0
  78. package/site/components/cell/cell.less +74 -0
  79. package/site/components/cell/index.ts +10 -0
  80. package/site/components/cell/props.ts +27 -0
  81. package/site/components/context/index.ts +17 -0
  82. package/site/components/context/lock.ts +103 -0
  83. package/site/components/context/zIndex.ts +20 -0
  84. package/site/components/icon/Icon.vue +68 -0
  85. package/site/components/icon/icon.less +25 -0
  86. package/site/components/icon/index.ts +10 -0
  87. package/site/components/icon/props.ts +24 -0
  88. package/site/components/loading/Loading.vue +55 -0
  89. package/site/components/loading/index.ts +10 -0
  90. package/site/components/loading/loading.less +420 -0
  91. package/site/components/loading/props.ts +37 -0
  92. package/site/components/menu/Menu.vue +113 -0
  93. package/site/components/menu/index.ts +10 -0
  94. package/site/components/menu/menu.less +27 -0
  95. package/site/components/menu/props.ts +43 -0
  96. package/site/components/progress/Progress.vue +108 -0
  97. package/site/components/progress/index.ts +10 -0
  98. package/site/components/progress/progress.less +98 -0
  99. package/site/components/progress/props.ts +55 -0
  100. package/site/components/ripple/index.ts +167 -0
  101. package/site/components/ripple/ripple.less +17 -0
  102. package/site/components/styles/common.less +64 -0
  103. package/site/components/styles/elevation.less +126 -0
  104. package/site/components/styles/var.less +27 -0
  105. package/site/components/utils/components.ts +53 -0
  106. package/site/components/utils/elements.ts +83 -0
  107. package/site/components/utils/shared.ts +27 -0
  108. package/site/mobile/App.vue +21 -17
  109. package/site/mobile/components/AppHome.vue +6 -6
  110. package/site/mobile/main.ts +15 -8
  111. package/site/pc/App.vue +16 -11
  112. package/site/pc/components/AppHeader.vue +15 -11
  113. package/site/pc/components/AppMobile.vue +3 -3
  114. package/site/pc/components/AppSidebar.vue +17 -21
  115. package/site/pc/main.ts +8 -5
  116. package/site/useProgress.ts +11 -9
  117. package/site/utils.ts +14 -3
  118. package/varlet.default.config.js +3 -2
  119. package/generators/sfc/yarn.lock +0 -11231
  120. package/generators/tsx/yarn.lock +0 -11231
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.useProgress = void 0;
7
+ var progress_1 = __importDefault(require("./components/progress"));
8
+ var vue_1 = require("vue");
9
+ // @ts-ignore
10
+ var _config_1 = __importDefault(require("@config"));
11
+ // @ts-ignore
12
+ var utils_1 = require("./utils");
13
+ var lodash_es_1 = require("lodash-es");
14
+ function useProgress() {
15
+ var timer;
16
+ var trackColor = lodash_es_1.get(_config_1.default, 'themes.color-progress-track');
17
+ var color = lodash_es_1.get(_config_1.default, 'themes.color-progress');
18
+ var props = vue_1.reactive({
19
+ style: {
20
+ position: 'fixed',
21
+ width: '100%',
22
+ left: 0,
23
+ top: 0,
24
+ zIndex: 10086,
25
+ },
26
+ trackColor: trackColor,
27
+ color: color,
28
+ lineWidth: 3,
29
+ value: 0,
30
+ });
31
+ var changeValue = function () {
32
+ timer = window.setTimeout(function () {
33
+ if (props.value >= 95)
34
+ return;
35
+ var num = Math.random();
36
+ if (props.value < 70)
37
+ num = Math.round(5 * Math.random());
38
+ props.value += num;
39
+ changeValue();
40
+ }, 200);
41
+ };
42
+ var start = function () {
43
+ props.value = 0;
44
+ setTimeout(function () { return (props.color = color); }, 200);
45
+ changeValue();
46
+ };
47
+ var end = function () {
48
+ props.value = 100;
49
+ setTimeout(function () { return (props.color = trackColor); }, 300);
50
+ window.clearTimeout(timer);
51
+ };
52
+ utils_1.mountInstance(progress_1.default, props);
53
+ return {
54
+ start: start,
55
+ end: end,
56
+ };
57
+ }
58
+ exports.useProgress = useProgress;
@@ -0,0 +1,24 @@
1
+ export * from './components/utils/components';
2
+ export * from './components/utils/elements';
3
+ export * from './components/utils/shared';
4
+ export declare type StyleVars = Record<string, string>;
5
+ export declare function camelize(str: string): string;
6
+ export declare function bigCamelize(str: string): string;
7
+ export interface PCLocationInfo {
8
+ language: string;
9
+ menuName: string;
10
+ }
11
+ export declare function getPCLocationInfo(): PCLocationInfo;
12
+ export declare function isPhone(): boolean;
13
+ export declare enum MenuTypes {
14
+ TITLE = 1,
15
+ COMPONENT = 2,
16
+ DOCUMENTATION = 3
17
+ }
18
+ export declare function inIframe(): boolean;
19
+ export declare function removeEmpty(object?: Record<string, string>): Record<string, string>;
20
+ export declare function getHashSearch(): URLSearchParams;
21
+ export declare function watchLang(cb: (lang: string) => void, platform?: 'pc' | 'mobile'): void;
22
+ export declare function watchPlatform(cb: (platform: string) => void): void;
23
+ export declare function addRouteListener(cb: () => void): void;
24
+ export declare function setThemes(config: Record<string, any>): void;
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ var __read = (this && this.__read) || function (o, n) {
13
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
14
+ if (!m) return o;
15
+ var i = m.call(o), r, ar = [], e;
16
+ try {
17
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
18
+ }
19
+ catch (error) { e = { error: error }; }
20
+ finally {
21
+ try {
22
+ if (r && !r.done && (m = i["return"])) m.call(i);
23
+ }
24
+ finally { if (e) throw e.error; }
25
+ }
26
+ return ar;
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.setThemes = exports.addRouteListener = exports.watchPlatform = exports.watchLang = exports.getHashSearch = exports.removeEmpty = exports.inIframe = exports.MenuTypes = exports.isPhone = exports.getPCLocationInfo = exports.bigCamelize = exports.camelize = void 0;
30
+ var vue_1 = require("vue");
31
+ var lodash_es_1 = require("lodash-es");
32
+ var elements_1 = require("./components/utils/elements");
33
+ __exportStar(require("./components/utils/components"), exports);
34
+ __exportStar(require("./components/utils/elements"), exports);
35
+ __exportStar(require("./components/utils/shared"), exports);
36
+ function StyleProvider(styleVars) {
37
+ if (styleVars === void 0) { styleVars = {}; }
38
+ var styles = elements_1.formatStyleVars(styleVars);
39
+ Object.entries(styles).forEach(function (_a) {
40
+ var _b = __read(_a, 2), key = _b[0], value = _b[1];
41
+ return document.documentElement.style.setProperty(key, value);
42
+ });
43
+ }
44
+ function camelize(str) {
45
+ return str.replace(/-(\w)/g, function (_, p) { return p.toUpperCase(); });
46
+ }
47
+ exports.camelize = camelize;
48
+ function bigCamelize(str) {
49
+ return camelize(str).replace(str.charAt(0), str.charAt(0).toUpperCase());
50
+ }
51
+ exports.bigCamelize = bigCamelize;
52
+ function getPCLocationInfo() {
53
+ var _a = __read(window.location.hash.split('/'), 3), language = _a[1], menuName = _a[2];
54
+ return {
55
+ language: language,
56
+ menuName: menuName
57
+ };
58
+ }
59
+ exports.getPCLocationInfo = getPCLocationInfo;
60
+ function isPhone() {
61
+ return /Android|webOS|iPhone|iPod|BlackBerry|Pad/i.test(navigator.userAgent);
62
+ }
63
+ exports.isPhone = isPhone;
64
+ var MenuTypes;
65
+ (function (MenuTypes) {
66
+ MenuTypes[MenuTypes["TITLE"] = 1] = "TITLE";
67
+ MenuTypes[MenuTypes["COMPONENT"] = 2] = "COMPONENT";
68
+ MenuTypes[MenuTypes["DOCUMENTATION"] = 3] = "DOCUMENTATION";
69
+ })(MenuTypes = exports.MenuTypes || (exports.MenuTypes = {}));
70
+ function inIframe() {
71
+ return window.self !== window.top;
72
+ }
73
+ exports.inIframe = inIframe;
74
+ function removeEmpty(object) {
75
+ if (object === void 0) { object = {}; }
76
+ return Object.keys(object).reduce(function (record, key) {
77
+ var value = object[key];
78
+ value && (record[key] = value);
79
+ return record;
80
+ }, {});
81
+ }
82
+ exports.removeEmpty = removeEmpty;
83
+ function getHashSearch() {
84
+ var href = window.location.href;
85
+ var hashSearch = href.slice(href.indexOf('?'));
86
+ return new URLSearchParams(hashSearch);
87
+ }
88
+ exports.getHashSearch = getHashSearch;
89
+ function watchLang(cb, platform) {
90
+ if (platform === void 0) { platform = 'mobile'; }
91
+ var handleHashchange = function () {
92
+ var _a;
93
+ var language = platform === 'mobile'
94
+ ? ((_a = getHashSearch().get('language')) !== null && _a !== void 0 ? _a : 'zh-CN')
95
+ : getPCLocationInfo().language;
96
+ cb(language);
97
+ };
98
+ addRouteListener(handleHashchange);
99
+ handleHashchange();
100
+ }
101
+ exports.watchLang = watchLang;
102
+ function watchPlatform(cb) {
103
+ var handleHashchange = function () {
104
+ var _a;
105
+ var platform = (_a = getHashSearch().get('platform')) !== null && _a !== void 0 ? _a : 'mobile';
106
+ cb(platform);
107
+ };
108
+ addRouteListener(handleHashchange);
109
+ handleHashchange();
110
+ }
111
+ exports.watchPlatform = watchPlatform;
112
+ function addRouteListener(cb) {
113
+ vue_1.onMounted(function () {
114
+ window.addEventListener('hashchange', cb);
115
+ window.addEventListener('popstate', cb);
116
+ });
117
+ vue_1.onUnmounted(function () {
118
+ window.removeEventListener('hashchange', cb);
119
+ window.removeEventListener('popstate', cb);
120
+ });
121
+ }
122
+ exports.addRouteListener = addRouteListener;
123
+ function setThemes(config) {
124
+ var themes = lodash_es_1.get(config, 'themes', {});
125
+ Object.keys(themes).forEach(function (key) {
126
+ var _a;
127
+ var theme = themes[key];
128
+ StyleProvider((_a = {},
129
+ _a["--site-config-" + key] = theme,
130
+ _a));
131
+ });
132
+ }
133
+ exports.setThemes = setThemes;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@varlet/cli",
3
- "version": "1.22.0-alpha.3+019ba0c0",
3
+ "version": "1.22.0-alpha.64+4e9f81da",
4
4
  "description": "cli of varlet",
5
5
  "bin": {
6
6
  "varlet-cli": "./lib/index.js"
@@ -31,7 +31,7 @@
31
31
  "dev": "tsc --watch",
32
32
  "build": "tsc"
33
33
  },
34
- "gitHead": "019ba0c08fc8b6a7636d27b8539ac8d02affd994",
34
+ "gitHead": "4e9f81dabf854961e3bd99c445a0a8566b26db66",
35
35
  "dependencies": {
36
36
  "@babel/core": "^7.14.8",
37
37
  "@babel/preset-env": "^7.14.8",
@@ -44,14 +44,14 @@
44
44
  "@varlet/markdown-vite-plugin": "^1.20.0",
45
45
  "@varlet/stylelint-config": "^1.9.0",
46
46
  "@varlet/touch-emulator": "^1.0.1",
47
- "@varlet/ui": "^1.22.0-alpha.3+019ba0c0",
48
47
  "@vitejs/plugin-vue": "1.9.2",
49
48
  "@vitejs/plugin-vue-jsx": "1.1.8",
50
49
  "@vue/babel-plugin-jsx": "^1.0.7",
50
+ "@vue/compiler-sfc": "3.2.16",
51
51
  "@vue/test-utils": "^2.0.0-rc.6",
52
+ "address": "^1.1.2",
52
53
  "babel-jest": "26.6.3",
53
54
  "chalk": "^4.1.0",
54
- "chokidar": "^3.5.2",
55
55
  "clipboard": "^2.0.6",
56
56
  "commander": "^6.2.0",
57
57
  "commitizen": "^4.2.2",
@@ -66,7 +66,9 @@
66
66
  "jest": "^26.6.3",
67
67
  "less": "^3.12.2",
68
68
  "lint-staged": "^10.5.0",
69
+ "live-server": "^1.2.1",
69
70
  "lodash": "^4.17.21",
71
+ "lodash-es": "^4.17.21",
70
72
  "ora": "^5.4.0",
71
73
  "prettier": "^2.3.2",
72
74
  "release-it": "^14.11.5",
@@ -74,10 +76,9 @@
74
76
  "stylelint": "^13.13.1",
75
77
  "ts-jest": "^26.5.1",
76
78
  "typescript": "^4.3.5",
77
- "vite": "2.5.10",
79
+ "vite": "2.6.2",
78
80
  "vite-plugin-html": "^2.1.0",
79
81
  "vue-jest": "^5.0.0-alpha.8",
80
- "vue-loader": "16.5.0",
81
82
  "vue-router": "4.0.0-rc.1"
82
83
  },
83
84
  "devDependencies": {
@@ -85,10 +86,10 @@
85
86
  "@types/fs-extra": "^9.0.2",
86
87
  "@types/hash-sum": "^1.0.0",
87
88
  "@types/jest": "^26.0.15",
88
- "@types/lodash": "^4.14.168"
89
+ "@types/lodash": "^4.14.174",
90
+ "@types/lodash-es": "^4.17.5"
89
91
  },
90
92
  "peerDependencies": {
91
- "@vue/compiler-sfc": "3.2.17",
92
- "vue": "3.2.17"
93
+ "vue": "3.2.16"
93
94
  }
94
95
  }
package/site/.DS_Store ADDED
Binary file
@@ -0,0 +1,45 @@
1
+ <template>
2
+ <div
3
+ class="var-site-app-bar"
4
+ :class="{ 'var-site-elevation--3': elevation }"
5
+ :style="{
6
+ background: color,
7
+ color: textColor,
8
+ }"
9
+ >
10
+ <div class="var-site-app-bar__left" v-if="$slots.left">
11
+ <slot name="left" />
12
+ </div>
13
+
14
+ <div
15
+ class="var-site-app-bar__title"
16
+ :class="`var-site-app-bar__title-${titlePosition}`"
17
+ :style="{
18
+ paddingLeft: $slots.left && titlePosition !== 'center' ? '30px' : '10px',
19
+ paddingRight: $slots.right && titlePosition !== 'center' ? '30px' : '10px',
20
+ }"
21
+ >
22
+ <slot>{{ title }}</slot>
23
+ </div>
24
+
25
+ <div class="var-site-app-bar__right" v-if="$slots.right">
26
+ <slot name="right" />
27
+ </div>
28
+ </div>
29
+ </template>
30
+
31
+ <script lang="ts">
32
+ import { defineComponent } from 'vue'
33
+ import { props } from './props'
34
+
35
+ export default defineComponent({
36
+ name: 'VarSiteAppBar',
37
+ props,
38
+ })
39
+ </script>
40
+
41
+ <style lang="less">
42
+ @import '../styles/common';
43
+ @import '../styles/elevation';
44
+ @import './appBar';
45
+ </style>
@@ -0,0 +1,66 @@
1
+ @site-app-bar-color: var(--site-color-primary);
2
+ @site-app-bar-text-color: #fff;
3
+ @site-app-bar-height: 50px;
4
+ @site-app-bar-padding: 0 10px;
5
+ @site-app-bar-title-line-height: 50px;
6
+
7
+ :root {
8
+ --site-app-bar-color: @site-app-bar-color;
9
+ --site-app-bar-text-color: #fff;
10
+ --site-app-bar-height: @site-app-bar-height;
11
+ --site-app-bar-padding: @site-app-bar-padding;
12
+ --site-app-bar-title-line-height: @site-app-bar-title-line-height;
13
+ }
14
+
15
+ .var-site-app-bar {
16
+ position: relative;
17
+ display: flex;
18
+ justify-content: center;
19
+ align-items: center;
20
+ height: var(--site-app-bar-height);
21
+ padding: var(--site-app-bar-padding);
22
+ background: var(--site-app-bar-color);
23
+ color: var(--site-app-bar-text-color);
24
+
25
+ &__title {
26
+ flex: 1;
27
+ white-space: nowrap;
28
+ text-overflow: ellipsis;
29
+ overflow: hidden;
30
+ line-height: var(--site-app-bar-title-line-height);
31
+ display: flex;
32
+ }
33
+
34
+ &__title-center {
35
+ justify-content: center;
36
+ }
37
+
38
+ &__title-left {
39
+ justify-content: flex-start;
40
+ }
41
+
42
+ &__title-right {
43
+ justify-content: flex-end;
44
+ }
45
+
46
+ &__left,
47
+ &__right {
48
+ display: flex;
49
+ justify-content: flex-start;
50
+ align-items: center;
51
+ height: 100%;
52
+ z-index: 2;
53
+ }
54
+
55
+ &__left {
56
+ position: absolute;
57
+ top: 0;
58
+ left: 0;
59
+ }
60
+
61
+ &__right {
62
+ position: absolute;
63
+ top: 0;
64
+ right: 0;
65
+ }
66
+ }
@@ -0,0 +1,10 @@
1
+ import type { App } from 'vue'
2
+ import AppBar from './AppBar.vue'
3
+
4
+ AppBar.install = function (app: App) {
5
+ app.component(AppBar.name, AppBar)
6
+ }
7
+
8
+ export const _AppBarComponent = AppBar
9
+
10
+ export default AppBar
@@ -0,0 +1,25 @@
1
+ export function positionValidator(position: string): boolean {
2
+ const validPositions = ['left', 'center', 'right']
3
+ return validPositions.includes(position)
4
+ }
5
+
6
+ export const props = {
7
+ color: {
8
+ type: String,
9
+ },
10
+ textColor: {
11
+ type: String,
12
+ },
13
+ title: {
14
+ type: String,
15
+ },
16
+ titlePosition: {
17
+ type: String,
18
+ default: 'left',
19
+ validator: positionValidator,
20
+ },
21
+ elevation: {
22
+ type: Boolean,
23
+ default: true,
24
+ },
25
+ }
@@ -0,0 +1,84 @@
1
+ <template>
2
+ <button
3
+ v-ripple="{ disabled: disabled || !ripple }"
4
+ class="var-site-button var-site--box"
5
+ :class="[
6
+ `var-site-button--${size}`,
7
+ block ? 'var-site--flex var-site-button--block' : 'var-site--inline-flex',
8
+ disabled ? 'var-site-button--disabled' : null,
9
+ text ? `var-site-button--text-${type}` : `var-site-button--${type}`,
10
+ text ? 'var-site-button--text' : 'var-elevation--1',
11
+ text && disabled ? 'var-site-button--text-disabled' : null,
12
+ round ? 'var-site-button--round' : null,
13
+ outline ? 'var-site-button--outline' : null,
14
+ ]"
15
+ :style="{
16
+ color: textColor,
17
+ background: color,
18
+ }"
19
+ :disabled="disabled"
20
+ @click="handleClick"
21
+ @touchstart="handleTouchstart"
22
+ >
23
+ <var-site-loading
24
+ class="var-site-button__loading"
25
+ :type="loadingType"
26
+ :size="loadingSize"
27
+ :radius="loadingRadius"
28
+ v-if="loading"
29
+ />
30
+ <div class="var-site-button__content" :class="[loading ? 'var-site-button--hidden' : null]">
31
+ <slot />
32
+ </div>
33
+ </button>
34
+ </template>
35
+
36
+ <script lang="ts">
37
+ import Ripple from '../ripple'
38
+ import Loading from '../loading'
39
+ import { defineComponent } from 'vue'
40
+ import { props } from './props'
41
+
42
+ export default defineComponent({
43
+ name: 'VarSiteButton',
44
+ components: {
45
+ [Loading.name]: Loading,
46
+ },
47
+ directives: { Ripple },
48
+ props,
49
+ setup(props) {
50
+ const handleClick = (e: Event) => {
51
+ const { loading, disabled, onClick } = props
52
+
53
+ if (loading || disabled) {
54
+ return
55
+ }
56
+
57
+ onClick?.(e)
58
+ }
59
+
60
+ const handleTouchstart = (e: Event) => {
61
+ const { loading, disabled, onTouchstart } = props
62
+
63
+ if (loading || disabled) {
64
+ return
65
+ }
66
+
67
+ onTouchstart?.(e)
68
+ }
69
+
70
+ return {
71
+ handleClick,
72
+ handleTouchstart,
73
+ }
74
+ },
75
+ })
76
+ </script>
77
+
78
+ <style lang="less">
79
+ @import '../styles/common';
80
+ @import '../styles/elevation';
81
+ @import '../ripple/ripple';
82
+ @import '../loading/loading';
83
+ @import './button';
84
+ </style>