From 13c97548418bbd8c408f3de214384e8c21952c24 Mon Sep 17 00:00:00 2001 From: Kagol Date: Wed, 23 Feb 2022 20:41:39 +0800 Subject: [PATCH 1/2] build: add script cli --- packages/devui-vue/dc.config.ts | 2 +- packages/devui-vue/package.json | 4 +++- pnpm-lock.yaml | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/devui-vue/dc.config.ts b/packages/devui-vue/dc.config.ts index 686925d139..6b5ac6d109 100644 --- a/packages/devui-vue/dc.config.ts +++ b/packages/devui-vue/dc.config.ts @@ -2,7 +2,7 @@ import { defineCliConfig } from 'devui-cli'; export default defineCliConfig({ componentRootDir: './devui', - libClassPrefix: 'd', + libClassPrefix: 'devui', libEntryFileName: 'vue-devui', libEntryRootDir: './devui', libPrefix: 'D', diff --git a/packages/devui-vue/package.json b/packages/devui-vue/package.json index ba8c318e81..1bd2226384 100644 --- a/packages/devui-vue/package.json +++ b/packages/devui-vue/package.json @@ -35,7 +35,8 @@ "copy": "cp package.json build && cp ../../README.md build && cp devui/theme/theme.scss build/theme", "cli:create": "node ./devui-cli/index.js create -t component", "predev": "node ./devui-cli/index.js create -t vue-devui --ignore-parse-error", - "prebuild": "node ./devui-cli/index.js create -t vue-devui --ignore-parse-error" + "prebuild": "node ./devui-cli/index.js create -t vue-devui --ignore-parse-error", + "cli": "devui" }, "dependencies": { "@devui-design/icons": "^1.3.0", @@ -74,6 +75,7 @@ "babel-jest": "^27.0.2", "chalk": "^4.1.2", "commander": "^8.1.0", + "devui-cli": "workspace:^0.0.2", "inquirer": "^8.1.2", "jest": "^27.0.4", "ora": "^5.4.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 529bc72ce6..96659d6697 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -118,6 +118,7 @@ importers: babel-jest: ^27.0.2 chalk: ^4.1.2 commander: ^8.1.0 + devui-cli: workspace:^0.0.2 devui-theme: workspace:^0.0.1 fs-extra: ^10.0.0 inquirer: ^8.1.2 @@ -174,6 +175,7 @@ importers: babel-jest: 27.5.1 chalk: 4.1.2 commander: 8.3.0 + devui-cli: link:../devui-cli inquirer: 8.2.0 jest: 27.5.1 ora: 5.4.1 From 90b360238987c9091ae7eb2946e7542a0d6690ce Mon Sep 17 00:00:00 2001 From: Kagol Date: Wed, 23 Feb 2022 21:53:38 +0800 Subject: [PATCH 2/2] =?UTF-8?q?style:=20=E8=B0=83=E6=95=B4=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 6 +- .../src/shared/generate-lib-entry.ts | 2 +- .../devui-cli/src/templates/component/doc.ts | 4 +- .../src/templates/component/style.ts | 2 +- packages/devui-theme/package.json | 4 +- .../devui-theme/src/theme/theme-management.ts | 12 +- .../devui-theme/src/theme/theme-service.ts | 8 +- packages/devui-theme/src/theme/theme.ts | 28 ++-- .../devui-theme/src/theme/utils/interface.ts | 14 +- packages/devui-vue/LICENSE | 23 --- .../devui-vue/devui-cli/commands/build.js | 2 +- packages/devui-vue/devui-cli/shared/utils.js | 4 +- .../devui/accordion/src/accordion-item.tsx | 4 +- .../devui/accordion/src/accordion-list.tsx | 8 +- .../devui/accordion/src/accordion-menu.tsx | 4 +- .../devui/accordion/src/accordion-types.ts | 38 ++--- .../devui/accordion/src/accordion.scss | 11 +- .../devui-vue/devui/accordion/src/utils.ts | 2 +- .../auto-complete/src/auto-complete.scss | 6 +- .../devui/back-top/src/back-top.scss | 6 +- .../devui-vue/devui/back-top/src/back-top.tsx | 2 +- .../components/cascader-item/index.scss | 4 + .../components/cascader-multiple/index.scss | 5 +- .../components/cascader-tag/index.scss | 10 +- .../devui/color-picker/src/color-picker.scss | 6 + .../components/color-basic/color-basic.scss | 1 + .../color-history/color-history.scss | 17 ++- .../color-history/color-history.tsx | 2 +- .../color-hue-slider/color-hue-slider.scss | 64 ++++---- .../color-palette/color-palette.scss | 6 +- .../color-picker-panel.scss | 4 +- .../src/utils/color-utils-types.ts | 12 +- .../devui-vue/devui/comment/src/comment.scss | 22 ++- .../drawer/src/components/drawer-body.scss | 2 +- .../devui/dropdown/src/dropdown.scss | 4 +- .../editable-select/src/editable-select.scss | 2 + .../form/src/directive/d-validate-rules.ts | 12 +- .../form/src/form-control/form-control.scss | 8 +- .../form/src/form-control/form-control.tsx | 14 +- packages/devui-vue/devui/form/src/form.tsx | 2 +- .../devui-vue/devui/form/src/util/index.ts | 2 +- .../gantt/src/gantt-bar-parent/index.tsx | 4 +- .../image-preview/src/image-preview.scss | 1 + .../devui/input-icon/src/input-icon.scss | 46 +++--- .../devui/input-number/src/input-number.scss | 1 - packages/devui-vue/devui/input/src/input.scss | 1 + .../devui/panel/src/body/panel-body.tsx | 4 +- .../devui/panel/src/header/panel-header.tsx | 2 +- packages/devui-vue/devui/panel/src/panel.scss | 1 - .../devui-vue/devui/result/src/result.scss | 25 ++-- .../shared/devui-codebox/devui-codebox.tsx | 4 +- packages/devui-vue/devui/shared/util/dom.ts | 2 +- .../devui/skeleton/src/item/item.scss | 10 +- .../devui/skeleton/src/skeleton.scss | 6 +- .../devui/splitter/src/splitter-bar.tsx | 2 +- .../devui-vue/devui/splitter/src/splitter.tsx | 2 +- .../devui/statistic/src/statistic.scss | 1 + .../hooks/use-steps-guide-position.ts | 2 +- .../devui-vue/devui/style/core/_dropdown.scss | 1 - .../devui-vue/devui/table/src/body/body.scss | 7 +- .../devui-vue/devui/table/src/body/body.tsx | 4 +- .../devui/table/src/header/filter/filter.scss | 4 +- .../devui/table/src/header/filter/filter.tsx | 10 +- .../devui/table/src/header/header.scss | 2 +- .../devui/table/src/header/header.tsx | 2 +- packages/devui-vue/devui/tag/src/tag.scss | 5 +- .../devui-vue/devui/textarea/src/textarea.tsx | 22 +-- .../devui/time-axis/src/time-axis.scss | 1 - .../src/components/popup-line/index.scss | 1 + .../src/components/time-popup/index.scss | 2 +- .../devui/transfer/src/transfer.scss | 22 ++- .../devui/tree-select/src/tree-select.scss | 11 +- .../tree/src/composables/use-operate.tsx | 8 +- packages/devui-vue/devui/tree/src/tree.scss | 5 + .../devui-vue/docs/components/panel/index.md | 138 ++++++++++-------- .../docs/components/statistic/index.md | 2 +- .../docs/en-US/components/panel/index.md | 136 +++++++++-------- .../docs/en-US/components/statistic/index.md | 2 +- packages/devui-vue/docs/vite.config.ts | 5 +- packages/devui-vue/index.html | 13 -- packages/devui-vue/package.json | 8 +- packages/devui-vue/src/app.vue | 22 --- packages/devui-vue/src/assets/logo.png | Bin 6849 -> 0 bytes packages/devui-vue/src/main.ts | 4 - packages/devui-vue/vite.config.build.ts | 33 ----- packages/devui-vue/vite.config.ts | 24 --- 86 files changed, 487 insertions(+), 510 deletions(-) delete mode 100644 packages/devui-vue/LICENSE delete mode 100644 packages/devui-vue/index.html delete mode 100644 packages/devui-vue/src/app.vue delete mode 100644 packages/devui-vue/src/assets/logo.png delete mode 100644 packages/devui-vue/src/main.ts delete mode 100644 packages/devui-vue/vite.config.build.ts delete mode 100644 packages/devui-vue/vite.config.ts diff --git a/package.json b/package.json index f6672f7e9e..29a4b8b794 100644 --- a/package.json +++ b/package.json @@ -5,11 +5,11 @@ "dev": "pnpm dev --filter vue-devui", "build": "pnpm build --filter vue-devui", "build:lib": "pnpm build:lib --filter vue-devui", - "build:cli": "pnpm build --filter @devui/cli", + "build:cli": "pnpm build --filter devui-cli", "prepare": "husky install", "precommit": "lint-staged", - "lint:fix": "eslint --fix \"{packages}/**/*.{vue,js,ts,jsx,tsx}\"", - "stylelint": "stylelint --fix \"{packages}/**/*.{scss,css}\"", + "lint:fix": "eslint --fix \"packages/**/{*.vue,*.js,*.ts,*.jsx,*.tsx}\"", + "stylelint": "stylelint --fix \"packages/**/{*.scss,*.css}\"", "test": "pnpm test --filter vue-devui" }, "devDependencies": { diff --git a/packages/devui-cli/src/shared/generate-lib-entry.ts b/packages/devui-cli/src/shared/generate-lib-entry.ts index fa19170b03..9e7a705e53 100644 --- a/packages/devui-cli/src/shared/generate-lib-entry.ts +++ b/packages/devui-cli/src/shared/generate-lib-entry.ts @@ -3,7 +3,7 @@ import { getComponentsMeta } from '../templates/component/utils' import genLibEntryTemplate from '../templates/lib-entry/lib-entry' import logger from './logger' -export default async function genLibEntry(filePath: string = '') { +export default async function genLibEntry(filePath = '') { const componentsMeta = await getComponentsMeta() writeFileSync(filePath, genLibEntryTemplate(componentsMeta), { diff --git a/packages/devui-cli/src/templates/component/doc.ts b/packages/devui-cli/src/templates/component/doc.ts index 641d6667fb..aad6bb48b7 100644 --- a/packages/devui-cli/src/templates/component/doc.ts +++ b/packages/devui-cli/src/templates/component/doc.ts @@ -1,5 +1,5 @@ -import { getPartName } from "../lib-entry/lib-entry"; -import { ComponentMeta } from "./meta"; +import { getPartName } from '../lib-entry/lib-entry'; +import { ComponentMeta } from './meta'; export default function genDocTemplate(meta: ComponentMeta) { return `\ diff --git a/packages/devui-cli/src/templates/component/style.ts b/packages/devui-cli/src/templates/component/style.ts index 9f7f217aa2..57a00df38e 100644 --- a/packages/devui-cli/src/templates/component/style.ts +++ b/packages/devui-cli/src/templates/component/style.ts @@ -1,4 +1,4 @@ -import { coreClassName } from "./utils" +import { coreClassName } from './utils' export default function genStyleTemplate(name: string) { return `\ diff --git a/packages/devui-theme/package.json b/packages/devui-theme/package.json index c0866bd7f6..fec81f7386 100644 --- a/packages/devui-theme/package.json +++ b/packages/devui-theme/package.json @@ -8,9 +8,7 @@ "src" ], "scripts": { - "dev": "vite", - "build": "vite build", - "preview": "vite preview" + "build": "vite build" }, "dependencies": { "css-vars-ponyfill": "^2.4.7", diff --git a/packages/devui-theme/src/theme/theme-management.ts b/packages/devui-theme/src/theme/theme-management.ts index 2797888239..91d34b4258 100644 --- a/packages/devui-theme/src/theme/theme-management.ts +++ b/packages/devui-theme/src/theme/theme-management.ts @@ -16,15 +16,15 @@ import { EventBus } from './utils'; * */ export function ThemeServiceInit( - themes?: { [themeName: string]: Theme }, + themes?: { [themeName: string]: Theme; }, defaultThemeName?: string, extraData?: { [themeName: string]: { - appendClasses?: Array; + appendClasses?: Array cssVariables?: { - [cssVarName: string]: string; - }; - }; + [cssVarName: string]: string + } + } }, ieSupport = false, // TODO:css-var-ponyflll 仍有一些问题待定位 allowDynamicTheme = false @@ -54,7 +54,7 @@ export function ThemeServiceInit( return themeService; } -export function ThemeServiceFollowSystemOn(themeConfig?: { lightThemeName: string; darkThemeName: string }): Subscription { +export function ThemeServiceFollowSystemOn(themeConfig?: { lightThemeName: string; darkThemeName: string; }): Subscription { if (typeof window === 'undefined') { return null; } diff --git a/packages/devui-theme/src/theme/theme-service.ts b/packages/devui-theme/src/theme/theme-service.ts index 28fd31d7a1..8fcec9c922 100644 --- a/packages/devui-theme/src/theme/theme-service.ts +++ b/packages/devui-theme/src/theme/theme-service.ts @@ -16,10 +16,10 @@ export class ThemeService { extraData: { [themeId: string]: { cssVariables?: { - [varname: string]: string; - }; - appendClasses?: Array; - }; + [varname: string]: string + } + appendClasses?: Array + } }; private _appendedClasses: Array; set appendClasses(classes: Array) { diff --git a/packages/devui-theme/src/theme/theme.ts b/packages/devui-theme/src/theme/theme.ts index 753dbe9cb8..977192b188 100644 --- a/packages/devui-theme/src/theme/theme.ts +++ b/packages/devui-theme/src/theme/theme.ts @@ -5,31 +5,31 @@ export class Theme { name: string; cnName?: string; data: { - [cssVarName: string]: string; + [cssVarName: string]: string }; extends?: ThemeId; isDark?: boolean; isPreview?: boolean; isExtendable?: boolean; extra?: { - appendClass?: Array; + appendClass?: Array cssVariables?: { - [cssVarName: string]: string; - }; - [prop: string]: any; + [cssVarName: string]: string + } + [prop: string]: any } | any; constructor(theme: { - id: ThemeId; - name: string; - cnName?: string; + id: ThemeId + name: string + cnName?: string data: { - [cssVarName: string]: string; - }; - extends?: ThemeId; - isDark?: boolean; - isPreview?: boolean; - isExtendable?: boolean; + [cssVarName: string]: string + } + extends?: ThemeId + isDark?: boolean + isPreview?: boolean + isExtendable?: boolean }) { this.id = theme.id; this.name = theme.name; diff --git a/packages/devui-theme/src/theme/utils/interface.ts b/packages/devui-theme/src/theme/utils/interface.ts index 0c14534949..f10233e9bd 100644 --- a/packages/devui-theme/src/theme/utils/interface.ts +++ b/packages/devui-theme/src/theme/utils/interface.ts @@ -1,15 +1,15 @@ export interface IStorageService { - tryGetLocalStorage(key: string): any; - trySetLocalStorage(key: string, value: any): void; + tryGetLocalStorage(key: string): any + trySetLocalStorage(key: string, value: any): void } export interface IContextService { - getDataFromNameSpace(nameSpace: string): any; - setDataFromNameSpace(nameSpace: string, value: any): any; + getDataFromNameSpace(nameSpace: string): any + setDataFromNameSpace(nameSpace: string, value: any): any } export interface IEventBus { - add(eventName: string, callbacks: Function): void; - remove(eventName: string, callbacks: Function): void; - trigger(eventName: string, data: any): void; + add(eventName: string, callbacks: Function): void + remove(eventName: string, callbacks: Function): void + trigger(eventName: string, data: any): void } diff --git a/packages/devui-vue/LICENSE b/packages/devui-vue/LICENSE deleted file mode 100644 index e3a2b0425c..0000000000 --- a/packages/devui-vue/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -MIT License - -Copyright (c) 2019 - present DevUI. -Copyright (c) 2019 - present Huawei Technologies Co., Ltd. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - diff --git a/packages/devui-vue/devui-cli/commands/build.js b/packages/devui-vue/devui-cli/commands/build.js index 1795406945..c9f61a08a6 100644 --- a/packages/devui-vue/devui-cli/commands/build.js +++ b/packages/devui-vue/devui-cli/commands/build.js @@ -50,7 +50,7 @@ const buildAll = async () => { rollupOptions, lib: { entry: path.resolve(entryDir, 'vue-devui.ts'), - name: 'vue-devui', + name: 'VueDevui', fileName: 'vue-devui', formats: ['es', 'umd'] }, diff --git a/packages/devui-vue/devui-cli/shared/utils.js b/packages/devui-vue/devui-cli/shared/utils.js index 11fb60c706..0b1f1c4b8e 100644 --- a/packages/devui-vue/devui-cli/shared/utils.js +++ b/packages/devui-vue/devui-cli/shared/utils.js @@ -3,8 +3,8 @@ const { INDEX_FILE_NAME, DEVUI_DIR } = require('./constant') const { resolve } = require('path') const logger = require('./logger') const fs = require('fs-extra') -const traverse = require("@babel/traverse").default -const babelParser = require("@babel/parser") +const traverse = require('@babel/traverse').default +const babelParser = require('@babel/parser') exports.bigCamelCase = (str) => { return upperFirst(camelCase(str)) diff --git a/packages/devui-vue/devui/accordion/src/accordion-item.tsx b/packages/devui-vue/devui/accordion/src/accordion-item.tsx index 14e98c7acb..a20b8a919d 100644 --- a/packages/devui-vue/devui/accordion/src/accordion-item.tsx +++ b/packages/devui-vue/devui/accordion/src/accordion-item.tsx @@ -31,8 +31,8 @@ export default defineComponent({ const rootSlots = getRootSlots() const accordionCtx = inject('accordionContext') as any - let parentValue = parent.value - let deepValue = deepth.value + const parentValue = parent.value + const deepValue = deepth.value const disabled = computed(() => { return item.value && item.value[disabledKey.value] diff --git a/packages/devui-vue/devui/accordion/src/accordion-list.tsx b/packages/devui-vue/devui/accordion/src/accordion-list.tsx index 4852054957..8c3d05cfa1 100644 --- a/packages/devui-vue/devui/accordion/src/accordion-list.tsx +++ b/packages/devui-vue/devui/accordion/src/accordion-list.tsx @@ -12,11 +12,11 @@ import { getRootSlots } from '../src/utils' export default defineComponent({ name: 'DAccordionList', - inheritAttrs: false, components: { DAccordionMenu, DAccordionItem }, + inheritAttrs: false, props: { data: { type: Array as () => Array, @@ -49,8 +49,8 @@ export default defineComponent({ innerListTemplate } = toRefs(props) - let parentValue = parent.value - let deepValue = deepth.value + const parentValue = parent.value + const deepValue = deepth.value const rootSlots = getRootSlots() @@ -60,7 +60,7 @@ export default defineComponent({ return parentValue && parentValue[loadingKey.value] }) const noContent = computed(() => { - let dataValue = data.value + const dataValue = data.value return dataValue === undefined || dataValue === null || dataValue.length === 0 }) diff --git a/packages/devui-vue/devui/accordion/src/accordion-menu.tsx b/packages/devui-vue/devui/accordion/src/accordion-menu.tsx index a2ca212abc..94d525a751 100644 --- a/packages/devui-vue/devui/accordion/src/accordion-menu.tsx +++ b/packages/devui-vue/devui/accordion/src/accordion-menu.tsx @@ -39,8 +39,8 @@ export default defineComponent({ const rootSlots = getRootSlots() const accordionCtx = inject('accordionContext') as any - let parentValue = parent.value - let deepValue = deepth.value + const parentValue = parent.value + const deepValue = deepth.value const toggle = (itemEvent: AccordionMenuToggleEvent) => { accordionCtx.menuToggleFn(itemEvent) diff --git a/packages/devui-vue/devui/accordion/src/accordion-types.ts b/packages/devui-vue/devui/accordion/src/accordion-types.ts index 2aa7396ccc..a2cf54dacc 100644 --- a/packages/devui-vue/devui/accordion/src/accordion-types.ts +++ b/packages/devui-vue/devui/accordion/src/accordion-types.ts @@ -1,5 +1,5 @@ -import { ExtractPropTypes } from "vue"; -import { AccordionMenuType } from "./accordion.type"; +import { ExtractPropTypes } from 'vue'; +import { AccordionMenuType } from './accordion.type'; export const accordionProps = { data: { @@ -7,12 +7,12 @@ export const accordionProps = { default: null, }, /* Key值定义, 用于自定义数据结构 */ - titleKey: { type: String, default: "title" }, // 标题的key,item[titleKey]类型为string,为标题显示内容 - loadingKey: { type: String, default: "loading" }, // 子菜单动态加载item[loadingKey]类型为boolean - childrenKey: { type: String, default: "children" }, // 子菜单Key - disabledKey: { type: String, default: "disabled" }, // 是否禁用Key - activeKey: { type: String, default: "active" }, // 菜单是否激活/选中 - openKey: { type: String, default: "open" }, // 菜单是否打开 + titleKey: { type: String, default: 'title' }, // 标题的key,item[titleKey]类型为string,为标题显示内容 + loadingKey: { type: String, default: 'loading' }, // 子菜单动态加载item[loadingKey]类型为boolean + childrenKey: { type: String, default: 'children' }, // 子菜单Key + disabledKey: { type: String, default: 'disabled' }, // 是否禁用Key + activeKey: { type: String, default: 'active' }, // 菜单是否激活/选中 + openKey: { type: String, default: 'open' }, // 菜单是否打开 /* 菜单模板 */ menuItemTemplate: { type: Boolean, default: true }, // 可展开菜单内容条模板 @@ -42,21 +42,21 @@ export const accordionProps = { /* 内置路由/链接/动态判断路由或链接类型 */ linkType: { type: String as () => - | "routerLink" - | "hrefLink" - | "dependOnLinkTypeKey" - | "" + | 'routerLink' + | 'hrefLink' + | 'dependOnLinkTypeKey' + | '' | string, - default: "", + default: '', }, - linkTypeKey: { type: String, default: "linkType" }, // linkType为'dependOnLinkTypeKey'时指定对象linkType定义区 - linkKey: { type: String, default: "link" }, // 链接内容的key - linkTargetKey: { type: String, default: "target" }, // 链接目标窗口的key - linkDefaultTarget: { type: String, default: "_self" }, // 不设置target的时候target默认值 + linkTypeKey: { type: String, default: 'linkType' }, // linkType为'dependOnLinkTypeKey'时指定对象linkType定义区 + linkKey: { type: String, default: 'link' }, // 链接内容的key + linkTargetKey: { type: String, default: 'target' }, // 链接目标窗口的key + linkDefaultTarget: { type: String, default: '_self' }, // 不设置target的时候target默认值 accordionType: { - type: String as () => "normal" | "embed", - default: "normal", + type: String as () => 'normal' | 'embed', + default: 'normal', }, } as const; diff --git a/packages/devui-vue/devui/accordion/src/accordion.scss b/packages/devui-vue/devui/accordion/src/accordion.scss index 4e6f0030d1..44bd109036 100644 --- a/packages/devui-vue/devui/accordion/src/accordion.scss +++ b/packages/devui-vue/devui/accordion/src/accordion.scss @@ -5,8 +5,9 @@ @import '../../style/theme/corner'; @import '../../style/core/animation'; -.devui-accordion-menu { - ol, ul{ +.devui-accordion-menu { + ol, + ul { margin: 0 !important; line-height: 0 !important; font-size: 12px; @@ -120,7 +121,7 @@ d-accordion-item-routerlink { /* 展开图标相关 */ .devui-accordion-menu-item > .devui-accordion-item-title { position: relative; - + & > .devui-accordion-open-icon { display: inline-block; text-indent: 0; @@ -177,8 +178,8 @@ d-accordion-item-routerlink { .devui-accordion-list .devui-accordion-menu-hidden { // display: none; - opacity: 0; - height: 0px; + opacity: 0; + height: 0; overflow: hidden; } diff --git a/packages/devui-vue/devui/accordion/src/utils.ts b/packages/devui-vue/devui/accordion/src/utils.ts index 91d03b0360..e4d01bb755 100644 --- a/packages/devui-vue/devui/accordion/src/utils.ts +++ b/packages/devui-vue/devui/accordion/src/utils.ts @@ -1,5 +1,5 @@ import { AccordionMenuItem, AccordionMenuType } from './accordion.type' -import { ComponentInternalInstance, getCurrentInstance } from "vue" +import { ComponentInternalInstance, getCurrentInstance } from 'vue' const flatten = ( arr: Array, diff --git a/packages/devui-vue/devui/auto-complete/src/auto-complete.scss b/packages/devui-vue/devui/auto-complete/src/auto-complete.scss index 267e993901..4d80b0cd39 100644 --- a/packages/devui-vue/devui/auto-complete/src/auto-complete.scss +++ b/packages/devui-vue/devui/auto-complete/src/auto-complete.scss @@ -1,5 +1,6 @@ @import '../../style/mixins/index'; @import '../../style/theme/color'; + .devui-auto-complete, .devui-auto-complete-menu { .devui-dropdown-menu { @@ -7,7 +8,8 @@ top: 0 !important; } } -.devui-auto-complete{ + +.devui-auto-complete { .active { background: $devui-list-item-hover-bg; } @@ -90,4 +92,4 @@ .devui-dropdown-latestSource ul { line-height: initial !important; } -} \ No newline at end of file +} diff --git a/packages/devui-vue/devui/back-top/src/back-top.scss b/packages/devui-vue/devui/back-top/src/back-top.scss index e0d28a369d..20d44bf48c 100644 --- a/packages/devui-vue/devui/back-top/src/back-top.scss +++ b/packages/devui-vue/devui/back-top/src/back-top.scss @@ -6,6 +6,7 @@ height: 40px; cursor: pointer; z-index: 9; + .devui-back-top-base { width: 40px; height: 40px; @@ -13,16 +14,19 @@ display: flex; align-items: center; justify-content: center; + &:hover { opacity: 1; } } + .devui-back-top-content { opacity: 0.4; background-color: $devui-text-weak; box-shadow: 0 0 8px rgba(0, 0, 0, 0.2); } + .devui-backtop-custom { - background-color: #fff; + background-color: #ffffff; } } diff --git a/packages/devui-vue/devui/back-top/src/back-top.tsx b/packages/devui-vue/devui/back-top/src/back-top.tsx index 1939a4e015..fa08d4857c 100644 --- a/packages/devui-vue/devui/back-top/src/back-top.tsx +++ b/packages/devui-vue/devui/back-top/src/back-top.tsx @@ -13,7 +13,7 @@ export default defineComponent({ const backTopRef = ref(null) const position = usePosition(props) - let isVisible = useVisibility(props, backTopRef) + const isVisible = useVisibility(props, backTopRef) const scrollToTop = () => { // toTop方法暂定 diff --git a/packages/devui-vue/devui/cascader/components/cascader-item/index.scss b/packages/devui-vue/devui/cascader/components/cascader-item/index.scss index f3368ead25..35161178bf 100644 --- a/packages/devui-vue/devui/cascader/components/cascader-item/index.scss +++ b/packages/devui-vue/devui/cascader/components/cascader-item/index.scss @@ -9,15 +9,18 @@ color: $devui-text; cursor: pointer; @include flex(flex-start); + -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } + .cascader-li__wraper { flex: 1; @include flex(flex-start); } + .dropdown-item-label { display: inline-block; flex: 1; @@ -49,6 +52,7 @@ margin-right: 4px; font-size: $devui-font-size-icon; color: $devui-text; + &.disabled { color: $devui-disabled-text !important; } diff --git a/packages/devui-vue/devui/cascader/components/cascader-multiple/index.scss b/packages/devui-vue/devui/cascader/components/cascader-multiple/index.scss index 848f54b3c6..315baf646f 100644 --- a/packages/devui-vue/devui/cascader/components/cascader-multiple/index.scss +++ b/packages/devui-vue/devui/cascader/components/cascader-multiple/index.scss @@ -1,6 +1,7 @@ @import '../../../style/theme/color'; @import '../../../style/theme/corner'; @import '../../../style/core/font'; + .devui-tags { &-input { flex: 1; @@ -11,6 +12,7 @@ background-color: $devui-base-bg; transition: border-color 300ms cubic-bezier(0.645, 0.045, 0.355, 1); } + &-box { width: 100%; overflow: auto; @@ -20,10 +22,11 @@ align-items: center; flex-wrap: wrap; } + &-placeholder { font-size: $devui-font-size; line-height: 22px; margin-left: 6px; color: $devui-placeholder; } -} \ No newline at end of file +} diff --git a/packages/devui-vue/devui/cascader/components/cascader-tag/index.scss b/packages/devui-vue/devui/cascader/components/cascader-tag/index.scss index 2e57f9bc2f..71dd8cb947 100644 --- a/packages/devui-vue/devui/cascader/components/cascader-tag/index.scss +++ b/packages/devui-vue/devui/cascader/components/cascader-tag/index.scss @@ -1,6 +1,7 @@ @import '../../../style/theme/color'; @import '../../../style/theme/corner'; @import '../../../style/core/font'; + .devui-tag { margin: 2px 4px 2px 0; display: inline-block; @@ -12,6 +13,7 @@ border-radius: $devui-border-radius; border-color: inherit; border: 0 solid; + span { min-height: 20px; line-height: 20px; @@ -20,11 +22,12 @@ position: relative; cursor: default; } + &__close { margin-left: 12px; - font-size: $devui-font-size; + font-size: $devui-font-size; cursor: pointer; - color: #fff; + color: #ffffff; width: 14px; height: 14px; line-height: 14px; @@ -32,8 +35,9 @@ border-radius: 50%; display: inline-block; text-align: center; + &:hover { background-color: $devui-brand; } } -} \ No newline at end of file +} diff --git a/packages/devui-vue/devui/color-picker/src/color-picker.scss b/packages/devui-vue/devui/color-picker/src/color-picker.scss index 9c20bfdb54..1e51158300 100644 --- a/packages/devui-vue/devui/color-picker/src/color-picker.scss +++ b/packages/devui-vue/devui/color-picker/src/color-picker.scss @@ -2,6 +2,7 @@ .devui-color-picker { position: relative; + &-position { position: absolute; z-index: 9999; @@ -24,6 +25,7 @@ padding: 3px; border: 1px solid rgb(224, 224, 230); border-radius: 3px; + &-wrap { width: 100%; height: 26px; @@ -44,6 +46,7 @@ width: 100%; height: 100%; } + &-current-color-transparent { top: 0; right: 0; @@ -55,6 +58,7 @@ position: absolute; z-index: 2; } + &-transparent { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==); background-repeat: repeat; @@ -67,10 +71,12 @@ .color-picker-transition-leave-to { opacity: 0; } + .color-picker-transition-enter-to, .color-picker-transition-leave-from { opacity: 1; } + .color-picker-transition-enter-active, .color-picker-transition-leave-active { transition: opacity 0.2s ease-in-out; diff --git a/packages/devui-vue/devui/color-picker/src/components/color-basic/color-basic.scss b/packages/devui-vue/devui/color-picker/src/components/color-basic/color-basic.scss index 0380285bc8..d3edefbe35 100644 --- a/packages/devui-vue/devui/color-picker/src/components/color-basic/color-basic.scss +++ b/packages/devui-vue/devui/color-picker/src/components/color-basic/color-basic.scss @@ -2,6 +2,7 @@ flex-wrap: wrap; // justify-content: space-between; align-items: center; + &-div { box-sizing: content-box; margin: 4px; diff --git a/packages/devui-vue/devui/color-picker/src/components/color-history/color-history.scss b/packages/devui-vue/devui/color-picker/src/components/color-history/color-history.scss index 7a217b8877..94b4043e1b 100644 --- a/packages/devui-vue/devui/color-picker/src/components/color-history/color-history.scss +++ b/packages/devui-vue/devui/color-picker/src/components/color-history/color-history.scss @@ -9,14 +9,15 @@ border: solid 1px #e7e7e7; &.transparent { - background: linear-gradient( - to bottom right, - rgba(0, 0, 0, 0) 0%, - rgba(0, 0, 0, 0) calc(50% - 1.5px), - #f18887 50%, - rgba(0, 0, 0, 0) calc(50% + 1.5px), - rgba(0, 0, 0, 0) 100% - ); + background: + linear-gradient( + to bottom right, + rgba(0, 0, 0, 0) 0%, + rgba(0, 0, 0, 0) calc(50% - 1.5px), + #f18887 50%, + rgba(0, 0, 0, 0) calc(50% + 1.5px), + rgba(0, 0, 0, 0) 100% + ); } } } diff --git a/packages/devui-vue/devui/color-picker/src/components/color-history/color-history.tsx b/packages/devui-vue/devui/color-picker/src/components/color-history/color-history.tsx index f9c0ed30ee..266b13e8ee 100644 --- a/packages/devui-vue/devui/color-picker/src/components/color-history/color-history.tsx +++ b/packages/devui-vue/devui/color-picker/src/components/color-history/color-history.tsx @@ -15,7 +15,7 @@ const MAX_HISOTRY_COUNT = 8 * @param params * @returns */ -function useStore(v: T, { storage }: { storage?: boolean } = {}): Ref> { +function useStore(v: T, { storage }: { storage?: boolean; } = {}): Ref> { // 获取默认值 const getDefaultValue = (): T => { if (storage) { diff --git a/packages/devui-vue/devui/color-picker/src/components/color-hue-slider/color-hue-slider.scss b/packages/devui-vue/devui/color-picker/src/components/color-hue-slider/color-hue-slider.scss index 3756a5e2ce..42c760fe10 100644 --- a/packages/devui-vue/devui/color-picker/src/components/color-hue-slider/color-hue-slider.scss +++ b/packages/devui-vue/devui/color-picker/src/components/color-hue-slider/color-hue-slider.scss @@ -5,6 +5,7 @@ height: 14px; box-shadow: 2px 0 8px rgba(0, 0, 0, 0.08); border-radius: 15px; + &.transparent { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==); background-repeat: repeat; @@ -15,36 +16,39 @@ width: 100%; height: 100%; border-radius: 15px; - background: -webkit-linear-gradient( - left, - rgb(255, 0, 0) 0%, - rgb(255, 255, 0) 16.66%, - rgb(0, 255, 0) 33.33%, - rgb(0, 255, 255) 50%, - rgb(0, 0, 255) 66.66%, - rgb(255, 0, 255) 83.33%, - rgb(255, 0, 0) 100% - ); - background: -moz-linear-gradient( - left, - rgb(255, 0, 0) 0%, - rgb(255, 255, 0) 16.66%, - rgb(0, 255, 0) 33.33%, - rgb(0, 255, 255) 50%, - rgb(0, 0, 255) 66.66%, - rgb(255, 0, 255) 83.33%, - rgb(255, 0, 0) 100% - ); - background: -ms-linear-gradient( - left, - rgb(255, 0, 0) 0%, - rgb(255, 255, 0) 16.66%, - rgb(0, 255, 0) 33.33%, - rgb(0, 255, 255) 50%, - rgb(0, 0, 255) 66.66%, - rgb(255, 0, 255) 83.33%, - rgb(255, 0, 0) 100% - ); + background: + -webkit-linear-gradient( + left, + rgb(255, 0, 0) 0%, + rgb(255, 255, 0) 16.66%, + rgb(0, 255, 0) 33.33%, + rgb(0, 255, 255) 50%, + rgb(0, 0, 255) 66.66%, + rgb(255, 0, 255) 83.33%, + rgb(255, 0, 0) 100% + ); + background: + -moz-linear-gradient( + left, + rgb(255, 0, 0) 0%, + rgb(255, 255, 0) 16.66%, + rgb(0, 255, 0) 33.33%, + rgb(0, 255, 255) 50%, + rgb(0, 0, 255) 66.66%, + rgb(255, 0, 255) 83.33%, + rgb(255, 0, 0) 100% + ); + background: + -ms-linear-gradient( + left, + rgb(255, 0, 0) 0%, + rgb(255, 255, 0) 16.66%, + rgb(0, 255, 0) 33.33%, + rgb(0, 255, 255) 50%, + rgb(0, 0, 255) 66.66%, + rgb(255, 0, 255) 83.33%, + rgb(255, 0, 0) 100% + ); &-pointer { position: absolute; diff --git a/packages/devui-vue/devui/color-picker/src/components/color-palette/color-palette.scss b/packages/devui-vue/devui/color-picker/src/components/color-palette/color-palette.scss index 86eb7471fc..8204217424 100644 --- a/packages/devui-vue/devui/color-picker/src/components/color-palette/color-palette.scss +++ b/packages/devui-vue/devui/color-picker/src/components/color-palette/color-palette.scss @@ -1,6 +1,7 @@ .devui-color-picker-palette { position: relative; width: 100%; + &__white, &__black { position: absolute; @@ -9,12 +10,13 @@ right: 0; bottom: 0; } + &__black { - background: linear-gradient(0deg, #000, transparent); + background: linear-gradient(0deg, #000000, transparent); } &__white { - background: linear-gradient(90deg, #fff, hsla(0, 0%, 100%, 0)); + background: linear-gradient(90deg, #ffffff, hsla(0, 0%, 100%, 0)); } &-handler { diff --git a/packages/devui-vue/devui/color-picker/src/components/color-picker-panel/color-picker-panel.scss b/packages/devui-vue/devui/color-picker/src/components/color-picker-panel/color-picker-panel.scss index 93e7c06373..35a3c23238 100644 --- a/packages/devui-vue/devui/color-picker/src/components/color-picker-panel/color-picker-panel.scss +++ b/packages/devui-vue/devui/color-picker/src/components/color-picker-panel/color-picker-panel.scss @@ -2,6 +2,8 @@ width: 270px; padding: 12px; border-radius: 4px; - box-shadow: 0 3px 5px -1px rgba(0, 0, 0, 0.1), 0 5px 8px 0 rgba(0, 0, 0, 0.1), + box-shadow: + 0 3px 5px -1px rgba(0, 0, 0, 0.1), + 0 5px 8px 0 rgba(0, 0, 0, 0.1), 0 1px 14px 0 rgba(0, 0, 0, 0.1); } diff --git a/packages/devui-vue/devui/color-picker/src/utils/color-utils-types.ts b/packages/devui-vue/devui/color-picker/src/utils/color-utils-types.ts index 229faa0eec..6260930b5a 100644 --- a/packages/devui-vue/devui/color-picker/src/utils/color-utils-types.ts +++ b/packages/devui-vue/devui/color-picker/src/utils/color-utils-types.ts @@ -31,12 +31,12 @@ export interface position { } // Types export type ColorInt = number -export type HSV = { h: number; s: number; v: number } -export type HSVA = HSV & { a: number } -export type RGB = { r: number; g: number; b: number } -export type RGBA = RGB & { a: number } -export type HSL = { h: number; s: number; l: number } -export type HSLA = HSL & { a: number } +export type HSV = { h: number; s: number; v: number; } +export type HSVA = HSV & { a: number; } +export type RGB = { r: number; g: number; b: number; } +export type RGBA = RGB & { a: number; } +export type HSL = { h: number; s: number; l: number; } +export type HSLA = HSL & { a: number; } export type Hex = string export type Hexa = string export type Color = string | number | {} diff --git a/packages/devui-vue/devui/comment/src/comment.scss b/packages/devui-vue/devui/comment/src/comment.scss index 967d4b0b90..a8e5740774 100644 --- a/packages/devui-vue/devui/comment/src/comment.scss +++ b/packages/devui-vue/devui/comment/src/comment.scss @@ -1,30 +1,38 @@ @import '../../styles-var/devui-var.scss'; + .devui-comment { display: flex; align-items: flex-start; - &-avatar{ + + &-avatar { margin: 0 16px 0 0; } + &-right{ - + } - &-head{ + + &-head { display: flex; align-items: center; } - &-author{ + + &-author { padding: 0 8px 0 0; font-size: $devui-font-size; color: $devui-text-weak; } - &-datetime{ + + &-datetime { font-size: $devui-font-size; color: $devui-aide-text; } - &-content{ + + &-content { font-size: $devui-text; } - &-actions{ + + &-actions { padding: 0; list-style-type: none; margin: 12px 0 0; diff --git a/packages/devui-vue/devui/drawer/src/components/drawer-body.scss b/packages/devui-vue/devui/drawer/src/components/drawer-body.scss index 707fae3801..7aaba13f43 100644 --- a/packages/devui-vue/devui/drawer/src/components/drawer-body.scss +++ b/packages/devui-vue/devui/drawer/src/components/drawer-body.scss @@ -40,4 +40,4 @@ box-shadow: $devui-shadow-length-fullscreen-overlay $devui-shadow; padding: 20px; height: 100vh; -} \ No newline at end of file +} diff --git a/packages/devui-vue/devui/dropdown/src/dropdown.scss b/packages/devui-vue/devui/dropdown/src/dropdown.scss index 5a333ba05b..5b1a269bc7 100644 --- a/packages/devui-vue/devui/dropdown/src/dropdown.scss +++ b/packages/devui-vue/devui/dropdown/src/dropdown.scss @@ -26,8 +26,6 @@ } } - - .devui-dropdown-fade { @mixin d-dropdown-fade-animation { animation-name: d-dropdown-fade; @@ -62,4 +60,4 @@ animation-direction: reverse; } -} \ No newline at end of file +} diff --git a/packages/devui-vue/devui/editable-select/src/editable-select.scss b/packages/devui-vue/devui/editable-select/src/editable-select.scss index ae3919734b..b064b86b46 100644 --- a/packages/devui-vue/devui/editable-select/src/editable-select.scss +++ b/packages/devui-vue/devui/editable-select/src/editable-select.scss @@ -1,5 +1,6 @@ @import '../../style/theme/color'; @import '../../style/core/animation'; + .devui-editable-select { .devui-form-group { input::-ms-clear { @@ -129,6 +130,7 @@ width: 100%; display: block; } + .devui-dropdown-item { cursor: pointer; display: block; diff --git a/packages/devui-vue/devui/form/src/directive/d-validate-rules.ts b/packages/devui-vue/devui/form/src/directive/d-validate-rules.ts index da5a360670..9b3ec67ddf 100644 --- a/packages/devui-vue/devui/form/src/directive/d-validate-rules.ts +++ b/packages/devui-vue/devui/form/src/directive/d-validate-rules.ts @@ -213,7 +213,7 @@ function handleErrorStrategyPass(el: HTMLElement): void { } function getFormControlUID(el: HTMLElement): string { - if(el.tagName.toLocaleLowerCase() === "body") return ""; + if(el.tagName.toLocaleLowerCase() === 'body') return ''; let uid = '' if(el.parentElement.id.startsWith('dfc-')) { return el.parentElement.id; @@ -222,7 +222,7 @@ function getFormControlUID(el: HTMLElement): string { } } -function handleValidateError({el, tipEl, message = "", isFormTag, messageShowType, dfcUID, popPosition = 'right-bottom', updateOn}: Partial): void { +function handleValidateError({el, tipEl, message = '', isFormTag, messageShowType, dfcUID, popPosition = 'right-bottom', updateOn}: Partial): void { // 如果该指令用在form标签上,这里做特殊处理 if(isFormTag && messageShowType === MessageShowTypeEnum.toast) { // todo:待替换为toast @@ -236,7 +236,7 @@ function handleValidateError({el, tipEl, message = "", isFormTag, messageShowTyp // messageShowType为popover时,设置popover if(MessageShowTypeEnum.popover === messageShowType) { - EventBus.emit("showPopoverErrorMessage", {showPopover: true, message, uid: dfcUID, popPosition, updateOn} as ShowPopoverErrorMessageEventData); + EventBus.emit('showPopoverErrorMessage', {showPopover: true, message, uid: dfcUID, popPosition, updateOn} as ShowPopoverErrorMessageEventData); return; } @@ -311,7 +311,7 @@ export default { if(refName) { // 判断d-form是否传递了messageShowType属性 - messageShowType = binding.instance[refName]["messageShowType"] ?? "popover"; + messageShowType = binding.instance[refName]['messageShowType'] ?? 'popover'; } // errorStrategy可配置在options对象中 @@ -410,7 +410,7 @@ export default { const htmlEventValidateHandler = (e) => { const modelValue = e.target.value; if(messageShowType === MessageShowTypeEnum.popover) { - EventBus.emit("showPopoverErrorMessage", {showPopover: false, message: "", uid: dfcUID, popPosition, updateOn} as ShowPopoverErrorMessageEventData); + EventBus.emit('showPopoverErrorMessage', {showPopover: false, message: '', uid: dfcUID, popPosition, updateOn} as ShowPopoverErrorMessageEventData); } validateFn({validator, modelValue, el, tipEl, isFormTag: false, messageShowType, dfcUID, popPosition, updateOn}); } @@ -421,7 +421,7 @@ export default { // 如果校验时机为change,则在focus时关闭popover if(messageShowType === MessageShowTypeEnum.popover && updateOn === UpdateOnEnum.change) { vnode.children[0].el.addEventListener('focus', () => { - EventBus.emit("showPopoverErrorMessage", {showPopover: false, uid: dfcUID, updateOn} as ShowPopoverErrorMessageEventData); + EventBus.emit('showPopoverErrorMessage', {showPopover: false, uid: dfcUID, updateOn} as ShowPopoverErrorMessageEventData); }); } diff --git a/packages/devui-vue/devui/form/src/form-control/form-control.scss b/packages/devui-vue/devui/form/src/form-control/form-control.scss index 1c608a95e5..895ec0a366 100644 --- a/packages/devui-vue/devui/form/src/form-control/form-control.scss +++ b/packages/devui-vue/devui/form/src/form-control/form-control.scss @@ -60,7 +60,6 @@ } } - .devui-control-content-wrapper { .devui-popover-wrapper { position: absolute; @@ -69,7 +68,7 @@ left: 0; top: 0; z-index: 9; - + & > div { width: inherit; height: 100%; @@ -78,14 +77,13 @@ } .with-popover { - position: relative; + position: relative; + & > div { z-index: 10; } } - - .has-feedback { display: flex; align-items: center; diff --git a/packages/devui-vue/devui/form/src/form-control/form-control.tsx b/packages/devui-vue/devui/form/src/form-control/form-control.tsx index 263d68d0d9..88675ef422 100644 --- a/packages/devui-vue/devui/form/src/form-control/form-control.tsx +++ b/packages/devui-vue/devui/form/src/form-control/form-control.tsx @@ -21,11 +21,11 @@ export default defineComponent({ const dForm = reactive(inject(formInjectionKey, {} as IForm)); const labelData = reactive(dForm.labelData); const isHorizontal = labelData.layout === 'horizontal'; - const uid = uniqueId("dfc-"); + const uid = uniqueId('dfc-'); const showPopover = ref(false); const updateOn = ref('change'); - const tipMessage = ref(""); - const popPosition = ref("bottom"); + const tipMessage = ref(''); + const popPosition = ref('bottom'); let rectInfo: Partial = { width: 0, height: 0 @@ -40,14 +40,14 @@ export default defineComponent({ onMounted(() => { const el = document.getElementById(uid); elOffset = getElOffset(el); - EventBus.on("showPopoverErrorMessage", (data: ShowPopoverErrorMessageEventData) => { + EventBus.on('showPopoverErrorMessage', (data: ShowPopoverErrorMessageEventData) => { if (uid === data.uid) { rectInfo = el.getBoundingClientRect(); showPopover.value = data.showPopover; tipMessage.value = data.message; popPosition.value = data.popPosition as any; // todo: 待popover组件positionType完善类型之后再替换类型 - popoverLeftPosition = popPosition.value === "top" || popPosition.value === "bottom" ? rectInfo.right - (rectInfo.width / 2) : rectInfo.right; - popoverTopPosition = popPosition.value === "top" ? elOffset.top + (rectInfo.height / 2) - rectInfo.height : elOffset.top + (rectInfo.height / 2); + popoverLeftPosition = popPosition.value === 'top' || popPosition.value === 'bottom' ? rectInfo.right - (rectInfo.width / 2) : rectInfo.right; + popoverTopPosition = popPosition.value === 'top' ? elOffset.top + (rectInfo.height / 2) - rectInfo.height : elOffset.top + (rectInfo.height / 2); updateOn.value = data.updateOn ?? 'change'; } }); @@ -87,7 +87,7 @@ export default defineComponent({ width: rectInfo.width + 'px', height: rectInfo.height + 'px', }}> - + } diff --git a/packages/devui-vue/devui/form/src/form.tsx b/packages/devui-vue/devui/form/src/form.tsx index f2d48877f8..0e05e31b41 100644 --- a/packages/devui-vue/devui/form/src/form.tsx +++ b/packages/devui-vue/devui/form/src/form.tsx @@ -41,7 +41,7 @@ export default defineComponent({ }, rules: props.rules, columnsClass: props.columnsClass, - messageShowType: "popover" + messageShowType: 'popover' }); const onSubmit = (e) => { diff --git a/packages/devui-vue/devui/form/src/util/index.ts b/packages/devui-vue/devui/form/src/util/index.ts index 8130e097d2..dc1cd3f6a4 100644 --- a/packages/devui-vue/devui/form/src/util/index.ts +++ b/packages/devui-vue/devui/form/src/util/index.ts @@ -20,7 +20,7 @@ export function getElOffset(curEl: HTMLElement) { totalTop += curEl.offsetTop; //现在开始一级一级往上查找,只要没有遇到body,把父级参照物的边框和偏移相加 while (par){ - if (navigator.userAgent.indexOf("MSIE 8.0") === -1){ //不是IE8才进行累加父级参照物的边框 + if (navigator.userAgent.indexOf('MSIE 8.0') === -1){ //不是IE8才进行累加父级参照物的边框 totalTop += par.clientTop; totalLeft += par.clientLeft; } diff --git a/packages/devui-vue/devui/gantt/src/gantt-bar-parent/index.tsx b/packages/devui-vue/devui/gantt/src/gantt-bar-parent/index.tsx index c20a7cad96..ae31182b29 100644 --- a/packages/devui-vue/devui/gantt/src/gantt-bar-parent/index.tsx +++ b/packages/devui-vue/devui/gantt/src/gantt-bar-parent/index.tsx @@ -39,8 +39,8 @@ export default defineComponent({ const percentage = ref(0) let left = ref(0) let width = ref(0) - let max = 100 - let min = 0 + const max = 100 + const min = 0 let duration = ref('') const setValue = (value: number | null): void => { diff --git a/packages/devui-vue/devui/image-preview/src/image-preview.scss b/packages/devui-vue/devui/image-preview/src/image-preview.scss index 49c07261e2..97bfa307ba 100644 --- a/packages/devui-vue/devui/image-preview/src/image-preview.scss +++ b/packages/devui-vue/devui/image-preview/src/image-preview.scss @@ -110,6 +110,7 @@ } } } + .devui-image-preview-bg { position: fixed; left: 0; diff --git a/packages/devui-vue/devui/input-icon/src/input-icon.scss b/packages/devui-vue/devui/input-icon/src/input-icon.scss index 8a38b1d145..4cd0479acd 100644 --- a/packages/devui-vue/devui/input-icon/src/input-icon.scss +++ b/packages/devui-vue/devui/input-icon/src/input-icon.scss @@ -1,27 +1,31 @@ $icon-size: 26px; $icon-offset: 1px; $icon-left: 2px; + .d-input-icon-container { + display: flex; + flex-direction: row; + align-items: center; + position: relative; + + label { + flex: 1; + background-color: #cccccc; + + input { + padding-right: $icon-size + $icon-offset + $icon-left; + } + } + + span { + position: absolute; + top: 1px; + bottom: 1px; + right: $icon-offset; + width: $icon-size; display: flex; - flex-direction: row; + justify-content: center; align-items: center; - position: relative; - label { - flex: 1; - background-color: #ccc; - input { - padding-right: $icon-size + $icon-offset + $icon-left; - } - } - span { - position: absolute; - top: 1px; - bottom: 1px; - right: $icon-offset; - width: $icon-size; - display: flex; - justify-content: center; - align-items: center; - box-sizing: border-box; - } -} \ No newline at end of file + box-sizing: border-box; + } +} diff --git a/packages/devui-vue/devui/input-number/src/input-number.scss b/packages/devui-vue/devui/input-number/src/input-number.scss index 287e4fb55b..57874dd8aa 100644 --- a/packages/devui-vue/devui/input-number/src/input-number.scss +++ b/packages/devui-vue/devui/input-number/src/input-number.scss @@ -33,7 +33,6 @@ display: flex !important; } - &.devui-input-disabled { .devui-subtract, .devui-add, diff --git a/packages/devui-vue/devui/input/src/input.scss b/packages/devui-vue/devui/input/src/input.scss index 727abf2c1c..229b6cd039 100644 --- a/packages/devui-vue/devui/input/src/input.scss +++ b/packages/devui-vue/devui/input/src/input.scss @@ -5,6 +5,7 @@ &__wrap { position: relative; @include flex('space-between'); + .devui-input-restore { padding-right: 32px; } diff --git a/packages/devui-vue/devui/panel/src/body/panel-body.tsx b/packages/devui-vue/devui/panel/src/body/panel-body.tsx index 7a7827f365..9868678615 100644 --- a/packages/devui-vue/devui/panel/src/body/panel-body.tsx +++ b/packages/devui-vue/devui/panel/src/body/panel-body.tsx @@ -6,8 +6,8 @@ export default defineComponent({ name: 'DPanelBody', props:PanelProps, setup(props,ctx){ - let animationName = inject('showAnimation') as Ref; - let hasLeftPadding = inject('hasLeftPadding') as Ref; + const animationName = inject('showAnimation') as Ref; + const hasLeftPadding = inject('hasLeftPadding') as Ref; const keys = Object.keys(Store.state()); const key = keys.pop(); const isCollapsed = Store.state(); diff --git a/packages/devui-vue/devui/panel/src/header/panel-header.tsx b/packages/devui-vue/devui/panel/src/header/panel-header.tsx index 9b8c7a4c15..25e36da9d2 100644 --- a/packages/devui-vue/devui/panel/src/header/panel-header.tsx +++ b/packages/devui-vue/devui/panel/src/header/panel-header.tsx @@ -14,7 +14,7 @@ export default defineComponent({ // 最好cursor是default 而不是 pointer; // pointer一般用于可点击的 // 用changeFlag - let changeFlag = ref(); + const changeFlag = ref(); let header = null; diff --git a/packages/devui-vue/devui/panel/src/panel.scss b/packages/devui-vue/devui/panel/src/panel.scss index 76ab896446..455f24186e 100644 --- a/packages/devui-vue/devui/panel/src/panel.scss +++ b/packages/devui-vue/devui/panel/src/panel.scss @@ -25,7 +25,6 @@ } } - .devui-panel-body { display: flex; position: relative; diff --git a/packages/devui-vue/devui/result/src/result.scss b/packages/devui-vue/devui/result/src/result.scss index 9a0cec2b66..19a631d240 100644 --- a/packages/devui-vue/devui/result/src/result.scss +++ b/packages/devui-vue/devui/result/src/result.scss @@ -10,18 +10,21 @@ box-sizing: border-box; padding: 30px; - &__icon{ - &-success::before{ - color: $devui-success + &__icon { + &-success::before { + color: $devui-success; } - &-danger::before{ - color: $devui-danger + + &-danger::before { + color: $devui-danger; } - &-warning::before{ - color: $devui-warning + + &-warning::before { + color: $devui-warning; } - &-info::before{ - color: $devui-info + + &-info::before { + color: $devui-info; } } @@ -37,7 +40,7 @@ font-size: $devui-font-size-md; } - &__extra{ + &__extra { margin-top: 30px; } -} \ No newline at end of file +} diff --git a/packages/devui-vue/devui/shared/devui-codebox/devui-codebox.tsx b/packages/devui-vue/devui/shared/devui-codebox/devui-codebox.tsx index 99237fbdd1..df358302a9 100644 --- a/packages/devui-vue/devui/shared/devui-codebox/devui-codebox.tsx +++ b/packages/devui-vue/devui/shared/devui-codebox/devui-codebox.tsx @@ -10,7 +10,7 @@ import DevuiHighlight from '../devui-highlight/devui-highlight'; import './devui-codebox.scss'; export default defineComponent({ - name: 'd-codebox', + name: 'DCodebox', props: { id: String, sourceData: { @@ -22,7 +22,7 @@ export default defineComponent({ const sourceData = props.sourceData; const expanded = ref(false); const _copied = ref(false); - let codeTabID = ref('TSX'); + const codeTabID = ref('TSX'); let componentCode: Array; const toggleCode = () => { diff --git a/packages/devui-vue/devui/shared/util/dom.ts b/packages/devui-vue/devui/shared/util/dom.ts index b2cb956688..dbd487234a 100644 --- a/packages/devui-vue/devui/shared/util/dom.ts +++ b/packages/devui-vue/devui/shared/util/dom.ts @@ -1,4 +1,4 @@ -import { ComponentPublicInstance } from "@vue/runtime-core"; +import { ComponentPublicInstance } from '@vue/runtime-core'; /** * diff --git a/packages/devui-vue/devui/skeleton/src/item/item.scss b/packages/devui-vue/devui/skeleton/src/item/item.scss index 8090ea49ec..ce29e98200 100644 --- a/packages/devui-vue/devui/skeleton/src/item/item.scss +++ b/packages/devui-vue/devui/skeleton/src/item/item.scss @@ -1,4 +1,4 @@ -@import "../../../styles-var/devui-var.scss"; +@import '../../../styles-var/devui-var.scss'; .devui-skeleton__shape__avatar, .devui-skeleton__shape__image, @@ -6,20 +6,24 @@ .devui-skeleton__shape__button { background-color: #f2f2f2; } + .devui-skeleton__shape__avatar { width: 40px; height: 40px; background-color: #f2f2f2; } + .devui-skeleton__shape__image { width: 200px; height: 150px; border-radius: 4px; } + .devui-skeleton__shape__title { width: 40%; height: 24px; } + .devui-skeleton__shape__paragraph { &__item { background-color: #f2f2f2; @@ -32,6 +36,7 @@ width: 60%; } } + .devui-skeleton__shape__button { width: 115px; height: 32px; @@ -49,7 +54,8 @@ .devui-skeleton__animated.devui-skeleton__shape__title, .devui-skeleton__animated.devui-skeleton__shape__paragraph > .devui-skeleton__shape__paragraph__item, .devui-skeleton__animated.devui-skeleton__shape__button { - background: linear-gradient( + background: + linear-gradient( 100deg, rgba(255, 255, 255, 0) 40%, rgba(255, 255, 255, 0.5) 50%, diff --git a/packages/devui-vue/devui/skeleton/src/skeleton.scss b/packages/devui-vue/devui/skeleton/src/skeleton.scss index 28bccd9862..c31f34ff58 100644 --- a/packages/devui-vue/devui/skeleton/src/skeleton.scss +++ b/packages/devui-vue/devui/skeleton/src/skeleton.scss @@ -1,4 +1,4 @@ -@import "../../styles-var/devui-var.scss"; +@import '../../styles-var/devui-var.scss'; .devui-skeleton { display: flex; @@ -46,7 +46,6 @@ } } - @keyframes skeletonLoading { to { background-position-x: -20%; @@ -56,7 +55,8 @@ .devui-skeleton__animated > .devui-skeleton__group > .devui-skeleton__title, .devui-skeleton__animated > .devui-skeleton__group > div > .devui-skeleton__item, .devui-skeleton__animated > .devui-skeleton__avatar > .avatar { - background: linear-gradient( + background: + linear-gradient( 100deg, rgba(255, 255, 255, 0) 40%, rgba(255, 255, 255, 0.5) 50%, diff --git a/packages/devui-vue/devui/splitter/src/splitter-bar.tsx b/packages/devui-vue/devui/splitter/src/splitter-bar.tsx index 363a131e33..bfc8b08f29 100644 --- a/packages/devui-vue/devui/splitter/src/splitter-bar.tsx +++ b/packages/devui-vue/devui/splitter/src/splitter-bar.tsx @@ -19,10 +19,10 @@ import './splitter-bar.scss' export default defineComponent({ name: 'DSplitterBar', - props: splitterBarProps, components: { DToolTip, }, + props: splitterBarProps, setup(props: SplitterBarProps) { const store: SplitterStore = inject('splitterStore') const state = reactive({ diff --git a/packages/devui-vue/devui/splitter/src/splitter.tsx b/packages/devui-vue/devui/splitter/src/splitter.tsx index 4f3eabdb8b..e49ebec1b4 100644 --- a/packages/devui-vue/devui/splitter/src/splitter.tsx +++ b/packages/devui-vue/devui/splitter/src/splitter.tsx @@ -25,7 +25,7 @@ export default defineComponent({ const domRef = ref() const refreshSplitterContainerSize = () => { - if (!domRef) return + if (!domRef.value) return let containerSize = 0 if (props.orientation === 'vertical') { containerSize = domRef.value.clientHeight diff --git a/packages/devui-vue/devui/statistic/src/statistic.scss b/packages/devui-vue/devui/statistic/src/statistic.scss index a9d365492e..6f47beb13f 100644 --- a/packages/devui-vue/devui/statistic/src/statistic.scss +++ b/packages/devui-vue/devui/statistic/src/statistic.scss @@ -10,6 +10,7 @@ margin-bottom: 4px; font-size: 14px; } + &-content { font-size: 24px; display: flex; diff --git a/packages/devui-vue/devui/steps-guide/hooks/use-steps-guide-position.ts b/packages/devui-vue/devui/steps-guide/hooks/use-steps-guide-position.ts index 86e3bdd770..01eeea5d25 100644 --- a/packages/devui-vue/devui/steps-guide/hooks/use-steps-guide-position.ts +++ b/packages/devui-vue/devui/steps-guide/hooks/use-steps-guide-position.ts @@ -68,7 +68,7 @@ export function useStepsGuidePosition( if(props.scrollToTargetSwitch && typeof stepGuideElement.scrollIntoView === 'function') { nextTick(() => { // 位置更新后滚动视图 - stepGuideElement.scrollIntoView({behavior: "smooth", block: "nearest", inline: "nearest"}) + stepGuideElement.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'nearest'}) }) } } diff --git a/packages/devui-vue/devui/style/core/_dropdown.scss b/packages/devui-vue/devui/style/core/_dropdown.scss index f6e6defa90..bdeb2f4921 100755 --- a/packages/devui-vue/devui/style/core/_dropdown.scss +++ b/packages/devui-vue/devui/style/core/_dropdown.scss @@ -69,7 +69,6 @@ // .open > & { // display: block; // } - > li { position: relative; diff --git a/packages/devui-vue/devui/table/src/body/body.scss b/packages/devui-vue/devui/table/src/body/body.scss index fc9ea1f320..cc3c558f18 100644 --- a/packages/devui-vue/devui/table/src/body/body.scss +++ b/packages/devui-vue/devui/table/src/body/body.scss @@ -19,15 +19,16 @@ } } - .devui-sticky-cell { position: sticky; z-index: 5; background-color: inherit; + &.left { - box-shadow: rgba(0,0,0,.05) $devui-shadow-length-slide-right; + box-shadow: rgba(0, 0, 0, 0.05) $devui-shadow-length-slide-right; } + &.right { - box-shadow: rgba(0,0,0,.05) $devui-shadow-length-slide-left; + box-shadow: rgba(0, 0, 0, 0.05) $devui-shadow-length-slide-left; } } diff --git a/packages/devui-vue/devui/table/src/body/body.tsx b/packages/devui-vue/devui/table/src/body/body.tsx index 46f0194033..6e140aa8ac 100644 --- a/packages/devui-vue/devui/table/src/body/body.tsx +++ b/packages/devui-vue/devui/table/src/body/body.tsx @@ -23,7 +23,7 @@ export default defineComponent({ // 行前的 checkbox const tdAttrs = computed(() => isFixedLeft.value ? ({ class: 'devui-sticky-cell left', - style: "left:0;" + style: 'left:0;' }) : null); const renderCheckbox = (index: number) => table.props.checkable ? ( @@ -61,7 +61,7 @@ const TD = defineComponent({ type: Number, } }, - setup(props: { column: Column, row: any, index: number }) { + setup(props: { column: Column; row: any; index: number; }) { const column = toRef(props, 'column'); // 固定列 diff --git a/packages/devui-vue/devui/table/src/header/filter/filter.scss b/packages/devui-vue/devui/table/src/header/filter/filter.scss index 97d9907c17..2b3fedd232 100644 --- a/packages/devui-vue/devui/table/src/header/filter/filter.scss +++ b/packages/devui-vue/devui/table/src/header/filter/filter.scss @@ -4,6 +4,7 @@ background: $devui-connected-overlay-bg; border-radius: $devui-border-radius; box-sizing: content-box; + .drop-down-item { white-space: nowrap; text-overflow: ellipsis; @@ -54,7 +55,6 @@ color: $devui-brand; } - .normal-filter-list-container { overflow-y: auto; } @@ -140,4 +140,4 @@ fill: $devui-icon-fill-active-hover; } } -} \ No newline at end of file +} diff --git a/packages/devui-vue/devui/table/src/header/filter/filter.tsx b/packages/devui-vue/devui/table/src/header/filter/filter.tsx index 62581158e2..4bc23008b4 100644 --- a/packages/devui-vue/devui/table/src/header/filter/filter.tsx +++ b/packages/devui-vue/devui/table/src/header/filter/filter.tsx @@ -1,7 +1,7 @@ -import { defineComponent, PropType, ref, computed } from "vue"; -import { CustomFilterSlot, FilterConfig, FilterResults } from "../../column/column.type"; +import { defineComponent, PropType, ref, computed } from 'vue'; +import { CustomFilterSlot, FilterConfig, FilterResults } from '../../column/column.type'; import { Dropdown } from '../../../../dropdown'; -import { Checkbox } from "../../../../checkbox"; +import { Checkbox } from '../../../../checkbox'; import './filter.scss'; @@ -76,7 +76,7 @@ export const Filter = defineComponent({ return () => ( <> - + - {props.customTemplate?.({ value: props.modelValue, onChange: props["onUpdate:modelValue"] }) ?? dropdownContent.value()} + {props.customTemplate?.({ value: props.modelValue, onChange: props['onUpdate:modelValue'] }) ?? dropdownContent.value()} ) diff --git a/packages/devui-vue/devui/table/src/header/header.scss b/packages/devui-vue/devui/table/src/header/header.scss index 9a467e994f..5de47eb30e 100644 --- a/packages/devui-vue/devui/table/src/header/header.scss +++ b/packages/devui-vue/devui/table/src/header/header.scss @@ -15,7 +15,7 @@ border: none; } } - + .header-container { position: relative; display: flex; diff --git a/packages/devui-vue/devui/table/src/header/header.tsx b/packages/devui-vue/devui/table/src/header/header.tsx index 610a002fe7..f765821bd4 100644 --- a/packages/devui-vue/devui/table/src/header/header.tsx +++ b/packages/devui-vue/devui/table/src/header/header.tsx @@ -25,7 +25,7 @@ export default defineComponent({ const thAttrs = computed(() => isFixedLeft.value ? ({ class: 'devui-sticky-cell left', - style: "left:0;" + style: 'left:0;' }) : null); const checkbox = computed(() => table.props.checkable ? ( diff --git a/packages/devui-vue/devui/tag/src/tag.scss b/packages/devui-vue/devui/tag/src/tag.scss index ea9cb49551..a7bfc3e709 100644 --- a/packages/devui-vue/devui/tag/src/tag.scss +++ b/packages/devui-vue/devui/tag/src/tag.scss @@ -27,7 +27,7 @@ $devui-tag-normal-config: ( border-color: $devui-danger-line ), colorful: ( - background-color: #fff + background-color: #ffffff ), deletable: ( padding-right: 32px @@ -50,7 +50,6 @@ $devui-tag-normal-config: ( align-items: center; position: relative; cursor: default; - @each $type in default, primary, success, warning, danger, colorful, deletable { &.devui-tag-#{$type} { @each $key, $value in map-get($devui-tag-normal-config, $type) { @@ -59,6 +58,7 @@ $devui-tag-normal-config: ( } } } + .remove-button { display: inline-block; margin-left: 12px; @@ -72,6 +72,7 @@ $devui-tag-normal-config: ( position: absolute; top: 50%; transform: translateY(-50%); + i { /* 取消icon自带的偏移 */ vertical-align: 0; diff --git a/packages/devui-vue/devui/textarea/src/textarea.tsx b/packages/devui-vue/devui/textarea/src/textarea.tsx index 52c3f77ae5..e7c6bb88bf 100644 --- a/packages/devui-vue/devui/textarea/src/textarea.tsx +++ b/packages/devui-vue/devui/textarea/src/textarea.tsx @@ -1,11 +1,11 @@ -import { defineComponent, ref } from "vue"; -import { textareaProps, TextareaProps } from "./textarea-types"; -import "./textarea.scss"; +import { defineComponent, ref } from 'vue'; +import { textareaProps, TextareaProps } from './textarea-types'; +import './textarea.scss'; export default defineComponent({ - name: "DTextarea", + name: 'DTextarea', props: textareaProps, - emits: ["update:value", "focus", "blur", "change", "keydown"], + emits: ['update:value', 'focus', 'blur', 'change', 'keydown'], setup(props: TextareaProps, ctx) { const textareaCls = { error: props.error, @@ -16,19 +16,19 @@ export default defineComponent({ const onInput = ($event: Event) => { const inputValue = ($event.target as HTMLInputElement).value; curValueRef.value = inputValue; - ctx.emit("update:value", inputValue); + ctx.emit('update:value', inputValue); }, onFocus = ($event: Event) => { - ctx.emit("focus", $event); + ctx.emit('focus', $event); }, onBlur = ($event: Event) => { - ctx.emit("blur", $event); + ctx.emit('blur', $event); }, onChange = ($event: Event) => { - ctx.emit("change", ($event.target as HTMLInputElement).value); + ctx.emit('change', ($event.target as HTMLInputElement).value); }, onKeydown = ($event: KeyboardEvent) => { - ctx.emit("keydown", $event); + ctx.emit('keydown', $event); }; return { @@ -80,7 +80,7 @@ export default defineComponent({ {showCount && (
{curValueRef.length} - {!(maxLength ?? false) ? "" : " / " + maxLength} + {!(maxLength ?? false) ? '' : ' / ' + maxLength}
)} diff --git a/packages/devui-vue/devui/time-axis/src/time-axis.scss b/packages/devui-vue/devui/time-axis/src/time-axis.scss index 24b1ec55a1..187a20669f 100644 --- a/packages/devui-vue/devui/time-axis/src/time-axis.scss +++ b/packages/devui-vue/devui/time-axis/src/time-axis.scss @@ -185,7 +185,6 @@ $devui-time-axis-item-dot-size: 18px; // } // } //} - &-type { &-primary { border: 2px solid $devui-placeholder; diff --git a/packages/devui-vue/devui/time-picker/src/components/popup-line/index.scss b/packages/devui-vue/devui/time-picker/src/components/popup-line/index.scss index 854f28384f..d6b63d346f 100644 --- a/packages/devui-vue/devui/time-picker/src/components/popup-line/index.scss +++ b/packages/devui-vue/devui/time-picker/src/components/popup-line/index.scss @@ -8,6 +8,7 @@ height: 256px; border-bottom: 1px solid $devui-dividing-line; display: flex; + .time-item { height: 100%; display: inline-block; diff --git a/packages/devui-vue/devui/time-picker/src/components/time-popup/index.scss b/packages/devui-vue/devui/time-picker/src/components/time-popup/index.scss index bc97ca4673..61a8ae49cc 100644 --- a/packages/devui-vue/devui/time-picker/src/components/time-popup/index.scss +++ b/packages/devui-vue/devui/time-picker/src/components/time-popup/index.scss @@ -30,4 +30,4 @@ display: flex; justify-content: space-between; align-items: center; -} \ No newline at end of file +} diff --git a/packages/devui-vue/devui/transfer/src/transfer.scss b/packages/devui-vue/devui/transfer/src/transfer.scss index a1f5234eb9..6132d23d1a 100644 --- a/packages/devui-vue/devui/transfer/src/transfer.scss +++ b/packages/devui-vue/devui/transfer/src/transfer.scss @@ -69,10 +69,11 @@ $devui-transfer-body-list-item-height: 32px; } } - &-drag{ + &-drag { width: 100%; display: flex; align-items: center; + &__icon { padding: 0 4px; visibility: hidden; @@ -81,7 +82,8 @@ $devui-transfer-body-list-item-height: 32px; align-items: center; } } - &-drag:hover .devui-transfer-panel-body-list-drag__icon{ + + &-drag:hover .devui-transfer-panel-body-list-drag__icon { visibility: visible; } @@ -99,7 +101,8 @@ $devui-transfer-body-list-item-height: 32px; color: $devui-disabled-text; } } - &-nodrag{ + + &-nodrag { padding: 0 20px; } } @@ -113,6 +116,7 @@ $devui-transfer-body-list-item-height: 32px; &-group { width: 36px; + &-left .devui-btn, &-right .devui-btn { width: 36px; @@ -128,16 +132,20 @@ $devui-transfer-body-list-item-height: 32px; } } } - &-drag-dragging{ + + &-drag-dragging { background-color: $devui-brand-foil; } - &-drag-over{ + + &-drag-over { background-color: $devui-brand-hover; } } -.devui-transfer–drag-over-top{ - border-top-color: $devui-brand-active; + +.devui-transfer–drag-over-top { + border-top-color: $devui-brand-active; } + .devui-transfer–drag-over-bottom { border-bottom-color: $devui-brand-active; } diff --git a/packages/devui-vue/devui/tree-select/src/tree-select.scss b/packages/devui-vue/devui/tree-select/src/tree-select.scss index 6954cf41a3..1b02d78ccb 100644 --- a/packages/devui-vue/devui/tree-select/src/tree-select.scss +++ b/packages/devui-vue/devui/tree-select/src/tree-select.scss @@ -48,15 +48,16 @@ $tree-select-item-font-size: 16px; outline: none; background-color: $devui-base-bg; overflow: auto; + &:empty::before { - color:lightgrey; - content:attr(placeholder); + color: lightgrey; + content: attr(placeholder); vertical-align: middle; } } .devui-tree-select-value { - display: inline-block; + display: inline-block; height: 80%; vertical-align: middle; } @@ -104,11 +105,12 @@ $tree-select-item-font-size: 16px; .devui-tree-select-clearable { position: relative; + &:hover { .devui-tree-select-clear { display: inline-flex; } - + .devui-tree-select-arrow { display: none; } @@ -139,4 +141,3 @@ $tree-select-item-font-size: 16px; color: $devui-icon-fill-active; } } - diff --git a/packages/devui-vue/devui/tree/src/composables/use-operate.tsx b/packages/devui-vue/devui/tree/src/composables/use-operate.tsx index 801f4a1461..67b94de8e4 100644 --- a/packages/devui-vue/devui/tree/src/composables/use-operate.tsx +++ b/packages/devui-vue/devui/tree/src/composables/use-operate.tsx @@ -11,16 +11,16 @@ interface TypeOperator { handleDelete: () => void } interface TypeOperateIconReflect { - id: TypeID, + id: TypeID renderIcon: (data: TreeItem) => JSX.Element } interface TypeeditStatusReflect { [id: TypeID]: boolean } interface TypeReturnUseOperate { - editStatusReflect: Ref, - operateIconReflect: Ref>, - handleReflectIdToIcon: TypeHandleReflectIdToIcon, + editStatusReflect: Ref + operateIconReflect: Ref> + handleReflectIdToIcon: TypeHandleReflectIdToIcon } type TypeUseOperate = (treeData: Ref) => TypeReturnUseOperate type TypeHandleReflectIdToIcon = (id: TypeID, operate: TypeOperator) => void diff --git a/packages/devui-vue/devui/tree/src/tree.scss b/packages/devui-vue/devui/tree/src/tree.scss index 2924182987..bec4537fcb 100644 --- a/packages/devui-vue/devui/tree/src/tree.scss +++ b/packages/devui-vue/devui/tree/src/tree.scss @@ -18,6 +18,7 @@ $keyframe-blue: #5e7ce0; background-color: $devui-brand; position: absolute; } + .devui-tree-node { color: $devui-text-weak; line-height: 1.5; @@ -29,12 +30,15 @@ $keyframe-blue: #5e7ce0; border-top: 1px solid transparent; border-bottom: 1px solid transparent; } + &-inner { color: $devui-brand; } + &-prev { border-top: 1px solid $devui-brand; } + &-next { border-bottom: 1px solid $devui-brand; } @@ -170,6 +174,7 @@ $keyframe-blue: #5e7ce0; color: #f2b806; } } + &__indent { display: inline-block; width: 16px; diff --git a/packages/devui-vue/docs/components/panel/index.md b/packages/devui-vue/docs/components/panel/index.md index a02df67c87..d43748a783 100644 --- a/packages/devui-vue/docs/components/panel/index.md +++ b/packages/devui-vue/docs/components/panel/index.md @@ -7,54 +7,57 @@ 当页面内容需要进行分组显示时使用,一般包含头部、内容区域、底部三个部分。 ### 基本用法 + :::demo ```vue ``` + ::: ### 多种类型 -面板类型分为default、primary、success,danger、warning、info。 +面板类型分为 default、primary、success,danger、warning、info。 :::demo + ```vue ``` + ::: ### 阻止折叠 -某种情况下,我们需要阻止面板收起。Panel提供了这项API,我们可以使用beforeToggle来阻止面板的收起 +某种情况下,我们需要阻止面板收起。Panel 提供了这项 API,我们可以使用 beforeToggle 来阻止面板的收起 -根据条件判断,当panel展开时,点击阻止折叠按钮,将无法折叠panel。当panel展开时不影响操作。 +根据条件判断,当 panel 展开时,点击阻止折叠按钮,将无法折叠 panel。当 panel 展开时不影响操作。 :::demo + ```vue ``` + ::: ### 动态切换 -我们以hasLeftPadding为例 +我们以 hasLeftPadding 为例 理论上所有的属性都可以动态切换 :::demo + ```vue ``` -::: - +::: ### API -|参数| 类型| 默认| 说明| -|:-:|:-:|:-:|:-:| -|type| PanelType| 'default'| 可选,面板的类型| -|cssClass| string| -- | 可选,自定义 class 名| -|isCollapsed| boolean| false | 可选,是否展开| -|hasLeftPadding| boolean| true | 可选,是否显示左侧填充| -|showAnimation| boolean| true | 可选,是否展示动画| -|beforeToggle| Function\|Promise\|Observable| -- | 可选,面板折叠状态改变前的回调函数,返回 boolean 类型,返回 false 可以阻止面板改变折叠状态 根据条件阻止折叠| -|toggle| Function| -- | 可选,面板当前状态的回调函数,返回boolean类型,返回 false 代表面板被收起,返回 true 代表面板展开 +| 参数 | 类型 | 默认 | 说明 | +| :------------: | :---------------------------: | :-------: | :---------------------------------------------------------------------------------------------------------: | +| type | PanelType | 'default' | 可选,面板的类型 | +| cssClass | string | -- | 可选,自定义 class 名 | +| isCollapsed | boolean | false | 可选,是否展开 | +| hasLeftPadding | boolean | true | 可选,是否显示左侧填充 | +| showAnimation | boolean | true | 可选,是否展示动画 | +| beforeToggle | Function\|Promise\|Observable | -- | 可选,面板折叠状态改变前的回调函数,返回 boolean 类型,返回 false 可以阻止面板改变折叠状态 根据条件阻止折叠 | +| toggle | Function | -- | 可选,面板当前状态的回调函数,返回 boolean 类型,返回 false 代表面板被收起,返回 true 代表面板展开 | ### 接口&类型定义 -```javascript + +```javascript export type PanelType = 'default' | 'primary' | 'success' | 'danger' | 'warning' | 'info'; ``` diff --git a/packages/devui-vue/docs/components/statistic/index.md b/packages/devui-vue/docs/components/statistic/index.md index 73f41d010e..f1a9d86d61 100644 --- a/packages/devui-vue/docs/components/statistic/index.md +++ b/packages/devui-vue/docs/components/statistic/index.md @@ -25,7 +25,7 @@ :value="999999"> - + ``` diff --git a/packages/devui-vue/docs/en-US/components/panel/index.md b/packages/devui-vue/docs/en-US/components/panel/index.md index 429b610eff..496dcba0cf 100644 --- a/packages/devui-vue/docs/en-US/components/panel/index.md +++ b/packages/devui-vue/docs/en-US/components/panel/index.md @@ -1,6 +1,6 @@ # Panel -Panels are usually used for grouping +Panels are usually used for grouping ### When to use @@ -12,43 +12,44 @@ it is used when the page content needs to be grouped for display, and generally ```vue ``` + ::: ### Type @@ -56,72 +57,89 @@ export default defineComponent({ Panels have six types: default, primary, success, danger, warning, info. :::demo + ```vue ``` + ::: ### Prevent Collapse -if you dont want panel to fold. You can use ``beforeToggle`` properties +if you dont want panel to fold. You can use `beforeToggle` properties If beforeToggle return False. The Panel will can not to fold. But Unaffected when unfolded - ::demo + ```vue ``` + ::: ### Properties Dynamic Change @@ -145,50 +164,49 @@ We take hasLeftPadding properties as an example. Theoretically all properties can dynamic change. We only take hasLeftPadding properties as an example. :::demo + ```vue ``` -::: +::: ### API -|Property|Type|Descript|default Value| -|:-:|:-:|:-:|:-:| -|type| PanelType| 'default'| Optional. Can be set Panel Type| -|cssClass| string| -- | Optional. User-defined class name| -|isCollapsed| boolean| false | Optional. Optional. Whether to expand the panel| -|hasLeftPadding| boolean| true | Optional. Whether to display the left padding| -|showAnimation| boolean| true | Optional. Indicating whether to display animations.| -|beforeToggle| Function\|Promise\|Observable| -- | 可 Optional. Callback function before the panel folding status changes. The value of this parameter is of the boolean type. If false is returned, the panel folding status changes.| -|toggle| Function| -- | Optional. Callback upon panel click to return the expanded status of the current panel. +| Property | Type | Descript | default Value | +| :------------: | :---------------------------: | :-------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| type | PanelType | 'default' | Optional. Can be set Panel Type | +| cssClass | string | -- | Optional. User-defined class name | +| isCollapsed | boolean | false | Optional. Optional. Whether to expand the panel | +| hasLeftPadding | boolean | true | Optional. Whether to display the left padding | +| showAnimation | boolean | true | Optional. Indicating whether to display animations. | +| beforeToggle | Function\|Promise\|Observable | -- | Optional. Callback function before the panel folding status changes. The value of this parameter is of the boolean type. If false is returned, the panel folding status changes. | +| toggle | Function | -- | Optional. Callback upon panel click to return the expanded status of the current panel. | ### declare Interface & type + ```javascript export type PanelType = 'default' | 'primary' | 'success' | 'danger' | 'warning' | 'info'; -``` \ No newline at end of file +``` diff --git a/packages/devui-vue/docs/en-US/components/statistic/index.md b/packages/devui-vue/docs/en-US/components/statistic/index.md index 26422c59f7..7401b56c55 100644 --- a/packages/devui-vue/docs/en-US/components/statistic/index.md +++ b/packages/devui-vue/docs/en-US/components/statistic/index.md @@ -25,7 +25,7 @@ Used when it is necessary to display statistical data with description :value="999999"> - + ``` diff --git a/packages/devui-vue/docs/vite.config.ts b/packages/devui-vue/docs/vite.config.ts index a8d8d6071e..6d2a00609e 100644 --- a/packages/devui-vue/docs/vite.config.ts +++ b/packages/devui-vue/docs/vite.config.ts @@ -6,8 +6,7 @@ import svgLoader from 'vite-svg-loader' export default defineConfig({ resolve: { alias: [ - { find: '@devui', replacement: path.resolve(__dirname, '../devui') }, - { find: '@devui/theme', replacement: path.resolve(__dirname, '../../devui-theme') }, + { find: '@devui', replacement: path.resolve(__dirname, '../devui') } ] }, plugins: [ @@ -15,7 +14,7 @@ export default defineConfig({ svgLoader(), ], optimizeDeps:{ - exclude: ['lodash-es','mitt','async-validator'], + exclude: ['lodash-es','mitt','async-validator', 'css-vars-ponyfill', 'rxjs'], include: ['lodash'] }, server: { diff --git a/packages/devui-vue/index.html b/packages/devui-vue/index.html deleted file mode 100644 index 637f8df344..0000000000 --- a/packages/devui-vue/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - DevUI - - -
- - - diff --git a/packages/devui-vue/package.json b/packages/devui-vue/package.json index 1bd2226384..25f35e8274 100644 --- a/packages/devui-vue/package.json +++ b/packages/devui-vue/package.json @@ -18,21 +18,15 @@ "main": "vue-devui.umd.js", "module": "vue-devui.es.js", "style": "style.css", - "bin": { - "devui-cli": "./devui-cli/index.js" - }, "scripts": { "dev": "pnpm generate:theme && vitepress dev docs", "build": "pnpm generate:theme && node --max-old-space-size=4096 node_modules/vitepress/bin/vitepress.js build docs && cp public/* docs/.vitepress/dist/assets", - "serve": "vitepress serve docs", - "app:dev": "vite", - "app:build": "vite build", "build:lib": "pnpm predev && pnpm build:components && pnpm copy", "test": "jest --config jest.config.js", "build:components": "node ./devui-cli/index.js build", "generate:theme": "node ./devui-cli/index.js generate:theme", "generate:dts": "node ./devui-cli/index.js generate:dts", - "copy": "cp package.json build && cp ../../README.md build && cp devui/theme/theme.scss build/theme", + "copy": "cp package.json build && cp ../../README.md build && cd build && mkdir theme && cd ../ && cp devui/theme/theme.scss build/theme", "cli:create": "node ./devui-cli/index.js create -t component", "predev": "node ./devui-cli/index.js create -t vue-devui --ignore-parse-error", "prebuild": "node ./devui-cli/index.js create -t vue-devui --ignore-parse-error", diff --git a/packages/devui-vue/src/app.vue b/packages/devui-vue/src/app.vue deleted file mode 100644 index 76ccddf536..0000000000 --- a/packages/devui-vue/src/app.vue +++ /dev/null @@ -1,22 +0,0 @@ - - - - - diff --git a/packages/devui-vue/src/assets/logo.png b/packages/devui-vue/src/assets/logo.png deleted file mode 100644 index f3d2503fc2a44b5053b0837ebea6e87a2d339a43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6849 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