@flyanra/vue-core 1.0.1 → 1.2.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.
Files changed (54) hide show
  1. package/dist/types/components/navigation/menu/fly-sidebar/FlySidebar.types.d.ts +14 -1
  2. package/dist/types/components/navigation/menu/fly-sidebar/FlySidebar.vue.d.ts +10 -4
  3. package/dist/types/composables/UseLocaleInjector.d.ts +7 -1
  4. package/dist/types/composables/index.d.ts +3 -1
  5. package/dist/types/composables/useSidebarActiveIndex.d.ts +66 -0
  6. package/dist/types/utils/index.d.ts +2 -0
  7. package/package.json +158 -146
  8. package/src/components/basic/fly-button/FlyButton.types.ts +28 -28
  9. package/src/components/basic/fly-button/FlyButton.vue +178 -178
  10. package/src/components/basic/typography/FlyCollapseTitleRenderer.vue +46 -46
  11. package/src/components/feedback/tooltip/FlyInfoTooltip.vue +49 -49
  12. package/src/components/feedback/tooltip/FlyTooltip.element.scss +4 -4
  13. package/src/components/feedback/tooltip/FlyTooltip.vue +60 -60
  14. package/src/components/form/form.utils.ts +72 -72
  15. package/src/components/form/index.ts +6 -6
  16. package/src/components/form/input-renderers/boolean/FlyBoolean.vue +48 -48
  17. package/src/components/form/input-renderers/form-item-renderer/FlyFormItemRenderer.vue +48 -48
  18. package/src/components/form/input-renderers/form-item-renderer/index.ts +4 -4
  19. package/src/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.types.ts +3 -3
  20. package/src/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.utils.ts +221 -221
  21. package/src/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.vue +75 -75
  22. package/src/components/form/input-renderers/form-schema-renderer/UseFormSchemaRenderer.ts +97 -97
  23. package/src/components/form/input-renderers/input-renderer/FlyInputRenderer.vue +49 -49
  24. package/src/components/form/input-renderers/input-renderer/index.ts +4 -4
  25. package/src/components/form/input-renderers/input-renderer.utils.ts +18 -18
  26. package/src/components/form/input-renderers/number/FlyNumber.vue +64 -64
  27. package/src/components/form/input-renderers/regional-tenant-form-renderer/FlyRegionalTenantFormRenderer.types.ts +15 -15
  28. package/src/components/form/input-renderers/regional-tenant-form-renderer/FlyRegionalTenantFormRenderer.vue +99 -99
  29. package/src/components/form/input-renderers/select/FlySelect.scss +1 -1
  30. package/src/components/form/input-renderers/select/FlySelect.utils.ts +37 -37
  31. package/src/components/form/input-renderers/text/FlyText.vue +70 -70
  32. package/src/components/form/input-renderers/value-unit/FlyValueUnit.vue +102 -102
  33. package/src/components/form/input-validators.ts +99 -99
  34. package/src/components/general/fly-icon-v2/FlyIconV2.types.ts +6 -6
  35. package/src/components/general/fly-icon-v2/FlyIconV2.vue +17 -17
  36. package/src/components/general/fly-icon-v2/index.ts +6 -6
  37. package/src/components/general/index.ts +5 -5
  38. package/src/components/index.ts +7 -7
  39. package/src/components/navigation/menu/fly-mini-sidebar/FlyMiniSidebar.types.ts +8 -8
  40. package/src/components/navigation/menu/fly-mini-sidebar/FlyMiniSidebarItem.vue +55 -55
  41. package/src/components/navigation/menu/fly-sidebar/FlySidebar.types.ts +49 -36
  42. package/src/components/navigation/menu/fly-sidebar/FlySidebar.vue +146 -151
  43. package/src/components/navigation/menu/fly-sidebar/FlySidebarNode.vue +47 -47
  44. package/src/composables/UseLocaleInjector.ts +37 -0
  45. package/src/composables/index.ts +4 -0
  46. package/src/composables/useSidebarActiveIndex.ts +103 -0
  47. package/src/styles/element/mixins/collapse.scss +61 -61
  48. package/src/styles/element/overrides/form.scss +121 -121
  49. package/src/styles/element/overrides/message-box.scss +2 -2
  50. package/src/styles/element/overrides/radio.scss +2 -2
  51. package/src/styles/element/overrides/select.scss +9 -9
  52. package/src/utils/index.ts +2 -0
  53. package/src/utils/pure-functions.ts +15 -0
  54. package/src/utils/validators.ts +81 -0
