@mptw/skylens-ui 1.4.109 → 1.5.1
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/AGENTS.md +59 -0
- package/CLAUDE.md +36 -0
- package/README.md +7 -7
- package/app/app.config.ts +14 -0
- package/app/app.vue +5 -0
- package/app/assets/css/layout.css +134 -0
- package/app/assets/css/main.css +189 -0
- package/{components → app/components}/SLAlertModal.vue +24 -16
- package/{components → app/components}/SLBreadcrumbs.vue +12 -8
- package/app/components/SLButton.vue +370 -0
- package/{components → app/components}/SLCalendarButton.vue +40 -34
- package/{components → app/components}/SLCalendarPopup.vue +79 -53
- package/{components → app/components}/SLCard.vue +57 -41
- package/{components → app/components}/SLChart.vue +6 -3
- package/{components → app/components}/SLCheckbox.vue +92 -49
- package/{components → app/components}/SLCircleButton.vue +25 -16
- package/{components → app/components}/SLCollapsableBlock.vue +44 -33
- package/{components → app/components}/SLCollapsableMulitPillSelect.vue +20 -15
- package/{components → app/components}/SLConfirmModal.vue +9 -6
- package/{components → app/components}/SLContextMenu.vue +88 -48
- package/{components → app/components}/SLDateInput.vue +109 -92
- package/{components → app/components}/SLDatePicker.vue +9 -7
- package/{components → app/components}/SLDistributor.vue +1 -1
- package/{components → app/components}/SLDownloadButton.vue +39 -29
- package/{components → app/components}/SLDraggable.vue +2 -2
- package/{components → app/components}/SLDropdown.vue +33 -25
- package/{components → app/components}/SLDropdownItem.vue +9 -5
- package/{components → app/components}/SLElementWithTitle.vue +12 -7
- package/{components → app/components}/SLEyeCheckbox.vue +44 -31
- package/{components → app/components}/SLFileInput.vue +23 -16
- package/{components → app/components}/SLGenderAgeSelect.vue +52 -36
- package/{components → app/components}/SLHourRangeInput.vue +45 -32
- package/{components → app/components}/SLIOSSwitch.vue +81 -60
- package/{components → app/components}/SLIcon.vue +4 -3
- package/{components → app/components}/SLIconButton.vue +31 -29
- package/{components → app/components}/SLInfoTip.vue +51 -40
- package/{components → app/components}/SLInsightSitePage.vue +12 -7
- package/{components → app/components}/SLLegend.vue +19 -12
- package/app/components/SLLinearProgressBar.vue +22 -0
- package/{components → app/components}/SLLink.vue +12 -8
- package/{components → app/components}/SLLoading.vue +34 -31
- package/{components → app/components}/SLMapChart.vue +5 -4
- package/{components → app/components}/SLModal.vue +90 -66
- package/{components → app/components}/SLMonthCalendarButton.vue +91 -45
- package/{components → app/components}/SLMonthPicker.vue +42 -37
- package/{components → app/components}/SLMultiEmailInput.vue +163 -113
- package/{components → app/components}/SLMultiSelect.vue +37 -26
- package/{components → app/components}/SLNoData.vue +16 -11
- package/app/components/SLNotification.vue +155 -0
- package/{components → app/components}/SLPageModal.vue +14 -9
- package/{components → app/components}/SLPagination.vue +45 -33
- package/{components → app/components}/SLPillCheckbox.vue +50 -42
- package/{components → app/components}/SLPillLabel.vue +43 -28
- package/{components → app/components}/SLPopupMenuButton.vue +26 -17
- package/{components → app/components}/SLProfileButton.vue +28 -20
- package/{components → app/components}/SLProjectShareItem.vue +30 -17
- package/{components → app/components}/SLRadioButton.vue +41 -33
- package/{components → app/components}/SLRadioButtonGroup.vue +28 -23
- package/app/components/SLRadioGroup.vue +221 -0
- package/{components → app/components}/SLRangeInput.vue +53 -38
- package/{components → app/components}/SLRegionsMapChart.vue +5 -4
- package/{components → app/components}/SLRightSider.vue +50 -40
- package/{components → app/components}/SLSearchInput.vue +24 -19
- package/{components → app/components}/SLSelect.vue +114 -87
- package/{components → app/components}/SLSelectAllToggle.vue +52 -37
- package/app/components/SLSidebarNav.vue +487 -0
- package/{components → app/components}/SLSidebarNavGroupItem.vue +13 -10
- package/{components → app/components}/SLSidebarNavGroupItemSection.vue +240 -179
- package/{components → app/components}/SLSidebarNavLinkItem.vue +131 -109
- package/{components → app/components}/SLSidebarNavSectionItem.vue +21 -18
- package/{components → app/components}/SLSitePage.vue +35 -24
- package/{components → app/components}/SLSkyInsightSitePage.vue +13 -8
- package/{components → app/components}/SLSortByDropdown.vue +35 -22
- package/{components → app/components}/SLSpinIcon.vue +6 -3
- package/{components → app/components}/SLStayRangeInput.vue +47 -36
- package/{components → app/components}/SLTab.vue +7 -2
- package/app/components/SLTable.vue +472 -0
- package/{components → app/components}/SLTableTooltip.vue +44 -30
- package/app/components/SLTabs.vue +528 -0
- package/{components → app/components}/SLTextInput.vue +162 -134
- package/{components → app/components}/SLTextarea.vue +40 -29
- package/{components → app/components}/SLToast.vue +19 -11
- package/{components → app/components}/SLToggleButton.vue +18 -11
- package/{components → app/components}/SLTwoLayerMultiSelect.vue +180 -85
- package/{components → app/components}/SLTwoLayerSelect.vue +47 -37
- package/{components → app/components}/SLTwoLayerSingleSelect.vue +52 -33
- package/{components → app/components}/SLWarnModal.vue +9 -7
- package/app/interface/commons.ts +7 -0
- package/{utils → app/utils}/index.ts +213 -146
- package/eslint.config.js +3 -0
- package/nuxt.config.ts +17 -14
- package/package.json +10 -9
- package/skills-lock.json +59 -0
- package/tsconfig.json +1 -6
- package/.eslintrc.cjs +0 -4
- package/app.config.ts +0 -5
- package/assets/css/layout.styl +0 -98
- package/assets/css/tailwind.css +0 -3
- package/components/SLButton.vue +0 -337
- package/components/SLLinearProgressBar.vue +0 -35
- package/components/SLNotification.vue +0 -151
- package/components/SLRadioGroup.vue +0 -209
- package/components/SLSidebarNav.vue +0 -427
- package/components/SLTable.vue +0 -455
- package/components/SLTabs.vue +0 -475
- package/interface/commons.ts +0 -7
- package/pages/index.vue +0 -15
- package/tailwind.config.js +0 -271
- /package/{assets → app/assets}/css/fonts/MEShPlus-font-icon.eot +0 -0
- /package/{assets → app/assets}/css/fonts/MEShPlus-font-icon.svg +0 -0
- /package/{assets → app/assets}/css/fonts/MEShPlus-font-icon.ttf +0 -0
- /package/{assets → app/assets}/css/fonts/MEShPlus-font-icon.woff +0 -0
- /package/{assets → app/assets}/css/icons.css +0 -0
- /package/{assets → app/assets}/images/commons/app-logo-white.png +0 -0
- /package/{assets → app/assets}/images/commons/app-logo.png +0 -0
- /package/{assets → app/assets}/images/commons/empty-box.png +0 -0
- /package/{interface → app/interface}/IDateRange.ts +0 -0
- /package/{interface → app/interface}/IHourRange.ts +0 -0
- /package/{interface → app/interface}/IInputOption.ts +0 -0
- /package/{interface → app/interface}/ILegendItem.ts +0 -0
- /package/{interface → app/interface}/IOrganization.ts +0 -0
- /package/{interface → app/interface}/IPopupMenuButton.ts +0 -0
- /package/{interface → app/interface}/IStayRange.ts +0 -0
- /package/{interface → app/interface}/ITableField.ts +0 -0
- /package/{interface → app/interface}/IWeb.ts +0 -0
- /package/{interface → app/interface}/NavConfigType.ts +0 -0
- /package/{models → app/models}/DateRange.ts +0 -0
- /package/{plugins → app/plugins}/v-calendar.ts +0 -0
- /package/{utils → app/utils}/constants.ts +0 -0
- /package/{utils → app/utils}/generateSheet.ts +0 -0
package/eslint.config.js
ADDED
package/nuxt.config.ts
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
import { dirname } from "path";
|
|
4
|
-
|
|
5
|
-
const currentDir = dirname(fileURLToPath(import.meta.url));
|
|
1
|
+
import { fileURLToPath } from "node:url";
|
|
2
|
+
import tailwindcss from "@tailwindcss/vite";
|
|
6
3
|
|
|
4
|
+
// https://nuxt.com/docs/api/configuration/nuxt-config
|
|
7
5
|
export default defineNuxtConfig({
|
|
6
|
+
devtools: { enabled: true },
|
|
7
|
+
compatibilityDate: "2026-07-28",
|
|
8
|
+
$meta: {
|
|
9
|
+
name: "skylens-ui",
|
|
10
|
+
},
|
|
8
11
|
alias: {
|
|
9
|
-
"~ui":
|
|
10
|
-
images: fileURLToPath(new URL("./assets/images", import.meta.url)),
|
|
12
|
+
"~ui": fileURLToPath(new URL("./", import.meta.url)),
|
|
11
13
|
},
|
|
12
|
-
devtools: { enabled: true },
|
|
13
14
|
runtimeConfig: {
|
|
14
15
|
public: {
|
|
15
16
|
defaultCableEndDateBeforeNow: 5,
|
|
@@ -17,11 +18,13 @@ export default defineNuxtConfig({
|
|
|
17
18
|
icoUrl: "https://skylens-mng-dev-1087511617183.asia-east1.run.app",
|
|
18
19
|
},
|
|
19
20
|
},
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
css: [
|
|
22
|
+
"~ui/app/assets/css/main.css",
|
|
23
|
+
"~ui/app/assets/css/icons.css",
|
|
24
|
+
"~ui/app/assets/css/layout.css",
|
|
25
|
+
],
|
|
26
|
+
plugins: ["~ui/app/plugins/v-calendar.ts"],
|
|
27
|
+
vite: {
|
|
28
|
+
plugins: [tailwindcss()],
|
|
26
29
|
},
|
|
27
30
|
});
|
package/package.json
CHANGED
|
@@ -1,26 +1,28 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mptw/skylens-ui",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.5.1",
|
|
5
5
|
"main": "./nuxt.config.ts",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"dev": "nuxi dev .playground",
|
|
8
|
+
"dev:prepare": "nuxt prepare .playground",
|
|
8
9
|
"build": "nuxt build .playground",
|
|
9
10
|
"generate": "nuxt generate .playground",
|
|
10
11
|
"preview": "nuxt preview .playground",
|
|
11
|
-
"lint": "eslint ."
|
|
12
|
-
"postinstall": "nuxt prepare .playground"
|
|
12
|
+
"lint": "eslint ."
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
|
-
"@nuxt/eslint
|
|
15
|
+
"@nuxt/eslint": "^1.16.0",
|
|
16
|
+
"@types/node": "^24.13.3",
|
|
16
17
|
"eslint": "^10.8.0",
|
|
17
|
-
"nuxt": "^
|
|
18
|
-
"typescript": "^
|
|
18
|
+
"nuxt": "^4.5.1",
|
|
19
|
+
"typescript": "^6.0.3",
|
|
20
|
+
"vue": "^3.5.40"
|
|
19
21
|
},
|
|
20
22
|
"dependencies": {
|
|
21
23
|
"@gtm-support/vue-gtm": "^3.2.0",
|
|
22
|
-
"@nuxtjs/tailwindcss": "^6.14.0",
|
|
23
24
|
"@popperjs/core": "^2.11.8",
|
|
25
|
+
"@tailwindcss/vite": "^4.3.3",
|
|
24
26
|
"@types/commonmark": "^0.27.10",
|
|
25
27
|
"@types/dompurify": "^3.2.0",
|
|
26
28
|
"@types/lodash-es": "^4.17.12",
|
|
@@ -37,9 +39,8 @@
|
|
|
37
39
|
"pug": "^3.0.4",
|
|
38
40
|
"rxjs": "^7.8.2",
|
|
39
41
|
"sortablejs": "^1.15.7",
|
|
40
|
-
"stylus": "^0.64.0",
|
|
41
42
|
"swiper": "^14.0.6",
|
|
42
|
-
"tailwindcss
|
|
43
|
+
"tailwindcss": "^4.3.3",
|
|
43
44
|
"v-calendar": "^3.1.2",
|
|
44
45
|
"vue": "^3.5.40",
|
|
45
46
|
"vue-3-slider-component": "^1.0.2",
|
package/skills-lock.json
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"skills": {
|
|
4
|
+
"nitro": {
|
|
5
|
+
"source": "antfu/skills",
|
|
6
|
+
"sourceType": "github",
|
|
7
|
+
"skillPath": "skills/nitro/SKILL.md",
|
|
8
|
+
"computedHash": "f8341eaf6fbdc604c2c8123a275407acea5a74ad3b0870cdd0ed2a3007e36c12"
|
|
9
|
+
},
|
|
10
|
+
"nuxt": {
|
|
11
|
+
"source": "antfu/skills",
|
|
12
|
+
"sourceType": "github",
|
|
13
|
+
"skillPath": "skills/nuxt/SKILL.md",
|
|
14
|
+
"computedHash": "96dbdbfc06bf7045aeb9a463b972d5c0b5679d6dadf196d8ef6b98dc6defed2d"
|
|
15
|
+
},
|
|
16
|
+
"tsdown": {
|
|
17
|
+
"source": "antfu/skills",
|
|
18
|
+
"sourceType": "github",
|
|
19
|
+
"skillPath": "skills/tsdown/SKILL.md",
|
|
20
|
+
"computedHash": "2183b9019058744215ab8b1261e34833653b5864da159bc022e3b9ad2f706aa5"
|
|
21
|
+
},
|
|
22
|
+
"vite": {
|
|
23
|
+
"source": "antfu/skills",
|
|
24
|
+
"sourceType": "github",
|
|
25
|
+
"skillPath": "skills/vite/SKILL.md",
|
|
26
|
+
"computedHash": "867ff66238f3152e9c494339ad08dc432dd0df5bcf5cc7a00b61a72b580eb908"
|
|
27
|
+
},
|
|
28
|
+
"vitest": {
|
|
29
|
+
"source": "antfu/skills",
|
|
30
|
+
"sourceType": "github",
|
|
31
|
+
"skillPath": "skills/vitest/SKILL.md",
|
|
32
|
+
"computedHash": "943d436114c677802426741980146c07560bf375297666b03062444f4b98a785"
|
|
33
|
+
},
|
|
34
|
+
"vue": {
|
|
35
|
+
"source": "antfu/skills",
|
|
36
|
+
"sourceType": "github",
|
|
37
|
+
"skillPath": "skills/vue/SKILL.md",
|
|
38
|
+
"computedHash": "9c241141e07e836e4f0537c63e8f929fba3767c2997250be38e699f19b75e3f2"
|
|
39
|
+
},
|
|
40
|
+
"vue-best-practices": {
|
|
41
|
+
"source": "antfu/skills",
|
|
42
|
+
"sourceType": "github",
|
|
43
|
+
"skillPath": "skills/vue-best-practices/SKILL.md",
|
|
44
|
+
"computedHash": "d7d22c8cb343583c3904692c4d1d7b50382945e433e4f6e053f4aabb9846cbc3"
|
|
45
|
+
},
|
|
46
|
+
"vue-testing-best-practices": {
|
|
47
|
+
"source": "antfu/skills",
|
|
48
|
+
"sourceType": "github",
|
|
49
|
+
"skillPath": "skills/vue-testing-best-practices/SKILL.md",
|
|
50
|
+
"computedHash": "18c7d8f42f350f927e37de055e34c97b8cfb9f79c12cf942f7f3d2a0821057b5"
|
|
51
|
+
},
|
|
52
|
+
"vueuse-functions": {
|
|
53
|
+
"source": "antfu/skills",
|
|
54
|
+
"sourceType": "github",
|
|
55
|
+
"skillPath": "skills/vueuse-functions/SKILL.md",
|
|
56
|
+
"computedHash": "5f32cd5f744671178284887c9ffc27a080e0e3316c0f7c3b22f4459c760daf49"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
package/tsconfig.json
CHANGED
package/.eslintrc.cjs
DELETED
package/app.config.ts
DELETED
package/assets/css/layout.styl
DELETED
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
body {
|
|
2
|
-
font-family: '微軟正黑體', 'Microsoft JhengHei', ui-sans-serif, system-ui,
|
|
3
|
-
-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue',
|
|
4
|
-
Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
|
|
5
|
-
'Segoe UI Symbol', 'Noto Color Emoji';
|
|
6
|
-
background: #f3f4f8;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
label
|
|
10
|
-
@apply inline-block
|
|
11
|
-
|
|
12
|
-
.vc-skylens-purple
|
|
13
|
-
--vc-accent-200 theme('colors.primary.100')
|
|
14
|
-
--vc-accent-600 theme('colors.primary.DEFAULT')
|
|
15
|
-
--vc-accent-500 theme('colors.primary.300')
|
|
16
|
-
--vc-accent-700 theme('colors.primary.600')
|
|
17
|
-
--vc-accent-900 theme('colors.primary.800')
|
|
18
|
-
|
|
19
|
-
.vc-skylens-gray
|
|
20
|
-
--vc-accent-200 theme('colors.pgray.5')
|
|
21
|
-
--vc-accent-500 theme('colors.pgray.4')
|
|
22
|
-
--vc-accent-600 theme('colors.pgray.3')
|
|
23
|
-
--vc-accent-700 theme('colors.pgray.3')
|
|
24
|
-
--vc-accent-900 theme('colors.pgray.2')
|
|
25
|
-
|
|
26
|
-
.vc-container
|
|
27
|
-
.vc-weeks
|
|
28
|
-
@apply px-0
|
|
29
|
-
|
|
30
|
-
.scrollbar-y
|
|
31
|
-
@apply absolute top-0 right-0 bottom-0 w-1 rounded-full
|
|
32
|
-
|
|
33
|
-
.indicator
|
|
34
|
-
@apply w-full h-12 bg-primary-300 rounded-full
|
|
35
|
-
|
|
36
|
-
.markdown-content
|
|
37
|
-
@apply text-base leading-relaxed
|
|
38
|
-
|
|
39
|
-
ol
|
|
40
|
-
@apply list-decimal list-inside
|
|
41
|
-
|
|
42
|
-
li
|
|
43
|
-
@apply font-bold
|
|
44
|
-
|
|
45
|
-
ul
|
|
46
|
-
@apply ml-3 list-disc list-inside
|
|
47
|
-
|
|
48
|
-
li
|
|
49
|
-
@apply font-normal
|
|
50
|
-
|
|
51
|
-
ul
|
|
52
|
-
@apply ml-5 list-none
|
|
53
|
-
|
|
54
|
-
.custom-scrollbar-y
|
|
55
|
-
@apply overflow-x-hidden overflow-y-auto
|
|
56
|
-
-webkit-overflow-scrolling touch
|
|
57
|
-
|
|
58
|
-
/* width */
|
|
59
|
-
&::-webkit-scrollbar
|
|
60
|
-
@apply w-1
|
|
61
|
-
|
|
62
|
-
/* Track */
|
|
63
|
-
&::-webkit-scrollbar-track
|
|
64
|
-
@apply bg-transparent
|
|
65
|
-
|
|
66
|
-
/* Handle */
|
|
67
|
-
&::-webkit-scrollbar-thumb
|
|
68
|
-
@apply bg-primary-300 rounded
|
|
69
|
-
|
|
70
|
-
/* Handle on hover */
|
|
71
|
-
&::-webkit-scrollbar-thumb:hover
|
|
72
|
-
@apply bg-primary-500
|
|
73
|
-
|
|
74
|
-
.custom-scrollbar-x
|
|
75
|
-
@apply overflow-x-auto overflow-y-hidden
|
|
76
|
-
-webkit-overflow-scrolling touch
|
|
77
|
-
|
|
78
|
-
/* width */
|
|
79
|
-
&::-webkit-scrollbar
|
|
80
|
-
@apply h-1
|
|
81
|
-
|
|
82
|
-
/* Track */
|
|
83
|
-
&::-webkit-scrollbar-track
|
|
84
|
-
@apply bg-transparent
|
|
85
|
-
|
|
86
|
-
/* Handle */
|
|
87
|
-
&::-webkit-scrollbar-thumb
|
|
88
|
-
@apply bg-secondary rounded
|
|
89
|
-
|
|
90
|
-
/* Handle on hover */
|
|
91
|
-
&::-webkit-scrollbar-thumb:hover
|
|
92
|
-
@apply bg-secondary
|
|
93
|
-
|
|
94
|
-
.fade-enter-active, .fade-leave-active
|
|
95
|
-
@apply transition-opacity
|
|
96
|
-
|
|
97
|
-
.fade-enter, .fade-leave-to
|
|
98
|
-
@apply opacity-0
|
package/assets/css/tailwind.css
DELETED
package/components/SLButton.vue
DELETED
|
@@ -1,337 +0,0 @@
|
|
|
1
|
-
<template lang="pug">
|
|
2
|
-
button(:type='type', :class='btnClass' :disabled="disabled")
|
|
3
|
-
.btn-content
|
|
4
|
-
slot
|
|
5
|
-
SLIcon.btn-icon(v-if='icon !== ""', :icon='icon')
|
|
6
|
-
span(v-if='title !== ""') {{ title }}
|
|
7
|
-
SLIcon.btn-icon(v-if='postIcon !== ""', :icon='postIcon')
|
|
8
|
-
.btn-loading
|
|
9
|
-
.loading
|
|
10
|
-
div
|
|
11
|
-
div
|
|
12
|
-
div
|
|
13
|
-
div
|
|
14
|
-
</template>
|
|
15
|
-
|
|
16
|
-
<script lang="ts">
|
|
17
|
-
import type { PropType } from "vue";
|
|
18
|
-
|
|
19
|
-
export default defineComponent({
|
|
20
|
-
name: "SLButton",
|
|
21
|
-
components: {},
|
|
22
|
-
props: {
|
|
23
|
-
size: {
|
|
24
|
-
type: String,
|
|
25
|
-
default: "",
|
|
26
|
-
validator: (val: string) => ["", "lg", "md", "sm", "xs", 'xxs'].includes(val),
|
|
27
|
-
},
|
|
28
|
-
color: {
|
|
29
|
-
type: String,
|
|
30
|
-
default: "",
|
|
31
|
-
validator: (val: string) =>
|
|
32
|
-
[
|
|
33
|
-
"",
|
|
34
|
-
"white",
|
|
35
|
-
"primary",
|
|
36
|
-
"primary-600",
|
|
37
|
-
"highlight-500",
|
|
38
|
-
"third",
|
|
39
|
-
"danger",
|
|
40
|
-
"pgray-5",
|
|
41
|
-
"pgray-2",
|
|
42
|
-
"secondary",
|
|
43
|
-
"secondary-200",
|
|
44
|
-
"secondary-600",
|
|
45
|
-
"blue-1",
|
|
46
|
-
"insight-title-line",
|
|
47
|
-
].includes(val),
|
|
48
|
-
},
|
|
49
|
-
variant: {
|
|
50
|
-
type: String,
|
|
51
|
-
default: "",
|
|
52
|
-
validator: (val: string) => ["", "outline", "icon"].includes(val),
|
|
53
|
-
},
|
|
54
|
-
disabled: {
|
|
55
|
-
type: Boolean,
|
|
56
|
-
default: false,
|
|
57
|
-
},
|
|
58
|
-
icon: {
|
|
59
|
-
type: String,
|
|
60
|
-
default: "",
|
|
61
|
-
},
|
|
62
|
-
postIcon: {
|
|
63
|
-
type: String,
|
|
64
|
-
default: "",
|
|
65
|
-
},
|
|
66
|
-
title: {
|
|
67
|
-
type: String,
|
|
68
|
-
default: "",
|
|
69
|
-
},
|
|
70
|
-
type: {
|
|
71
|
-
type: String as PropType<"submit" | "reset" | "button">,
|
|
72
|
-
default: "button",
|
|
73
|
-
validator: (val: string) => ["submit", "reset", "button"].includes(val),
|
|
74
|
-
},
|
|
75
|
-
loading: {
|
|
76
|
-
type: Boolean,
|
|
77
|
-
default: false,
|
|
78
|
-
},
|
|
79
|
-
},
|
|
80
|
-
setup(props, { emit }) {
|
|
81
|
-
const { size, color, variant, disabled, loading } = toRefs(props);
|
|
82
|
-
|
|
83
|
-
const btnClass = computed(() => {
|
|
84
|
-
const btnClass = ["btn"];
|
|
85
|
-
if (size.value !== "") {
|
|
86
|
-
btnClass.push(`btn-${size.value}`);
|
|
87
|
-
}
|
|
88
|
-
if (color.value !== "") {
|
|
89
|
-
btnClass.push(`btn-${color.value}`);
|
|
90
|
-
}
|
|
91
|
-
if (variant.value !== "") {
|
|
92
|
-
btnClass.push(`btn-${variant.value}`);
|
|
93
|
-
}
|
|
94
|
-
if (disabled.value) {
|
|
95
|
-
btnClass.push("btn-disabled");
|
|
96
|
-
}
|
|
97
|
-
if (loading.value) {
|
|
98
|
-
btnClass.push("loading");
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
return btnClass.join(" ");
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
return {
|
|
105
|
-
btnClass,
|
|
106
|
-
};
|
|
107
|
-
},
|
|
108
|
-
});
|
|
109
|
-
</script>
|
|
110
|
-
|
|
111
|
-
<style lang="stylus">
|
|
112
|
-
.btn
|
|
113
|
-
@apply relative inline-flex items-center justify-center s("p-1.75") border border-transparent rounded bg-transparent text-base leading-normal s("focus:outline-none")
|
|
114
|
-
|
|
115
|
-
&.btn-lg
|
|
116
|
-
@apply s("px-7.75")
|
|
117
|
-
|
|
118
|
-
&.btn-md
|
|
119
|
-
@apply s("px-3.75")
|
|
120
|
-
|
|
121
|
-
&.btn-sm
|
|
122
|
-
@apply s("py-0.75") s("px-1.75")
|
|
123
|
-
|
|
124
|
-
.btn-content
|
|
125
|
-
@apply space-x-1
|
|
126
|
-
|
|
127
|
-
&.btn-xs
|
|
128
|
-
@apply s("py-0.75") s("px-1.75") text-xs
|
|
129
|
-
|
|
130
|
-
.btn-content
|
|
131
|
-
@apply space-x-1
|
|
132
|
-
|
|
133
|
-
&.btn-xxs
|
|
134
|
-
@apply s("p-0.75") text-sm
|
|
135
|
-
|
|
136
|
-
.btn-content
|
|
137
|
-
@apply space-x-1
|
|
138
|
-
|
|
139
|
-
.icon.btn-icon
|
|
140
|
-
@apply text-sm leading-none
|
|
141
|
-
|
|
142
|
-
&-white
|
|
143
|
-
@apply bg-white border-white text-pgray-2 s("hover:bg-white") s("hover:border-white")
|
|
144
|
-
|
|
145
|
-
&.btn-outline
|
|
146
|
-
@apply text-pgray-2 s("hover:text-pgray-2")
|
|
147
|
-
|
|
148
|
-
.btn-loading
|
|
149
|
-
.loading
|
|
150
|
-
div
|
|
151
|
-
border-color white transparent transparent transparent
|
|
152
|
-
|
|
153
|
-
&-primary
|
|
154
|
-
@apply bg-primary border-primary text-white s("hover:bg-primary-800") s("hover:border-primary-800")
|
|
155
|
-
|
|
156
|
-
&.btn-outline
|
|
157
|
-
@apply text-primary s("hover:text-primary-800")
|
|
158
|
-
|
|
159
|
-
.btn-loading
|
|
160
|
-
.loading
|
|
161
|
-
div
|
|
162
|
-
border-color theme('colors.primary.DEFAULT') transparent transparent transparent
|
|
163
|
-
|
|
164
|
-
&-primary-600
|
|
165
|
-
@apply bg-primary-600 border-primary-600 text-white s("hover:bg-primary") s("hover:border-primary")
|
|
166
|
-
|
|
167
|
-
&.btn-outline
|
|
168
|
-
@apply text-primary-600 s("hover:text-primary")
|
|
169
|
-
|
|
170
|
-
.btn-loading
|
|
171
|
-
.loading
|
|
172
|
-
div
|
|
173
|
-
border-color theme('colors.primary.600') transparent transparent transparent
|
|
174
|
-
|
|
175
|
-
&-highlight-500
|
|
176
|
-
@apply bg-highlight-500 border-highlight-500 text-white s("hover:bg-highlight-400") s("hover:text-white") s("hover:border-highlight-400")
|
|
177
|
-
|
|
178
|
-
&.btn-outline
|
|
179
|
-
@apply text-highlight-500 s("hover:text-highlight-400")
|
|
180
|
-
|
|
181
|
-
.btn-loading
|
|
182
|
-
.loading
|
|
183
|
-
div
|
|
184
|
-
border-color theme('colors.highlight.400') transparent transparent transparent
|
|
185
|
-
|
|
186
|
-
&-third
|
|
187
|
-
@apply bg-third border-third text-white s("hover:bg-third-600") s("hover:text-white") s("hover:border-third-600")
|
|
188
|
-
|
|
189
|
-
&.btn-outline
|
|
190
|
-
@apply text-third s("hover:text-third-600")
|
|
191
|
-
|
|
192
|
-
.btn-loading
|
|
193
|
-
.loading
|
|
194
|
-
div
|
|
195
|
-
border-color theme('colors.third.600') transparent transparent transparent
|
|
196
|
-
|
|
197
|
-
&-danger
|
|
198
|
-
@apply bg-danger border-danger text-white s("hover:bg-danger-light") s("hover:border-danger-light")
|
|
199
|
-
|
|
200
|
-
&.btn-outline
|
|
201
|
-
@apply text-danger s("hover:text-danger-light")
|
|
202
|
-
|
|
203
|
-
.btn-loading
|
|
204
|
-
.loading
|
|
205
|
-
div
|
|
206
|
-
border-color theme('colors.danger.light') transparent transparent transparent
|
|
207
|
-
|
|
208
|
-
&-pgray-5
|
|
209
|
-
@apply bg-pgray-5 border-pgray-5 text-pgray-2 s("hover:bg-pgray-4.5") s("hover:border-pgray-4.5")
|
|
210
|
-
|
|
211
|
-
&.btn-outline
|
|
212
|
-
@apply text-pgray-5 s("hover:text-pgray-4.5")
|
|
213
|
-
|
|
214
|
-
.btn-loading
|
|
215
|
-
.loading
|
|
216
|
-
div
|
|
217
|
-
border-color theme('colors.pgray[4.5]') transparent transparent transparent
|
|
218
|
-
|
|
219
|
-
&-pgray-2
|
|
220
|
-
@apply bg-pgray-2 border-pgray-2 text-white s("hover:bg-pgray-3") s("hover:border-pgray-3")
|
|
221
|
-
|
|
222
|
-
&.btn-outline
|
|
223
|
-
@apply text-pgray-2 s("hover:text-pgray-3")
|
|
224
|
-
|
|
225
|
-
.btn-loading
|
|
226
|
-
.loading
|
|
227
|
-
div
|
|
228
|
-
border-color theme('colors.pgray.3') transparent transparent transparent
|
|
229
|
-
|
|
230
|
-
&-secondary
|
|
231
|
-
@apply bg-secondary border-secondary text-white s("hover:bg-secondary-800") s("hover:border-secondary-800")
|
|
232
|
-
|
|
233
|
-
&.btn-outline
|
|
234
|
-
@apply text-secondary s("hover:text-secondary-800")
|
|
235
|
-
|
|
236
|
-
.btn-loading
|
|
237
|
-
.loading
|
|
238
|
-
div
|
|
239
|
-
border-color theme('colors.secondary.500') transparent transparent transparent
|
|
240
|
-
|
|
241
|
-
&-secondary-200
|
|
242
|
-
@apply bg-secondary-200 border-secondary-200 text-secondary s("hover:bg-secondary") s("hover:border-secondary") s("hover:text-white")
|
|
243
|
-
|
|
244
|
-
&.btn-outline
|
|
245
|
-
@apply text-secondary-200 s("hover:text-secondary")
|
|
246
|
-
|
|
247
|
-
.btn-loading
|
|
248
|
-
.loading
|
|
249
|
-
div
|
|
250
|
-
border-color theme('colors.secondary.500') transparent transparent transparent
|
|
251
|
-
|
|
252
|
-
&-secondary-600
|
|
253
|
-
@apply bg-secondary-600 border-secondary-600 text-white s("hover:bg-secondary") s("hover:border-secondary")
|
|
254
|
-
|
|
255
|
-
&.btn-outline
|
|
256
|
-
@apply text-secondary-600 s("hover:text-secondary")
|
|
257
|
-
|
|
258
|
-
.btn-loading
|
|
259
|
-
.loading
|
|
260
|
-
div
|
|
261
|
-
border-color theme('colors.secondary.500') transparent transparent transparent
|
|
262
|
-
|
|
263
|
-
&-blue-1
|
|
264
|
-
@apply bg-secondary border-secondary text-white s("hover:bg-blue-1") s("hover:border-blue-1")
|
|
265
|
-
|
|
266
|
-
&.btn-outline
|
|
267
|
-
@apply text-blue-1 s("hover:text-blue-1")
|
|
268
|
-
|
|
269
|
-
.btn-loading
|
|
270
|
-
.loading
|
|
271
|
-
div
|
|
272
|
-
border-color theme('colors.blue.1') transparent transparent transparent
|
|
273
|
-
|
|
274
|
-
&-insight-title-line
|
|
275
|
-
@apply bg-insight-title-line border-insight-title-line text-white s("hover:bg-insight-title-line") s("hover:border-insight-title-line")
|
|
276
|
-
|
|
277
|
-
&.btn-outline
|
|
278
|
-
@apply text-insight-title s("hover:text-insight-title")
|
|
279
|
-
|
|
280
|
-
.btn-loading
|
|
281
|
-
.loading
|
|
282
|
-
div
|
|
283
|
-
border-color theme('colors.blue.1') transparent transparent transparent
|
|
284
|
-
|
|
285
|
-
&-outline
|
|
286
|
-
@apply bg-transparent border s("hover:bg-white")
|
|
287
|
-
|
|
288
|
-
&-disabled
|
|
289
|
-
@apply bg-pgray-5 border-pgray-5 text-white cursor-default s("hover:bg-pgray-5") s("hover:border-pgray-5") s("hover:text-white")
|
|
290
|
-
|
|
291
|
-
&.btn-outline
|
|
292
|
-
@apply bg-white border-pgray-5 text-pgray-5 s("hover:bg-white") s("hover:border-pgray-5") s("hover:text-pgray-5")
|
|
293
|
-
|
|
294
|
-
&.btn-icon
|
|
295
|
-
@apply bg-transparent border-transparent text-pgray-5 s("hover:bg-transparent") s("hover:border-transparent") s("hover:text-pgray-5")
|
|
296
|
-
|
|
297
|
-
&.loading
|
|
298
|
-
@apply bg-primary-200 border-primary-200 cursor-default
|
|
299
|
-
|
|
300
|
-
.btn-content
|
|
301
|
-
@apply opacity-0
|
|
302
|
-
|
|
303
|
-
.btn-loading
|
|
304
|
-
@apply block
|
|
305
|
-
|
|
306
|
-
.btn-content
|
|
307
|
-
@apply inline-flex items-center space-x-1
|
|
308
|
-
|
|
309
|
-
.icon.btn-icon
|
|
310
|
-
@apply inline-flex text-xs leading-none
|
|
311
|
-
|
|
312
|
-
.btn-loading
|
|
313
|
-
@apply absolute s('top-1/2') s('left-1/2') w-4 h-4 s('-translate-x-1/2') s('-translate-y-1/2') pointer-events-none hidden
|
|
314
|
-
|
|
315
|
-
.loading
|
|
316
|
-
@apply relative inline-block w-4 h-4
|
|
317
|
-
|
|
318
|
-
div
|
|
319
|
-
@apply absolute block w-4 h-4 border-2 rounded-full
|
|
320
|
-
animation loading 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite
|
|
321
|
-
|
|
322
|
-
&:nth-child(1)
|
|
323
|
-
animation-delay -0.45s
|
|
324
|
-
|
|
325
|
-
&:nth-child(2)
|
|
326
|
-
animation-delay -0.3s
|
|
327
|
-
|
|
328
|
-
&:nth-child(3)
|
|
329
|
-
animation-delay -0.15s
|
|
330
|
-
|
|
331
|
-
@keyframes loading
|
|
332
|
-
0%
|
|
333
|
-
transform rotate(0deg)
|
|
334
|
-
|
|
335
|
-
100%
|
|
336
|
-
transform rotate(360deg)
|
|
337
|
-
</style>
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
<template lang="pug">
|
|
2
|
-
.linear-progress-bar
|
|
3
|
-
.linear-progress-bar-value
|
|
4
|
-
</template>
|
|
5
|
-
|
|
6
|
-
<script lang="ts">
|
|
7
|
-
export default defineComponent({
|
|
8
|
-
name: "SLLinearProgressBar",
|
|
9
|
-
});
|
|
10
|
-
</script>
|
|
11
|
-
|
|
12
|
-
<style lang="stylus" scoped>
|
|
13
|
-
.linear-progress-bar
|
|
14
|
-
@apply w-full h-2 overflow-hidden
|
|
15
|
-
background-color #D3D3D3
|
|
16
|
-
border-radius 1px
|
|
17
|
-
|
|
18
|
-
&-value
|
|
19
|
-
@apply w-full h-full
|
|
20
|
-
background linear-gradient(270deg, rgba(211, 211, 211, 0.62) 0.08%, #E1E1E1 46.69%, rgba(211, 211, 211, 0.62) 100%)
|
|
21
|
-
animation indeterminateAnimation 1s infinite linear
|
|
22
|
-
transform-origin 0% 50%
|
|
23
|
-
|
|
24
|
-
@keyframes indeterminateAnimation {
|
|
25
|
-
0% {
|
|
26
|
-
transform translateX(0) scaleX(0)
|
|
27
|
-
}
|
|
28
|
-
40% {
|
|
29
|
-
transform translateX(0) scaleX(0.4)
|
|
30
|
-
}
|
|
31
|
-
100% {
|
|
32
|
-
transform translateX(100%) scaleX(0.5)
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
</style>
|