@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.
- package/README.en-US.md +11 -0
- package/README.md +11 -0
- package/generators/sfc/package.json +3 -3
- package/generators/sfc/varlet.config.js +5 -0
- package/generators/tsx/package.json +3 -3
- package/generators/tsx/varlet.config.js +5 -0
- package/lib/commands/dev.js +14 -3
- package/lib/commands/preview.d.ts +1 -0
- package/lib/commands/preview.js +65 -0
- package/lib/compiler/compileSiteEntry.d.ts +1 -4
- package/lib/compiler/compileSiteEntry.js +10 -20
- package/lib/config/jest.config.js +0 -1
- package/lib/config/vite.config.js +16 -7
- package/lib/index.js +2 -0
- package/lib/shared/constant.d.ts +1 -9
- package/lib/shared/constant.js +2 -10
- package/lib/site/components/app-bar/index.d.ts +3 -0
- package/lib/site/components/app-bar/index.js +12 -0
- package/lib/site/components/app-bar/props.d.ts +21 -0
- package/lib/site/components/app-bar/props.js +28 -0
- package/lib/site/components/button/index.d.ts +3 -0
- package/lib/site/components/button/index.js +12 -0
- package/lib/site/components/button/props.d.ts +62 -0
- package/lib/site/components/button/props.js +69 -0
- package/lib/site/components/cell/index.d.ts +3 -0
- package/lib/site/components/cell/index.js +12 -0
- package/lib/site/components/cell/props.d.ts +27 -0
- package/lib/site/components/cell/props.js +30 -0
- package/lib/site/components/context/index.d.ts +15 -0
- package/lib/site/components/context/index.js +11 -0
- package/lib/site/components/context/lock.d.ts +10 -0
- package/lib/site/components/context/lock.js +94 -0
- package/lib/site/components/context/zIndex.d.ts +4 -0
- package/lib/site/components/context/zIndex.js +19 -0
- package/lib/site/components/icon/index.d.ts +3 -0
- package/lib/site/components/icon/index.js +12 -0
- package/lib/site/components/icon/props.d.ts +23 -0
- package/lib/site/components/icon/props.js +25 -0
- package/lib/site/components/loading/index.d.ts +3 -0
- package/lib/site/components/loading/index.js +12 -0
- package/lib/site/components/loading/props.d.ts +26 -0
- package/lib/site/components/loading/props.js +34 -0
- package/lib/site/components/menu/index.d.ts +3 -0
- package/lib/site/components/menu/index.js +12 -0
- package/lib/site/components/menu/props.d.ts +40 -0
- package/lib/site/components/menu/props.js +43 -0
- package/lib/site/components/progress/index.d.ts +3 -0
- package/lib/site/components/progress/index.js +12 -0
- package/lib/site/components/progress/props.d.ts +43 -0
- package/lib/site/components/progress/props.js +57 -0
- package/lib/site/components/ripple/index.d.ts +8 -0
- package/lib/site/components/ripple/index.js +125 -0
- package/lib/site/components/utils/components.d.ts +53 -0
- package/lib/site/components/utils/components.js +279 -0
- package/lib/site/components/utils/elements.d.ts +30 -0
- package/lib/site/components/utils/elements.js +240 -0
- package/lib/site/components/utils/shared.d.ts +36 -0
- package/lib/site/components/utils/shared.js +181 -0
- package/lib/site/mobile/main.d.ts +3 -0
- package/lib/site/mobile/main.js +93 -0
- package/lib/site/pc/main.d.ts +3 -0
- package/lib/site/pc/main.js +69 -0
- package/lib/site/useProgress.d.ts +4 -0
- package/lib/site/useProgress.js +58 -0
- package/lib/site/utils.d.ts +24 -0
- package/lib/site/utils.js +133 -0
- package/package.json +10 -9
- package/site/.DS_Store +0 -0
- package/site/components/app-bar/AppBar.vue +45 -0
- package/site/components/app-bar/appBar.less +66 -0
- package/site/components/app-bar/index.ts +10 -0
- package/site/components/app-bar/props.ts +25 -0
- package/site/components/button/Button.vue +84 -0
- package/site/components/button/button.less +183 -0
- package/site/components/button/index.ts +10 -0
- package/site/components/button/props.ts +70 -0
- package/site/components/cell/Cell.vue +42 -0
- package/site/components/cell/cell.less +74 -0
- package/site/components/cell/index.ts +10 -0
- package/site/components/cell/props.ts +27 -0
- package/site/components/context/index.ts +17 -0
- package/site/components/context/lock.ts +103 -0
- package/site/components/context/zIndex.ts +20 -0
- package/site/components/icon/Icon.vue +68 -0
- package/site/components/icon/icon.less +25 -0
- package/site/components/icon/index.ts +10 -0
- package/site/components/icon/props.ts +24 -0
- package/site/components/loading/Loading.vue +55 -0
- package/site/components/loading/index.ts +10 -0
- package/site/components/loading/loading.less +420 -0
- package/site/components/loading/props.ts +37 -0
- package/site/components/menu/Menu.vue +113 -0
- package/site/components/menu/index.ts +10 -0
- package/site/components/menu/menu.less +27 -0
- package/site/components/menu/props.ts +43 -0
- package/site/components/progress/Progress.vue +108 -0
- package/site/components/progress/index.ts +10 -0
- package/site/components/progress/progress.less +98 -0
- package/site/components/progress/props.ts +55 -0
- package/site/components/ripple/index.ts +167 -0
- package/site/components/ripple/ripple.less +17 -0
- package/site/components/styles/common.less +64 -0
- package/site/components/styles/elevation.less +126 -0
- package/site/components/styles/var.less +27 -0
- package/site/components/utils/components.ts +53 -0
- package/site/components/utils/elements.ts +83 -0
- package/site/components/utils/shared.ts +27 -0
- package/site/mobile/App.vue +21 -17
- package/site/mobile/components/AppHome.vue +6 -6
- package/site/mobile/main.ts +15 -8
- package/site/pc/App.vue +16 -11
- package/site/pc/components/AppHeader.vue +15 -11
- package/site/pc/components/AppMobile.vue +3 -3
- package/site/pc/components/AppSidebar.vue +17 -21
- package/site/pc/main.ts +8 -5
- package/site/useProgress.ts +11 -9
- package/site/utils.ts +14 -3
- package/varlet.default.config.js +3 -2
- package/generators/sfc/yarn.lock +0 -11231
- 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
|
+
"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": "
|
|
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.
|
|
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.
|
|
89
|
+
"@types/lodash": "^4.14.174",
|
|
90
|
+
"@types/lodash-es": "^4.17.5"
|
|
89
91
|
},
|
|
90
92
|
"peerDependencies": {
|
|
91
|
-
"
|
|
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,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>
|