@globalbrain/sefirot 3.50.0 → 4.0.0-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config/nuxt.d.ts +4 -0
- package/config/nuxt.js +31 -0
- package/config/vite.d.ts +8 -0
- package/config/vite.js +69 -0
- package/lib/components/SActionList.vue +0 -1
- package/lib/components/SActionListItem.vue +3 -11
- package/lib/components/SAlert.vue +8 -13
- package/lib/components/SButton.vue +9 -10
- package/lib/components/SCardBlock.vue +0 -6
- package/lib/components/SControlActionBarClose.vue +1 -1
- package/lib/components/SControlActionBarCollapse.vue +2 -2
- package/lib/components/SControlInputSearch.vue +2 -2
- package/lib/components/SDescAvatar.vue +1 -2
- package/lib/components/SDescFile.vue +4 -6
- package/lib/components/SDescPill.vue +1 -2
- package/lib/components/SDescText.vue +1 -1
- package/lib/components/SDropdownSectionDateRange.vue +2 -2
- package/lib/components/SDropdownSectionDateRangeDateFromTo.vue +2 -2
- package/lib/components/SDropdownSectionDateRangeYear.vue +2 -2
- package/lib/components/SDropdownSectionDateRangeYearHalf.vue +2 -2
- package/lib/components/SDropdownSectionDateRangeYearQuarter.vue +2 -2
- package/lib/components/SDropdownSectionFilter.vue +4 -6
- package/lib/components/SIndicator.vue +10 -16
- package/lib/components/SInputAddon.vue +6 -8
- package/lib/components/SInputBase.vue +6 -8
- package/lib/components/SInputCheckbox.vue +7 -11
- package/lib/components/SInputCheckboxes.vue +3 -4
- package/lib/components/SInputDate.vue +3 -4
- package/lib/components/SInputDropdown.vue +10 -13
- package/lib/components/SInputDropdownItemAvatar.vue +2 -3
- package/lib/components/SInputDropdownItemText.vue +2 -3
- package/lib/components/SInputFile.vue +3 -4
- package/lib/components/SInputHMS.vue +4 -5
- package/lib/components/SInputImage.vue +5 -7
- package/lib/components/SInputNumber.vue +10 -11
- package/lib/components/SInputRadio.vue +3 -4
- package/lib/components/SInputRadios.vue +3 -4
- package/lib/components/SInputSegments.vue +3 -4
- package/lib/components/SInputSelect.vue +7 -9
- package/lib/components/SInputSwitch.vue +3 -4
- package/lib/components/SInputSwitches.vue +3 -4
- package/lib/components/SInputText.vue +7 -9
- package/lib/components/SInputTextarea.vue +3 -4
- package/lib/components/SInputYMD.vue +4 -5
- package/lib/components/SLink.vue +1 -1
- package/lib/components/SLocalNavMenu.vue +3 -4
- package/lib/components/SLoginPage.vue +3 -3
- package/lib/components/SLoginPagePasswordDialog.vue +4 -4
- package/lib/components/SPagination.vue +2 -2
- package/lib/components/SPill.vue +1 -5
- package/lib/components/SSnackbar.vue +2 -3
- package/lib/components/SStep.vue +4 -5
- package/lib/components/STable.vue +1 -2
- package/lib/components/STableCell.vue +5 -13
- package/lib/components/STableCellAvatar.vue +10 -27
- package/lib/components/STableCellAvatars.vue +6 -19
- package/lib/components/STableCellDay.vue +4 -11
- package/lib/components/STableCellNumber.vue +8 -9
- package/lib/components/STableCellPill.vue +5 -33
- package/lib/components/STableCellPills.vue +4 -14
- package/lib/components/STableCellState.vue +3 -3
- package/lib/components/STableCellText.vue +22 -50
- package/lib/components/STableColumn.vue +4 -6
- package/lib/components/STableFooter.vue +4 -5
- package/lib/components/STableHeader.vue +2 -19
- package/lib/components/STableHeaderMenu.vue +1 -2
- package/lib/components/STableHeaderMenuItem.vue +2 -3
- package/lib/components/STableItem.vue +1 -1
- package/lib/composables/Data.ts +8 -102
- package/lib/composables/Error.ts +3 -3
- package/lib/composables/Table.ts +17 -22
- package/lib/composables/Utils.ts +2 -2
- package/lib/composables/Validation.ts +76 -14
- package/lib/http/Http.ts +27 -10
- package/lib/mixins/Card.ts +0 -27
- package/lib/mixins/Fundamental.ts +0 -3
- package/lib/support/Day.ts +5 -5
- package/lib/support/Utils.ts +35 -14
- package/lib/validation/validators/maxLength.ts +2 -2
- package/lib/validation/validators/maxValue.ts +2 -2
- package/lib/validation/validators/minLength.ts +2 -2
- package/lib/validation/validators/minValue.ts +2 -2
- package/lib/validation/validators/required.ts +4 -4
- package/package.json +40 -40
- package/lib/components/SCardFooter.vue +0 -22
- package/lib/components/SCardFooterAction.vue +0 -31
- package/lib/components/SCardFooterActions.vue +0 -18
- package/lib/components/SCardHeader.vue +0 -15
- package/lib/components/SCardHeaderAction.vue +0 -28
- package/lib/components/SCardHeaderActionClose.vue +0 -27
- package/lib/components/SCardHeaderActionCollapse.vue +0 -47
- package/lib/components/SCardHeaderActions.vue +0 -13
- package/lib/components/SCardHeaderTitle.vue +0 -29
- package/lib/components/SIcon.vue +0 -13
- package/lib/components/SSheet.vue +0 -87
- package/lib/components/SSheetFooter.vue +0 -16
- package/lib/components/SSheetFooterAction.vue +0 -34
- package/lib/components/SSheetFooterActions.vue +0 -14
- package/lib/components/SSheetForm.vue +0 -15
- package/lib/components/SSheetMedium.vue +0 -72
- package/lib/components/SSheetTitle.vue +0 -13
- package/lib/components/STableHeaderActions.vue +0 -20
- package/lib/composables/D.ts +0 -21
- package/lib/composables/Form.ts +0 -109
- package/lib/composables/V.ts +0 -97
- package/lib/mixins/Sheet.ts +0 -30
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { isNumber, isString } from '../../support/Utils'
|
|
1
|
+
import { isDate, isNumber, isString } from '../../support/Utils'
|
|
2
2
|
|
|
3
3
|
export function minValue(value: unknown, min: number) {
|
|
4
|
-
if (isNumber(value) || isString(value) || value
|
|
4
|
+
if (isNumber(value) || isString(value) || isDate(value)) {
|
|
5
5
|
return +value >= min
|
|
6
6
|
}
|
|
7
7
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isDate, isString } from '../../support/Utils'
|
|
2
2
|
|
|
3
3
|
export function required(value: unknown): boolean {
|
|
4
4
|
if (isString(value)) {
|
|
@@ -9,11 +9,11 @@ export function required(value: unknown): boolean {
|
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
export function _required(value: unknown): boolean {
|
|
12
|
-
if (isArray(value)) {
|
|
12
|
+
if (Array.isArray(value)) {
|
|
13
13
|
return !!value.length
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
if (
|
|
16
|
+
if (value == null) {
|
|
17
17
|
return false
|
|
18
18
|
}
|
|
19
19
|
|
|
@@ -21,7 +21,7 @@ export function _required(value: unknown): boolean {
|
|
|
21
21
|
return true
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
if (value
|
|
24
|
+
if (isDate(value)) {
|
|
25
25
|
return !Number.isNaN(value.getTime())
|
|
26
26
|
}
|
|
27
27
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@globalbrain/sefirot",
|
|
3
|
-
"
|
|
4
|
-
"
|
|
3
|
+
"type": "module",
|
|
4
|
+
"version": "4.0.0-0",
|
|
5
|
+
"packageManager": "pnpm@9.5.0",
|
|
5
6
|
"description": "Vue Components for Global Brain Design System.",
|
|
6
7
|
"author": "Kia Ishii <ka.ishii@globalbrains.com>",
|
|
7
8
|
"license": "MIT",
|
|
@@ -18,7 +19,8 @@
|
|
|
18
19
|
"vue component"
|
|
19
20
|
],
|
|
20
21
|
"files": [
|
|
21
|
-
"lib"
|
|
22
|
+
"lib",
|
|
23
|
+
"config"
|
|
22
24
|
],
|
|
23
25
|
"scripts": {
|
|
24
26
|
"docs": "pnpm docs:dev",
|
|
@@ -40,81 +42,79 @@
|
|
|
40
42
|
"release": "release-it"
|
|
41
43
|
},
|
|
42
44
|
"peerDependencies": {
|
|
43
|
-
"@iconify-
|
|
44
|
-
"@iconify-
|
|
45
|
-
"@iconify/vue": "^4.1.2",
|
|
45
|
+
"@iconify-json/ph": "^1.1.13",
|
|
46
|
+
"@iconify-json/ri": "^1.1.21",
|
|
46
47
|
"@types/body-scroll-lock": "^3.1.2",
|
|
47
48
|
"@types/lodash-es": "^4.17.12",
|
|
48
49
|
"@types/markdown-it": "^14.1.1",
|
|
49
|
-
"@vue/reactivity": "^3.4.
|
|
50
|
-
"@vue/runtime-core": "^3.4.27",
|
|
50
|
+
"@vue/reactivity": "^3.4.33",
|
|
51
51
|
"@vuelidate/core": "^2.0.3",
|
|
52
52
|
"@vuelidate/validators": "^2.0.4",
|
|
53
|
-
"@vueuse/core": "^10.
|
|
53
|
+
"@vueuse/core": "^10.11.0",
|
|
54
54
|
"body-scroll-lock": "4.0.0-beta.0",
|
|
55
|
-
"dayjs": "^1.11.
|
|
55
|
+
"dayjs": "^1.11.12",
|
|
56
56
|
"fuse.js": "^7.0.0",
|
|
57
57
|
"lodash-es": "^4.17.21",
|
|
58
58
|
"markdown-it": "^14.1.0",
|
|
59
59
|
"normalize.css": "^8.0.1",
|
|
60
60
|
"pinia": "^2.1.7",
|
|
61
|
-
"postcss": "^8.4.
|
|
62
|
-
"postcss-nested": "^6.0
|
|
61
|
+
"postcss": "^8.4.39",
|
|
62
|
+
"postcss-nested": "^6.2.0",
|
|
63
|
+
"unplugin-icons": "^0.19.0",
|
|
63
64
|
"v-calendar": "^3.1.2",
|
|
64
|
-
"vue": "^3.4.
|
|
65
|
-
"vue-router": "^4.
|
|
65
|
+
"vue": "^3.4.33",
|
|
66
|
+
"vue-router": "^4.4.0"
|
|
66
67
|
},
|
|
67
68
|
"dependencies": {
|
|
68
|
-
"@sentry/browser": "^8.
|
|
69
|
+
"@sentry/browser": "^8.19.0",
|
|
69
70
|
"@tanstack/vue-virtual": "3.0.0-beta.62",
|
|
70
|
-
"@tinyhttp/content-disposition": "^2.2.
|
|
71
|
-
"@tinyhttp/cookie": "^2.1.
|
|
71
|
+
"@tinyhttp/content-disposition": "^2.2.1",
|
|
72
|
+
"@tinyhttp/cookie": "^2.1.1",
|
|
72
73
|
"@types/file-saver": "^2.0.7",
|
|
73
74
|
"@types/qs": "^6.9.15",
|
|
74
75
|
"file-saver": "^2.0.5",
|
|
75
76
|
"ofetch": "^1.3.4",
|
|
76
|
-
"qs": "^6.12.
|
|
77
|
+
"qs": "^6.12.3"
|
|
77
78
|
},
|
|
78
79
|
"devDependencies": {
|
|
79
80
|
"@globalbrain/eslint-config": "^1.6.0",
|
|
80
81
|
"@histoire/plugin-vue": "0.16.5",
|
|
81
|
-
"@iconify-
|
|
82
|
-
"@iconify-
|
|
83
|
-
"@iconify/vue": "^4.1.2",
|
|
82
|
+
"@iconify-json/ph": "^1.1.13",
|
|
83
|
+
"@iconify-json/ri": "^1.1.21",
|
|
84
84
|
"@release-it/conventional-changelog": "^8.0.1",
|
|
85
85
|
"@types/body-scroll-lock": "^3.1.2",
|
|
86
86
|
"@types/lodash-es": "^4.17.12",
|
|
87
87
|
"@types/markdown-it": "^14.1.1",
|
|
88
|
-
"@types/node": "^20.
|
|
89
|
-
"@vitejs/plugin-vue": "^5.0.
|
|
90
|
-
"@vitest/coverage-v8": "^
|
|
91
|
-
"@vue/reactivity": "^3.4.
|
|
92
|
-
"@vue/runtime-core": "^3.4.27",
|
|
88
|
+
"@types/node": "^20.14.11",
|
|
89
|
+
"@vitejs/plugin-vue": "^5.0.5",
|
|
90
|
+
"@vitest/coverage-v8": "^2.0.3",
|
|
91
|
+
"@vue/reactivity": "^3.4.33",
|
|
93
92
|
"@vue/test-utils": "^2.4.6",
|
|
94
93
|
"@vuelidate/core": "^2.0.3",
|
|
95
94
|
"@vuelidate/validators": "^2.0.4",
|
|
96
|
-
"@vueuse/core": "^10.
|
|
95
|
+
"@vueuse/core": "^10.11.0",
|
|
97
96
|
"body-scroll-lock": "4.0.0-beta.0",
|
|
98
|
-
"dayjs": "^1.11.
|
|
99
|
-
"eslint": "
|
|
97
|
+
"dayjs": "^1.11.12",
|
|
98
|
+
"eslint": "8.57.0",
|
|
100
99
|
"fuse.js": "^7.0.0",
|
|
101
|
-
"happy-dom": "^14.
|
|
100
|
+
"happy-dom": "^14.12.3",
|
|
102
101
|
"histoire": "0.16.5",
|
|
103
102
|
"lodash-es": "^4.17.21",
|
|
104
103
|
"markdown-it": "^14.1.0",
|
|
105
104
|
"normalize.css": "^8.0.1",
|
|
106
105
|
"pinia": "^2.1.7",
|
|
107
|
-
"postcss": "^8.4.
|
|
108
|
-
"postcss-nested": "^6.0
|
|
106
|
+
"postcss": "^8.4.39",
|
|
107
|
+
"postcss-nested": "^6.2.0",
|
|
109
108
|
"punycode": "^2.3.1",
|
|
110
|
-
"release-it": "^17.
|
|
111
|
-
"typescript": "~5.
|
|
109
|
+
"release-it": "^17.6.0",
|
|
110
|
+
"typescript": "~5.5.3",
|
|
111
|
+
"unplugin-icons": "npm:@globalbrain/unplugin-icons@^0.19.1",
|
|
112
112
|
"v-calendar": "^3.1.2",
|
|
113
|
-
"vite": "^5.
|
|
114
|
-
"vitepress": "^1.1
|
|
115
|
-
"vitest": "^
|
|
116
|
-
"vue": "^3.4.
|
|
117
|
-
"vue-router": "^4.
|
|
118
|
-
"vue-tsc": "^
|
|
113
|
+
"vite": "^5.3.4",
|
|
114
|
+
"vitepress": "^1.3.1",
|
|
115
|
+
"vitest": "^2.0.3",
|
|
116
|
+
"vue": "^3.4.33",
|
|
117
|
+
"vue-router": "^4.4.0",
|
|
118
|
+
"vue-tsc": "^2.0.26"
|
|
119
119
|
}
|
|
120
120
|
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
export type Space = 'compact' | 'wide' | 'xwide'
|
|
3
|
-
|
|
4
|
-
defineProps<{
|
|
5
|
-
space?: Space
|
|
6
|
-
}>()
|
|
7
|
-
</script>
|
|
8
|
-
|
|
9
|
-
<template>
|
|
10
|
-
<div class="SCardFooter" :class="[space ?? 'compact']">
|
|
11
|
-
<slot />
|
|
12
|
-
</div>
|
|
13
|
-
</template>
|
|
14
|
-
|
|
15
|
-
<style scoped lang="postcss">
|
|
16
|
-
.SCardFooter {
|
|
17
|
-
display: flex;
|
|
18
|
-
align-items: center;
|
|
19
|
-
border-radius: 0 0 5px 5px;
|
|
20
|
-
background-color: var(--c-bg-elv-3);
|
|
21
|
-
}
|
|
22
|
-
</style>
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
import SButton, { type Mode, type Tooltip } from './SButton.vue'
|
|
3
|
-
|
|
4
|
-
defineProps<{
|
|
5
|
-
mode?: Mode
|
|
6
|
-
label?: string
|
|
7
|
-
labelMode?: Mode
|
|
8
|
-
loading?: boolean
|
|
9
|
-
disabled?: boolean
|
|
10
|
-
tooltip?: string | Tooltip
|
|
11
|
-
}>()
|
|
12
|
-
|
|
13
|
-
defineEmits<{
|
|
14
|
-
(e: 'click'): void
|
|
15
|
-
}>()
|
|
16
|
-
</script>
|
|
17
|
-
|
|
18
|
-
<template>
|
|
19
|
-
<div class="SCardFooterAction">
|
|
20
|
-
<SButton
|
|
21
|
-
size="medium"
|
|
22
|
-
:mode="mode"
|
|
23
|
-
:label="label"
|
|
24
|
-
:label-mode="labelMode"
|
|
25
|
-
:loading="loading"
|
|
26
|
-
:disabled="disabled"
|
|
27
|
-
:tooltip="tooltip"
|
|
28
|
-
@click="$emit('click')"
|
|
29
|
-
/>
|
|
30
|
-
</div>
|
|
31
|
-
</template>
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="SCardFooterActions">
|
|
3
|
-
<slot />
|
|
4
|
-
</div>
|
|
5
|
-
</template>
|
|
6
|
-
|
|
7
|
-
<style scoped lang="postcss">
|
|
8
|
-
.SCardFooterActions {
|
|
9
|
-
display: flex;
|
|
10
|
-
justify-content: flex-end;
|
|
11
|
-
flex-grow: 1;
|
|
12
|
-
gap: 12px;
|
|
13
|
-
|
|
14
|
-
.SCardFooter.compact > & { padding: 12px 24px; }
|
|
15
|
-
.SCardFooter.wide > & { padding: 16px 32px; }
|
|
16
|
-
.SCardFooter.xwide > & { padding: 24px 48px; }
|
|
17
|
-
}
|
|
18
|
-
</style>
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="SCardHeader">
|
|
3
|
-
<slot />
|
|
4
|
-
</div>
|
|
5
|
-
</template>
|
|
6
|
-
|
|
7
|
-
<style scoped lang="postcss">
|
|
8
|
-
.SCardHeader {
|
|
9
|
-
display: flex;
|
|
10
|
-
align-items: center;
|
|
11
|
-
border-radius: 5px 5px 0 0;
|
|
12
|
-
height: 48px;
|
|
13
|
-
background-color: var(--c-bg-elv-4);
|
|
14
|
-
}
|
|
15
|
-
</style>
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
import { type IconifyIcon } from '@iconify/vue/dist/offline'
|
|
3
|
-
import SButton, { type Tooltip } from './SButton.vue'
|
|
4
|
-
|
|
5
|
-
defineProps<{
|
|
6
|
-
icon: IconifyIcon
|
|
7
|
-
disabled?: boolean
|
|
8
|
-
tooltip?: string | Tooltip
|
|
9
|
-
}>()
|
|
10
|
-
|
|
11
|
-
defineEmits<{
|
|
12
|
-
(e: 'click'): void
|
|
13
|
-
}>()
|
|
14
|
-
</script>
|
|
15
|
-
|
|
16
|
-
<template>
|
|
17
|
-
<div class="SCardHeaderAction">
|
|
18
|
-
<SButton
|
|
19
|
-
type="text"
|
|
20
|
-
mode="mute"
|
|
21
|
-
size="small"
|
|
22
|
-
:icon="icon"
|
|
23
|
-
:disabled="disabled"
|
|
24
|
-
:tooltip="tooltip"
|
|
25
|
-
@click="$emit('click')"
|
|
26
|
-
/>
|
|
27
|
-
</div>
|
|
28
|
-
</template>
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
import IconX from '@iconify-icons/ph/x-bold'
|
|
3
|
-
import SButton, { type Tooltip } from './SButton.vue'
|
|
4
|
-
|
|
5
|
-
defineProps<{
|
|
6
|
-
disabled?: boolean
|
|
7
|
-
tooltip?: string | Tooltip
|
|
8
|
-
}>()
|
|
9
|
-
|
|
10
|
-
defineEmits<{
|
|
11
|
-
(e: 'click'): void
|
|
12
|
-
}>()
|
|
13
|
-
</script>
|
|
14
|
-
|
|
15
|
-
<template>
|
|
16
|
-
<div class="SCardHeaderActionClose">
|
|
17
|
-
<SButton
|
|
18
|
-
type="text"
|
|
19
|
-
mode="mute"
|
|
20
|
-
size="small"
|
|
21
|
-
:icon="IconX"
|
|
22
|
-
:disabled="disabled"
|
|
23
|
-
:tooltip="tooltip"
|
|
24
|
-
@click="$emit('click')"
|
|
25
|
-
/>
|
|
26
|
-
</div>
|
|
27
|
-
</template>
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
import IconArrowsInLineVertical from '@iconify-icons/ph/arrows-in-line-vertical-bold'
|
|
3
|
-
import IconArrowsOutLineVertical from '@iconify-icons/ph/arrows-out-line-vertical-bold'
|
|
4
|
-
import { computed, shallowRef } from 'vue'
|
|
5
|
-
import { useCardState } from '../composables/Card'
|
|
6
|
-
import SButton, { type Tooltip } from './SButton.vue'
|
|
7
|
-
|
|
8
|
-
const props = defineProps<{
|
|
9
|
-
collapsed?: boolean
|
|
10
|
-
disabled?: boolean
|
|
11
|
-
tooltip?: string | Tooltip
|
|
12
|
-
}>()
|
|
13
|
-
|
|
14
|
-
defineEmits<{
|
|
15
|
-
(e: 'click'): void
|
|
16
|
-
}>()
|
|
17
|
-
|
|
18
|
-
const { isCollapsed, setCollapse, toggleCollapse } = useCardState()
|
|
19
|
-
|
|
20
|
-
setCollapse(props.collapsed)
|
|
21
|
-
|
|
22
|
-
const el = shallowRef<HTMLElement | null>(null)
|
|
23
|
-
|
|
24
|
-
const icon = computed(() => {
|
|
25
|
-
return isCollapsed.value
|
|
26
|
-
? IconArrowsOutLineVertical
|
|
27
|
-
: IconArrowsInLineVertical
|
|
28
|
-
})
|
|
29
|
-
</script>
|
|
30
|
-
|
|
31
|
-
<template>
|
|
32
|
-
<div
|
|
33
|
-
class="SCardHeaderActionCollapse"
|
|
34
|
-
:class="{ collapsed: isCollapsed }"
|
|
35
|
-
ref="el"
|
|
36
|
-
>
|
|
37
|
-
<SButton
|
|
38
|
-
type="text"
|
|
39
|
-
mode="mute"
|
|
40
|
-
size="small"
|
|
41
|
-
:icon="icon"
|
|
42
|
-
:disabled="disabled"
|
|
43
|
-
:tooltip="tooltip"
|
|
44
|
-
@click="toggleCollapse"
|
|
45
|
-
/>
|
|
46
|
-
</div>
|
|
47
|
-
</template>
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
export type Mode = 'neutral' | 'info' | 'success' | 'warning' | 'danger'
|
|
3
|
-
|
|
4
|
-
defineProps<{
|
|
5
|
-
mode?: Mode
|
|
6
|
-
}>()
|
|
7
|
-
</script>
|
|
8
|
-
|
|
9
|
-
<template>
|
|
10
|
-
<p class="SCardHeaderTitle" :class="[mode ?? 'neutral']">
|
|
11
|
-
<slot />
|
|
12
|
-
</p>
|
|
13
|
-
</template>
|
|
14
|
-
|
|
15
|
-
<style scoped lang="postcss">
|
|
16
|
-
.SCardHeaderTitle {
|
|
17
|
-
flex-grow: 1;
|
|
18
|
-
padding-left: 24px;
|
|
19
|
-
line-height: 32px;
|
|
20
|
-
font-size: 14px;
|
|
21
|
-
font-weight: 600;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
.SCardHeaderTitle.neutral { color: var(--c-text-1); }
|
|
25
|
-
.SCardHeaderTitle.info { color: var(--c-text-info-1); }
|
|
26
|
-
.SCardHeaderTitle.success { color: var(--c-text-success-1); }
|
|
27
|
-
.SCardHeaderTitle.warning { color: var(--c-text-warning-1); }
|
|
28
|
-
.SCardHeaderTitle.danger { color: var(--c-text-danger-1); }
|
|
29
|
-
</style>
|
package/lib/components/SIcon.vue
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
import { Icon, type IconifyIcon } from '@iconify/vue/dist/offline'
|
|
3
|
-
import { type DefineComponent } from 'vue'
|
|
4
|
-
|
|
5
|
-
defineProps<{
|
|
6
|
-
icon: IconifyIcon | DefineComponent
|
|
7
|
-
}>()
|
|
8
|
-
</script>
|
|
9
|
-
|
|
10
|
-
<template>
|
|
11
|
-
<Icon v-if="typeof icon.body === 'string'" :icon="(icon as IconifyIcon)" />
|
|
12
|
-
<component v-else :is="icon" />
|
|
13
|
-
</template>
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
import IconX from '@iconify-icons/ph/x'
|
|
3
|
-
import SIcon from './SIcon.vue'
|
|
4
|
-
import SMount from './SMount.vue'
|
|
5
|
-
|
|
6
|
-
export interface Props {
|
|
7
|
-
size?: 'small' | 'medium' | 'large'
|
|
8
|
-
closable?: boolean
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
withDefaults(defineProps<Props>(), {
|
|
12
|
-
size: 'medium',
|
|
13
|
-
closable: true
|
|
14
|
-
})
|
|
15
|
-
|
|
16
|
-
defineEmits<{
|
|
17
|
-
(e: 'close'): void
|
|
18
|
-
}>()
|
|
19
|
-
</script>
|
|
20
|
-
|
|
21
|
-
<template>
|
|
22
|
-
<SMount class="SSheet" :class="[size]">
|
|
23
|
-
<button v-if="closable ?? true" class="close" @click="$emit('close')">
|
|
24
|
-
<SIcon :icon="IconX" class="icon" />
|
|
25
|
-
</button>
|
|
26
|
-
|
|
27
|
-
<slot />
|
|
28
|
-
</SMount>
|
|
29
|
-
</template>
|
|
30
|
-
|
|
31
|
-
<style scoped lang="postcss">
|
|
32
|
-
.SSheet {
|
|
33
|
-
position: relative;
|
|
34
|
-
border: 1px solid var(--c-divider);
|
|
35
|
-
border-radius: 16px;
|
|
36
|
-
background-color: var(--c-bg-elv-1);
|
|
37
|
-
transition: opacity 0.25s, transform 0.25s;
|
|
38
|
-
|
|
39
|
-
.dark & {
|
|
40
|
-
background-color: var(--c-bg-mute-1);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
.SModal & {
|
|
44
|
-
margin: 96px auto;
|
|
45
|
-
box-shadow: var(--shadow-depth-5);
|
|
46
|
-
|
|
47
|
-
.dark & {
|
|
48
|
-
background-color: var(--c-bg-elv-4);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
.SSheet.small { max-width: 512px; }
|
|
54
|
-
.SSheet.medium { max-width: 768px; }
|
|
55
|
-
.SSheet.large { max-width: 1024px; }
|
|
56
|
-
|
|
57
|
-
.SSheet.mount {
|
|
58
|
-
opacity: 0;
|
|
59
|
-
transform: translateY(8px);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
.close {
|
|
63
|
-
position: absolute;
|
|
64
|
-
top: 4px;
|
|
65
|
-
right: 4px;
|
|
66
|
-
display: none;
|
|
67
|
-
justify-content: center;
|
|
68
|
-
align-items: center;
|
|
69
|
-
width: 48px;
|
|
70
|
-
height: 48px;
|
|
71
|
-
color: var(--c-text-3);
|
|
72
|
-
transition: color 0.25s;
|
|
73
|
-
|
|
74
|
-
&:hover {
|
|
75
|
-
color: var(--c-text-1);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
.SModal & {
|
|
79
|
-
display: flex;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
.icon {
|
|
84
|
-
width: 24px;
|
|
85
|
-
height: 24px;
|
|
86
|
-
}
|
|
87
|
-
</style>
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<footer class="SSheetFooter">
|
|
3
|
-
<slot />
|
|
4
|
-
</footer>
|
|
5
|
-
</template>
|
|
6
|
-
|
|
7
|
-
<style scoped lang="postcss">
|
|
8
|
-
.SSheetFooter {
|
|
9
|
-
border-top: 1px solid var(--c-divider);
|
|
10
|
-
padding: 0 16px;
|
|
11
|
-
|
|
12
|
-
@media (min-width: 512px) {
|
|
13
|
-
padding: 0 32px;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
</style>
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
import SButton, { type Mode, type Type } from './SButton.vue'
|
|
3
|
-
|
|
4
|
-
defineProps<{
|
|
5
|
-
type?: Type
|
|
6
|
-
mode?: Mode
|
|
7
|
-
label: string
|
|
8
|
-
loading?: boolean
|
|
9
|
-
}>()
|
|
10
|
-
|
|
11
|
-
defineEmits<{
|
|
12
|
-
(e: 'click'): void
|
|
13
|
-
}>()
|
|
14
|
-
</script>
|
|
15
|
-
|
|
16
|
-
<template>
|
|
17
|
-
<div class="SSheetFooterAction">
|
|
18
|
-
<SButton
|
|
19
|
-
size="medium"
|
|
20
|
-
:type="type"
|
|
21
|
-
:mode="mode"
|
|
22
|
-
:label="label"
|
|
23
|
-
:loading="loading"
|
|
24
|
-
block
|
|
25
|
-
@click="$emit('click')"
|
|
26
|
-
/>
|
|
27
|
-
</div>
|
|
28
|
-
</template>
|
|
29
|
-
|
|
30
|
-
<style scoped lang="postcss">
|
|
31
|
-
.SSheetFooterAction {
|
|
32
|
-
min-width: 88px;
|
|
33
|
-
}
|
|
34
|
-
</style>
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="SSheetMedium">
|
|
3
|
-
<slot />
|
|
4
|
-
</div>
|
|
5
|
-
</template>
|
|
6
|
-
|
|
7
|
-
<style scoped lang="postcss">
|
|
8
|
-
.SSheetMedium {
|
|
9
|
-
padding: 32px;
|
|
10
|
-
|
|
11
|
-
.SSheetTitle + & {
|
|
12
|
-
padding-top: 0;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
.SSheetMedium :deep(p) {
|
|
17
|
-
margin-bottom: 16px;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
.SSheetMedium :deep(p:first-child) {
|
|
21
|
-
margin-top: 0;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
.SSheetMedium :deep(p:last-child) {
|
|
25
|
-
margin-bottom: 0;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
.SSheetMedium :deep(a) {
|
|
29
|
-
font-weight: 500;
|
|
30
|
-
color: var(--c-text-info-1);
|
|
31
|
-
transition: color .25s;
|
|
32
|
-
|
|
33
|
-
&:hover {
|
|
34
|
-
color: var(--c-text-info-2);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
.SSheetMedium :deep(ul) {
|
|
39
|
-
margin: 16px 0;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
.SSheetMedium :deep(ul:last-child) {
|
|
43
|
-
margin-bottom: 0;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
.SSheetMedium :deep(li) {
|
|
47
|
-
position: relative;
|
|
48
|
-
padding-left: 20px;
|
|
49
|
-
font-size: 16px;
|
|
50
|
-
font-weight: 400;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
.SSheetMedium :deep(li::before) {
|
|
54
|
-
position: absolute;
|
|
55
|
-
top: 9px;
|
|
56
|
-
left: 4px;
|
|
57
|
-
border-radius: 50%;
|
|
58
|
-
width: 6px;
|
|
59
|
-
height: 6px;
|
|
60
|
-
background-color: var(--c-text-3);
|
|
61
|
-
content: "";
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
.SSheetMedium :deep(li + li) {
|
|
65
|
-
margin-top: 8px;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
.SSheetMedium :deep(li > ul) {
|
|
69
|
-
margin: 4px 0 0;
|
|
70
|
-
margin-bottom: 16px;
|
|
71
|
-
}
|
|
72
|
-
</style>
|