@@ -21,9 +21,22 @@ export type T_FlySidebarGroup = {
21
21
  export type T_FlySidebarNode = T_FlySidebarItem | T_FlySidebarSubMenu | T_FlySidebarGroup;
22
22
  export type T_FlySidebar = T_FlySidebarNode[];
23
23
  export type T_FlySidebarProps = {
24
- isCollapsed?: boolean;
25
24
  router?: boolean;
26
25
  defaultActive?: string;
27
26
  menu: T_FlySidebarNode[];
28
27
  height?: string;
28
+ /**
29
+ * Controls the collapsed state of the sidebar.
30
+ * Must be bound with `v-model:collapsed` — a plain `:collapsed` binding
31
+ * is one-way only and will not reflect toggle actions back to the parent.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * const sidebarCollapsed = useStorage('sidebar-collapsed', false)
36
+ * ```
37
+ * ```html
38
+ * <FlySidebar v-model:collapsed="sidebarCollapsed" ... />
39
+ * ```
40
+ */
41
+ collapsed?: boolean;
29
42
  };
@@ -1,8 +1,14 @@
1
1
  import './FlySidebar.element.scss';
2
2
  import type { T_FlySidebarProps } from './FlySidebar.types';
3
- declare const __VLS_export: import("vue").DefineComponent<T_FlySidebarProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<T_FlySidebarProps> & Readonly<{}>, {
4
- router: boolean;
5
- defaultActive: string;
6
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
3
+ type __VLS_Props = T_FlySidebarProps;
4
+ type __VLS_ModelProps = {
5
+ 'collapsed'?: boolean;
6
+ };
7
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
8
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
9
+ "update:collapsed": (value: boolean) => any;
10
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
11
+ "onUpdate:collapsed"?: ((value: boolean) => any) | undefined;
12
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
7
13
  declare const _default: typeof __VLS_export;
8
14
  export default _default;
@@ -1,8 +1,14 @@
1
+ import type { MaybeRef } from 'vue';
1
2
  import type { Locale } from '@flyanra/js-utils/locales';
2
3
  import type { ComposerTranslation } from 'vue-i18n';
3
- type T_LocaleInjector = {
4
+ export type T_LocaleInjector = {
4
5
  t: ComposerTranslation;
5
6
  locale: Locale;
6
7
  };
8
+ type I18nLike = {
9
+ t: ComposerTranslation;
10
+ locale: MaybeRef<Locale>;
11
+ };
12
+ export declare function initLocaleInjector(i18n: I18nLike): void;
7
13
  export declare function UseLocaleInjector(): T_LocaleInjector;
8
14
  export {};
@@ -1 +1,3 @@
1
- export {};
1
+ export { initLocaleInjector, UseLocaleInjector } from './UseLocaleInjector';
2
+ export type { T_LocaleInjector } from './UseLocaleInjector';
3
+ export { useSidebarActiveIndex } from './useSidebarActiveIndex';
@@ -0,0 +1,66 @@
1
+ import { type MaybeRefOrGetter } from 'vue';
2
+ import type { T_FlySidebar } from '../components';
3
+ /**
4
+ * Minimal route shape required by `useSidebarActiveIndex`.
5
+ *
6
+ * You can pass your full route objects directly — only these fields are read.
7
+ * `meta.sidebarActiveIndex` is the route **name** of the sidebar item that
8
+ * should stay highlighted while on this route (see composable docs below).
9
+ */
10
+ interface RouteItem {
11
+ name?: string;
12
+ path: string;
13
+ meta?: {
14
+ /** Route name of the sidebar item to keep active on this route. */
15
+ sidebarActiveIndex?: string;
16
+ };
17
+ }
18
+ /**
19
+ * Resolves the correct active sidebar index for Element Plus menus in router mode.
20
+ *
21
+ * **Resolution order** (first match wins):
22
+ * 1. **Exact path match** — `route.path` matches a menu item's `index` directly.
23
+ * 2. **`sidebarActiveIndex` meta** — the current route's `meta.sidebarActiveIndex`
24
+ * names which sidebar route should appear active. Use this for pages that are
25
+ * not listed in the sidebar (e.g. edit, create, or detail views).
26
+ * 3. **Longest static-prefix fallback** — strips dynamic segments (`:id`) and
27
+ * picks the menu item whose path is the longest prefix of the current path.
28
+ * This is a best-effort catch-all for any unhandled cases.
29
+ *
30
+ * > **Note:** Only one level of submenus is flattened. Deeply nested menu trees
31
+ * > (submenu inside a submenu) are not supported.
32
+ *
33
+ * @param menuItems - The sidebar menu tree passed to `FlySidebar`. Each leaf item
34
+ * must have `index` set to a route path (e.g. `/config/list`). Submenu items
35
+ * must have `type: 'submenu'` and a `children` array of leaf items.
36
+ * Accepts a plain value, `ref`, or `computed`.
37
+ *
38
+ * @param allRoutes - Flat list of all application routes. Only used to resolve a
39
+ * `sidebarActiveIndex` route name back to its path (resolution step 2).
40
+ * Each entry needs at minimum `{ name, path }`.
41
+ * Accepts a plain array, `ref`, or `computed`.
42
+ *
43
+ * @returns `ComputedRef<string>` — bind directly to `:default-active` on
44
+ * `FlySidebar` or `el-menu`.
45
+ *
46
+ * @example
47
+ * ```ts
48
+ * // In your sidebar component setup:
49
+ * const activeIndex = useSidebarActiveIndex(menuItems, router.getRoutes())
50
+ * ```
51
+ * ```html
52
+ * <!-- In your sidebar template: -->
53
+ * <FlySidebar :default-active="activeIndex" ... />
54
+ * ```
55
+ * ```ts
56
+ * // In a route that is NOT listed in the sidebar (e.g. an edit page),
57
+ * // tell the composable which sidebar item should stay highlighted:
58
+ * {
59
+ * name: 'ConfigEdit',
60
+ * path: '/config/:id/edit',
61
+ * meta: { sidebarActiveIndex: 'ConfigList' }
62
+ * }
63
+ * ```
64
+ */
65
+ export declare function useSidebarActiveIndex(menuItems: MaybeRefOrGetter<T_FlySidebar>, allRoutes: MaybeRefOrGetter<RouteItem[]>): import("vue").ComputedRef<string>;
66
+ export {};
@@ -0,0 +1,2 @@
1
+ export { checkRange } from './pure-functions';
2
+ export { checkInputRange, isRequiredError } from './validators';
package/package.json CHANGED
@@ -1,146 +1,158 @@
1
- {
2
- "name": "@flyanra/vue-core",
3
- "version": "1.0.1",
4
- "private": false,
5
- "description": "Source-distributed Vue component library for Vite and Nuxt consumers.",
6
- "sideEffects": false,
7
- "type": "module",
8
- "imports": {
9
- "#storybook/*": "./.storybook/*"
10
- },
11
- "exports": {
12
- ".": {
13
- "types": "./dist/types/index.d.ts",
14
- "import": "./src/index.ts"
15
- },
16
- "./types": {
17
- "types": "./src/types/index.d.ts",
18
- "default": "./src/types/index.ts"
19
- },
20
- "./styles": {
21
- "types": "./src/styles/index.d.ts",
22
- "default": "./src/styles/index.scss"
23
- },
24
- "./styles/*": "./src/styles/*",
25
- "./components": {
26
- "types": "./dist/types/components/index.d.ts",
27
- "import": "./src/components/index.ts"
28
- },
29
- "./components/*": {
30
- "types": "./dist/types/components/*/index.d.ts",
31
- "import": "./src/components/*/index.ts"
32
- },
33
- "./composables": {
34
- "types": "./dist/types/composables/index.d.ts",
35
- "import": "./src/composables/index.ts"
36
- },
37
- "./composables/*": {
38
- "types": "./dist/types/composables/*/index.d.ts",
39
- "import": "./src/composables/*/index.ts"
40
- },
41
- "./package.json": "./package.json"
42
- },
43
- "types": "./dist/types/index.d.ts",
44
- "files": [
45
- "src/components",
46
- "src/styles",
47
- "src/index.ts",
48
- "dist/types",
49
- "README.md",
50
- "package.json",
51
- "!src/**/*.stories.ts",
52
- "!src/**/*.stories.tsx",
53
- "!src/**/*.mdx",
54
- "!dist/types/**/*.stories.d.ts"
55
- ],
56
- "scripts": {
57
- "build:preview": "vite build",
58
- "prebuild:types": "npm run clean:types",
59
- "build:types": "vue-tsc --declaration --emitDeclarationOnly -p tsconfig.build.json",
60
- "build-storybook": "storybook build",
61
- "changeset": "changeset",
62
- "changeset:publish": "changeset publish",
63
- "changeset:version": "changeset version",
64
- "clean:types": "rm -rf dist/types",
65
- "dev": "vite",
66
- "format": "prettier . --write",
67
- "format:check": "prettier . --check",
68
- "lint": "eslint .",
69
- "lint:fix": "eslint . --fix",
70
- "pack": "npm pack",
71
- "pack:check": "npm pack --dry-run",
72
- "postinstall:husky": "husky",
73
- "prepare": "husky",
74
- "preview": "vite preview",
75
- "storybook": "storybook dev -p 6006 --no-open",
76
- "test-storybook": "vitest --project=storybook",
77
- "typecheck": "vue-tsc --noEmit -p tsconfig.lib.json"
78
- },
79
- "lint-staged": {
80
- "*.{js,mjs,cjs,ts,mts,jsx,tsx,vue,css,scss,md,json}": [
81
- "prettier --write"
82
- ],
83
- "*.{js,mjs,cjs,ts,mts,jsx,tsx,vue}": [
84
- "eslint --fix"
85
- ]
86
- },
87
- "devDependencies": {
88
- "@changesets/cli": "^2.30.0",
89
- "@eslint/js": "^10.0.1",
90
- "@flyanra/js-utils": "^1.5.0",
91
- "@iconify-json/ri": "^1.2.10",
92
- "@jamescoyle/vue-icon": "^0.1.2",
93
- "@mdi/js": "^7.4.47",
94
- "@remixicon/vue": "^4.9.0",
95
- "@storybook/addon-a11y": "^10.3.6",
96
- "@storybook/addon-docs": "^10.3.6",
97
- "@storybook/addon-vitest": "^10.3.6",
98
- "@storybook/vue3-vite": "^10.3.6",
99
- "@tailwindcss/vite": "^4.2.2",
100
- "@trivago/prettier-plugin-sort-imports": "^6.0.2",
101
- "@types/node": "^24.12.2",
102
- "@vitejs/plugin-vue": "^6.0.5",
103
- "@vitest/browser-playwright": "^4.1.4",
104
- "@vitest/coverage-v8": "^4.1.4",
105
- "@vue/tsconfig": "^0.9.1",
106
- "dompurify": "^3.4.2",
107
- "element-plus": "^2.13.7",
108
- "eslint": "^10.2.0",
109
- "eslint-config-prettier": "^10.1.8",
110
- "eslint-plugin-storybook": "^10.3.6",
111
- "eslint-plugin-vue": "^10.8.0",
112
- "globals": "^17.5.0",
113
- "husky": "^9.1.7",
114
- "lint-staged": "^16.4.0",
115
- "lodash-es": "^4.18.1",
116
- "maska": "^3.2.0",
117
- "playwright": "^1.59.1",
118
- "prettier": "^3.8.3",
119
- "prettier-plugin-packagejson": "^3.0.2",
120
- "sass": "^1.99.0",
121
- "storybook": "^10.3.6",
122
- "storybook-vue3-router": "^7.0.0",
123
- "tailwindcss": "^4.2.2",
124
- "typescript": "~6.0.2",
125
- "typescript-eslint": "^8.58.2",
126
- "unplugin-icons": "^23.0.1",
127
- "vite": "^8.0.4",
128
- "vitest": "^4.1.4",
129
- "vue": "^3.5.32",
130
- "vue-eslint-parser": "^10.4.0",
131
- "vue-i18n": "^11.4.0",
132
- "vue-tsc": "^3.2.6"
133
- },
134
- "peerDependencies": {
135
- "@flyanra/js-utils": "^1.3.2",
136
- "@jamescoyle/vue-icon": "^0.1.2",
137
- "element-plus": "^2.13.7",
138
- "maska": "^3.2.0",
139
- "vue": "^3.5.32",
140
- "vue-i18n": "^11.4.0"
141
- },
142
- "volta": {
143
- "node": "24.12.0",
144
- "yarn": "1.22.22"
145
- }
146
- }
1
+ {
2
+ "name": "@flyanra/vue-core",
3
+ "version": "1.2.0",
4
+ "private": false,
5
+ "description": "Source-distributed Vue component library for Vite and Nuxt consumers.",
6
+ "sideEffects": false,
7
+ "type": "module",
8
+ "imports": {
9
+ "#storybook/*": "./.storybook/*"
10
+ },
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/types/index.d.ts",
14
+ "import": "./src/index.ts"
15
+ },
16
+ "./types": {
17
+ "types": "./src/types/index.d.ts",
18
+ "default": "./src/types/index.ts"
19
+ },
20
+ "./styles": {
21
+ "types": "./src/styles/index.d.ts",
22
+ "default": "./src/styles/index.scss"
23
+ },
24
+ "./styles/*": "./src/styles/*",
25
+ "./components": {
26
+ "types": "./dist/types/components/index.d.ts",
27
+ "import": "./src/components/index.ts"
28
+ },
29
+ "./components/*": {
30
+ "types": "./dist/types/components/*/index.d.ts",
31
+ "import": "./src/components/*/index.ts"
32
+ },
33
+ "./composables": {
34
+ "types": "./dist/types/composables/index.d.ts",
35
+ "import": "./src/composables/index.ts"
36
+ },
37
+ "./composables/*": {
38
+ "types": "./dist/types/composables/*/index.d.ts",
39
+ "import": "./src/composables/*/index.ts"
40
+ },
41
+ "./utils": {
42
+ "types": "./dist/types/utils/index.d.ts",
43
+ "import": "./src/utils/index.ts"
44
+ },
45
+ "./utils/*": {
46
+ "types": "./dist/types/utils/*.d.ts",
47
+ "import": "./src/utils/*.ts"
48
+ },
49
+ "./package.json": "./package.json"
50
+ },
51
+ "types": "./dist/types/index.d.ts",
52
+ "files": [
53
+ "src/components",
54
+ "src/composables",
55
+ "src/utils",
56
+ "src/styles",
57
+ "src/index.ts",
58
+ "dist/types",
59
+ "README.md",
60
+ "package.json",
61
+ "!src/**/*.stories.ts",
62
+ "!src/**/*.stories.tsx",
63
+ "!src/**/*.mdx",
64
+ "!dist/types/**/*.stories.d.ts"
65
+ ],
66
+ "scripts": {
67
+ "build:preview": "vite build",
68
+ "prebuild:types": "npm run clean:types",
69
+ "build:types": "vue-tsc --declaration --emitDeclarationOnly -p tsconfig.build.json",
70
+ "build-storybook": "storybook build",
71
+ "changeset": "changeset",
72
+ "changeset:publish": "changeset publish",
73
+ "changeset:version": "changeset version",
74
+ "clean:types": "rm -rf dist/types",
75
+ "dev": "vite",
76
+ "format": "prettier . --write",
77
+ "format:check": "prettier . --check",
78
+ "lint": "eslint .",
79
+ "lint:fix": "eslint . --fix",
80
+ "pack": "npm pack",
81
+ "pack:check": "npm pack --dry-run",
82
+ "postinstall:husky": "husky",
83
+ "prepare": "husky",
84
+ "preview": "vite preview",
85
+ "storybook": "storybook dev -p 6006 --no-open",
86
+ "test-storybook": "vitest --project=storybook",
87
+ "typecheck": "vue-tsc --noEmit -p tsconfig.lib.json"
88
+ },
89
+ "lint-staged": {
90
+ "*.{js,mjs,cjs,ts,mts,jsx,tsx,vue,css,scss,md,json}": [
91
+ "prettier --write"
92
+ ],
93
+ "*.{js,mjs,cjs,ts,mts,jsx,tsx,vue}": [
94
+ "eslint --fix"
95
+ ]
96
+ },
97
+ "devDependencies": {
98
+ "@changesets/cli": "^2.30.0",
99
+ "@eslint/js": "^10.0.1",
100
+ "@flyanra/js-utils": "^1.5.0",
101
+ "@iconify-json/mdi": "^1.2.3",
102
+ "@iconify-json/ri": "^1.2.10",
103
+ "@jamescoyle/vue-icon": "^0.1.2",
104
+ "@mdi/js": "^7.4.47",
105
+ "@remixicon/vue": "^4.9.0",
106
+ "@storybook/addon-a11y": "^10.3.6",
107
+ "@storybook/addon-docs": "^10.3.6",
108
+ "@storybook/addon-vitest": "^10.3.6",
109
+ "@storybook/vue3-vite": "^10.3.6",
110
+ "@tailwindcss/vite": "^4.2.2",
111
+ "@trivago/prettier-plugin-sort-imports": "^6.0.2",
112
+ "@types/node": "^24.12.2",
113
+ "@vitejs/plugin-vue": "^6.0.5",
114
+ "@vitest/browser-playwright": "^4.1.4",
115
+ "@vitest/coverage-v8": "^4.1.4",
116
+ "@vue/tsconfig": "^0.9.1",
117
+ "dompurify": "^3.4.2",
118
+ "element-plus": "^2.13.7",
119
+ "eslint": "^10.2.0",
120
+ "eslint-config-prettier": "^10.1.8",
121
+ "eslint-plugin-storybook": "^10.3.6",
122
+ "eslint-plugin-vue": "^10.8.0",
123
+ "globals": "^17.5.0",
124
+ "husky": "^9.1.7",
125
+ "lint-staged": "^16.4.0",
126
+ "lodash-es": "^4.18.1",
127
+ "maska": "^3.2.0",
128
+ "playwright": "^1.59.1",
129
+ "prettier": "^3.8.3",
130
+ "prettier-plugin-packagejson": "^3.0.2",
131
+ "sass": "^1.99.0",
132
+ "storybook": "^10.3.6",
133
+ "storybook-vue3-router": "^7.0.0",
134
+ "tailwindcss": "^4.2.2",
135
+ "typescript": "~6.0.2",
136
+ "typescript-eslint": "^8.58.2",
137
+ "unplugin-icons": "^23.0.1",
138
+ "unplugin-vue-components": "^32.1.0",
139
+ "vite": "^8.0.4",
140
+ "vitest": "^4.1.4",
141
+ "vue": "^3.5.32",
142
+ "vue-eslint-parser": "^10.4.0",
143
+ "vue-i18n": "^11.4.0",
144
+ "vue-tsc": "^3.2.6"
145
+ },
146
+ "peerDependencies": {
147
+ "@flyanra/js-utils": "^1.3.2",
148
+ "@jamescoyle/vue-icon": "^0.1.2",
149
+ "element-plus": "^2.13.7",
150
+ "maska": "^3.2.0",
151
+ "vue": "^3.5.32",
152
+ "vue-i18n": "^11.4.0"
153
+ },
154
+ "volta": {
155
+ "node": "24.12.0",
156
+ "yarn": "1.22.22"
157
+ }
158
+ }
@@ -1,28 +1,28 @@
1
- import type { ButtonType, ElButton, UseTooltipProps } from 'element-plus'
2
-
3
- import type { T_FlyIconV2Props } from '../../general'
4
-
5
- export type FlyButtonIconPosition = 'left' | 'right'
6
-
7
- export type FlyButtonSizes = InstanceType<typeof ElButton>['$props']['size']
8
- export type FlyButtonTypes = ButtonType
9
-
10
- export type FlyButtonProps = {
11
- active?: boolean
12
- appButtonClass?: string
13
- aspect1?: boolean
14
- /**
15
- * Test
16
- */
17
- clipRound?: boolean
18
- full?: boolean
19
- icon?: T_FlyIconV2Props['icon']
20
- iconPosition?: FlyButtonIconPosition
21
- imageUrl?: string
22
- label?: string
23
- size?: FlyButtonSizes
24
- stop?: boolean
25
- title?: string
26
- tooltip?: UseTooltipProps
27
- type?: FlyButtonTypes
28
- }
1
+ import type { ButtonType, ElButton, UseTooltipProps } from 'element-plus'
2
+
3
+ import type { T_FlyIconV2Props } from '../../general'
4
+
5
+ export type FlyButtonIconPosition = 'left' | 'right'
6
+
7
+ export type FlyButtonSizes = InstanceType<typeof ElButton>['$props']['size']
8
+ export type FlyButtonTypes = ButtonType
9
+
10
+ export type FlyButtonProps = {
11
+ active?: boolean
12
+ appButtonClass?: string
13
+ aspect1?: boolean
14
+ /**
15
+ * Test
16
+ */
17
+ clipRound?: boolean
18
+ full?: boolean
19
+ icon?: T_FlyIconV2Props['icon']
20
+ iconPosition?: FlyButtonIconPosition
21
+ imageUrl?: string
22
+ label?: string
23
+ size?: FlyButtonSizes
24
+ stop?: boolean
25
+ title?: string
26
+ tooltip?: UseTooltipProps
27
+ type?: FlyButtonTypes
28
+ }