hy-app 0.2.14 → 0.2.16

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 (137) hide show
  1. package/components/hy-action-sheet/hy-action-sheet.vue +81 -13
  2. package/components/hy-action-sheet/typing.d.ts +1 -3
  3. package/components/hy-address-picker/hy-address-picker.vue +109 -8
  4. package/components/hy-address-picker/index.scss +2 -2
  5. package/components/hy-address-picker/typing.d.ts +39 -30
  6. package/components/hy-avatar/hy-avatar.vue +78 -4
  7. package/components/hy-avatar/typing.d.ts +21 -16
  8. package/components/hy-back-top/hy-back-top.vue +86 -28
  9. package/components/hy-back-top/typing.d.ts +17 -12
  10. package/components/hy-badge/hy-badge.vue +114 -43
  11. package/components/hy-badge/typing.d.ts +20 -15
  12. package/components/hy-button/hy-button.vue +22 -40
  13. package/components/hy-calendar/hy-calendar.vue +290 -143
  14. package/components/hy-calendar/typing.d.ts +38 -31
  15. package/components/hy-card/hy-card.vue +139 -36
  16. package/components/hy-card/typing.d.ts +39 -28
  17. package/components/hy-cell/hy-cell.vue +131 -67
  18. package/components/hy-cell/typing.d.ts +6 -1
  19. package/components/hy-check-button/hy-check-button.vue +101 -32
  20. package/components/hy-check-button/typing.d.ts +26 -19
  21. package/components/hy-checkbox/hy-checkbox.vue +167 -78
  22. package/components/hy-checkbox/typing.d.ts +26 -19
  23. package/components/hy-code-input/hy-code-input.vue +101 -5
  24. package/components/hy-code-input/typing.d.ts +9 -0
  25. package/components/hy-config-provider/hy-config-provider.vue +44 -24
  26. package/components/hy-config-provider/typing.d.ts +0 -4
  27. package/components/hy-count-down/hy-count-down.vue +99 -62
  28. package/components/hy-count-down/typing.d.ts +18 -5
  29. package/components/hy-count-to/hy-count-to.vue +165 -113
  30. package/components/hy-count-to/typing.d.ts +15 -11
  31. package/components/hy-datetime-picker/hy-datetime-picker.vue +338 -232
  32. package/components/hy-datetime-picker/typing.d.ts +49 -39
  33. package/components/hy-divider/hy-divider.vue +128 -64
  34. package/components/hy-divider/typing.d.ts +16 -16
  35. package/components/hy-dropdown/hy-dropdown.vue +57 -19
  36. package/components/hy-dropdown/typing.d.ts +14 -14
  37. package/components/hy-dropdown-item/hy-dropdown-item.vue +34 -5
  38. package/components/hy-dropdown-item/typing.d.ts +13 -6
  39. package/components/hy-empty/hy-empty.vue +64 -6
  40. package/components/hy-empty/typing.d.ts +5 -0
  41. package/components/hy-float-button/hy-float-button.vue +117 -5
  42. package/components/hy-float-button/typing.d.ts +7 -0
  43. package/components/hy-folding-panel/hy-folding-panel.vue +87 -25
  44. package/components/hy-folding-panel/typing.d.ts +24 -15
  45. package/components/hy-grid/hy-grid.vue +95 -35
  46. package/components/hy-grid/typing.d.ts +24 -19
  47. package/components/hy-icon/hy-icon.vue +84 -6
  48. package/components/hy-icon/typing.d.ts +5 -0
  49. package/components/hy-image/hy-image.vue +105 -6
  50. package/components/hy-image/typing.d.ts +9 -0
  51. package/components/hy-input/hy-input.vue +277 -130
  52. package/components/hy-input/props.ts +13 -14
  53. package/components/hy-input/typing.d.ts +59 -38
  54. package/components/hy-line/hy-line.vue +65 -25
  55. package/components/hy-line-progress/hy-line-progress.vue +68 -35
  56. package/components/hy-list/hy-list.vue +127 -61
  57. package/components/hy-list/typing.d.ts +19 -12
  58. package/components/hy-loading/hy-loading.vue +79 -25
  59. package/components/hy-menu/hy-menu.vue +69 -45
  60. package/components/hy-menu/typing.d.ts +22 -15
  61. package/components/hy-modal/hy-modal.vue +91 -4
  62. package/components/hy-modal/typing.d.ts +11 -0
  63. package/components/hy-navbar/hy-navbar.vue +105 -25
  64. package/components/hy-navbar/typing.d.ts +25 -20
  65. package/components/hy-notice-bar/hy-notice-bar.vue +97 -19
  66. package/components/hy-notice-bar/typing.d.ts +22 -17
  67. package/components/hy-notify/hy-notify.vue +106 -54
  68. package/components/hy-number-step/hy-number-step.vue +211 -120
  69. package/components/hy-number-step/typing.d.ts +45 -28
  70. package/components/hy-overlay/hy-overlay.vue +60 -16
  71. package/components/hy-overlay/typing.d.ts +11 -6
  72. package/components/hy-pagination/hy-pagination.vue +94 -37
  73. package/components/hy-pagination/typing.d.ts +20 -11
  74. package/components/hy-picker/hy-picker.vue +225 -160
  75. package/components/hy-picker/typing.d.ts +51 -28
  76. package/components/hy-popover/hy-popover.vue +55 -7
  77. package/components/hy-popover/typing.d.ts +21 -1
  78. package/components/hy-popup/hy-popup.vue +164 -99
  79. package/components/hy-popup/typing.d.ts +11 -0
  80. package/components/hy-price/hy-price.vue +77 -30
  81. package/components/hy-price/typing.d.ts +10 -10
  82. package/components/hy-qrcode/hy-qrcode.vue +75 -5
  83. package/components/hy-qrcode/typing.d.ts +25 -16
  84. package/components/hy-radio/hy-radio.vue +169 -88
  85. package/components/hy-radio/typing.d.ts +29 -22
  86. package/components/hy-rate/hy-rate.vue +155 -104
  87. package/components/hy-rate/typing.d.ts +23 -16
  88. package/components/hy-read-more/hy-read-more.vue +83 -56
  89. package/components/hy-read-more/typing.d.ts +18 -11
  90. package/components/hy-scroll-list/hy-scroll-list.vue +69 -58
  91. package/components/hy-scroll-list/typing.d.ts +14 -7
  92. package/components/hy-search/hy-search.vue +168 -62
  93. package/components/hy-search/typing.d.ts +47 -26
  94. package/components/hy-signature/hy-signature.vue +354 -272
  95. package/components/hy-signature/typing.d.ts +65 -52
  96. package/components/hy-slider/hy-slider.vue +208 -160
  97. package/components/hy-slider/typing.d.ts +28 -17
  98. package/components/hy-steps/hy-steps.vue +125 -99
  99. package/components/hy-steps/typing.d.ts +21 -14
  100. package/components/hy-submit-bar/hy-submit-bar.vue +129 -48
  101. package/components/hy-submit-bar/typing.d.ts +30 -23
  102. package/components/hy-subsection/hy-subsection.vue +139 -96
  103. package/components/hy-subsection/typing.d.ts +23 -16
  104. package/components/hy-swipe-action/hy-swipe-action.vue +161 -135
  105. package/components/hy-swipe-action/typing.d.ts +26 -17
  106. package/components/hy-swiper/hy-swiper.vue +178 -73
  107. package/components/hy-swiper/typing.d.ts +37 -28
  108. package/components/hy-switch/hy-switch.vue +107 -60
  109. package/components/hy-switch/typing.d.ts +25 -18
  110. package/components/hy-tabs/hy-tabs.vue +170 -160
  111. package/components/hy-tabs/typing.d.ts +36 -22
  112. package/components/hy-tag/hy-tag.vue +133 -58
  113. package/components/hy-tag/typing.d.ts +26 -18
  114. package/components/hy-text/hy-text.vue +106 -6
  115. package/components/hy-text/typing.d.ts +31 -26
  116. package/components/hy-textarea/hy-textarea.vue +183 -89
  117. package/components/hy-textarea/typing.d.ts +41 -24
  118. package/components/hy-tooltip/hy-tooltip.vue +145 -101
  119. package/components/hy-tooltip/typing.d.ts +18 -13
  120. package/components/hy-transition/hy-transition.vue +48 -13
  121. package/components/hy-transition/typing.d.ts +17 -0
  122. package/components/hy-upload/hy-upload.vue +113 -148
  123. package/components/hy-upload/typing.d.ts +71 -71
  124. package/components/hy-warn/hy-warn.vue +79 -36
  125. package/components/hy-warn/typing.d.ts +18 -11
  126. package/components/hy-waterfall/hy-waterfall.vue +90 -77
  127. package/components/hy-watermark/hy-watermark.vue +82 -5
  128. package/components/hy-watermark/typing.d.ts +20 -20
  129. package/global.d.ts +39 -59
  130. package/package.json +4 -19
  131. package/utils/inspect.ts +3 -1
  132. package/web-types.json +1 -1
  133. package/compiler.ts +0 -108
  134. package/component-helper.ts +0 -179
  135. package/components.json +0 -3287
  136. package/docgen.config.js +0 -13
  137. package/web-types.config.js +0 -7
package/compiler.ts DELETED
@@ -1,108 +0,0 @@
1
- import fs from 'fs'
2
- import path from 'path'
3
- import { parse } from '@vue/compiler-sfc'
4
- import ts from 'typescript'
5
-
6
- // 读取组件文件
7
- const componentPath = path.resolve(__dirname, './components/hy-button/hy-button.vue')
8
- const content = fs.readFileSync(componentPath, 'utf-8')
9
- const { descriptor } = parse(content)
10
-
11
- if (!descriptor.scriptSetup) {
12
- console.error('未找到script setup部分')
13
- process.exit(1)
14
- }
15
-
16
- // 解析TypeScript类型
17
- const sourceCode = descriptor.scriptSetup.content
18
- const sourceFile = ts.createSourceFile('temp.ts', sourceCode, ts.ScriptTarget.Latest, true)
19
-
20
- // 存储解析结果
21
- const propsInfo: Record<
22
- string,
23
- {
24
- type: string
25
- default?: string
26
- values?: string[]
27
- description?: string
28
- }
29
- > = {}
30
-
31
- // 遍历AST查找interface定义
32
- function traverseNode(node: ts.Node) {
33
- if (ts.isInterfaceDeclaration(node) && node.name.text === 'buttonProps') {
34
- node.members.forEach((member) => {
35
- if (ts.isPropertySignature(member) && member.name) {
36
- const propName = member.name.getText()
37
- const type = member.type?.getText() || 'any'
38
-
39
- // 提取JSDoc注释中的信息
40
- const jsDoc = ts.getJSDocCommentsAndTags(member)
41
- const description = jsDoc
42
- .filter((tag) => ts.isJSDocText(tag))
43
- .map((tag) => (tag as ts.JSDocText).comment)
44
- .join('\n')
45
- .trim()
46
-
47
- const valuesTag = jsDoc.find(
48
- (tag) => ts.isJSDocTag(tag) && tag.tagName.text === 'values',
49
- ) as ts.JSDocTag | undefined
50
- const values = valuesTag?.comment ? valuesTag.comment.split('|').map((v) => v.trim()) : []
51
-
52
- propsInfo[propName] = {
53
- type,
54
- description: description || undefined,
55
- values: values.length ? values : undefined,
56
- }
57
- }
58
- })
59
- }
60
-
61
- ts.forEachChild(node, traverseNode)
62
- }
63
-
64
- traverseNode(sourceFile)
65
-
66
- // 解析默认值
67
- const defaultsMatch = sourceCode.match(/withDefaults\(.*?,\s*({[\s\S]*?})\s*\)/)
68
- if (defaultsMatch) {
69
- const defaultsCode = defaultsMatch[1]
70
- const defaultsSource = ts.createSourceFile(
71
- 'defaults.ts',
72
- `const defaults = ${defaultsCode};`,
73
- ts.ScriptTarget.Latest,
74
- true,
75
- )
76
-
77
- ts.forEachChild(defaultsSource, (node) => {
78
- if (ts.isVariableDeclaration(node) && node.name.getText() === 'defaults') {
79
- const initializer = node.initializer
80
- if (ts.isObjectLiteralExpression(initializer)) {
81
- initializer.properties.forEach((prop) => {
82
- if (ts.isPropertyAssignment(prop)) {
83
- const propName = prop.name.getText()
84
- const defaultValue = prop.initializer.getText()
85
- if (propsInfo[propName]) {
86
- propsInfo[propName].default = defaultValue
87
- }
88
- }
89
- })
90
- }
91
- }
92
- })
93
- }
94
-
95
- // 生成Markdown文档
96
- let md = '## Props\n\n'
97
- md += '| 属性名 | 类型 | 默认值 | 可选值 | 说明 |\n'
98
- md += '|--------|------|--------|--------|------|\n'
99
-
100
- Object.entries(propsInfo).forEach(([name, info]) => {
101
- md += `| ${name} | ${info.type} | ${info.default || '-'} | ${
102
- info.values ? info.values.join('、') : '-'
103
- } | ${info.description || '-'} |\n`
104
- })
105
-
106
- // 写入文档文件
107
- fs.writeFileSync(path.join(__dirname, 'docs/button-props.md'), md)
108
- console.log('Props文档生成成功,包含可选值信息!')
@@ -1,179 +0,0 @@
1
- import fg from 'fast-glob'
2
- import { read, parse, vetur, webTypes, write, isString } from 'components-helper'
3
- import type {
4
- Config,
5
- InstallOptions,
6
- NormalizeData,
7
- Options,
8
- ParseData,
9
- ParseTable,
10
- } from 'components-helper'
11
-
12
- const config: Config = {
13
- tags: 'tags.json',
14
- attributes: 'attributes.json',
15
- webTypes: 'web-types.json',
16
- titleRegExp: /#+\s+(.*)\n+([^(#|\n)]*)/g,
17
- tableRegExp: /#+\s+(.*)\n+(\|?.+\|.+)\n\|?\s*:?-+:?\s*\|.+((\n\|?.+\|.+)+)/g,
18
- fileNameRegExp: /\/((\w|-)+)\.\w+$/,
19
- separator: ',', // values截取
20
- props: 'Props',
21
- propsName: 'Prop name',
22
- propsType: 'Type',
23
- propsDescription: 'Description',
24
- propsOptions: 'Values',
25
- propsDefault: 'Default',
26
- events: 'events',
27
- eventsName: 'Event name',
28
- eventsDescription: 'Description',
29
- slots: 'slots',
30
- slotsName: 'Name',
31
- slotsDescription: 'Description',
32
- slotsType: 'Type',
33
- slotsSubtags: 'Subtags',
34
- directives: 'directives',
35
- directivesName: 'Name',
36
- directivesType: 'Type',
37
- directivesDescription: 'Description',
38
- }
39
-
40
- function normalize(options: Options, data: ParseData, path: string): NormalizeData {
41
- const { fileNameRegExp, props, events, slots, directives } = options
42
- const _fileNameRegExp = isString(fileNameRegExp) ? new RegExp(fileNameRegExp) : fileNameRegExp
43
- const _path = path.match(_fileNameRegExp)
44
- const fileName = _path ? _path[1] : ''
45
- const _data: NormalizeData = Object.assign(data, { path, fileName })
46
- const _props = new RegExp(props, 'i')
47
- const _events = new RegExp(events, 'i')
48
- const _slots = new RegExp(slots, 'i')
49
- const _directives = new RegExp(directives, 'i')
50
-
51
- if (!_data.table || !_data.table.length) return _data
52
-
53
- for (let i = 0; i < _data.table.length; i++) {
54
- const item = _data.table[i]
55
- const title = item.title
56
- if (!title) continue
57
-
58
- if (_props.test(title)) {
59
- setData({
60
- data: _data,
61
- item,
62
- path,
63
- fileName,
64
- title,
65
- key: 'props',
66
- regExp: _props,
67
- })
68
- } else if (_events.test(title)) {
69
- setData({
70
- data: _data,
71
- item,
72
- path,
73
- fileName,
74
- title,
75
- key: 'events',
76
- regExp: _events,
77
- })
78
- } else if (_slots.test(title)) {
79
- setData({
80
- data: _data,
81
- item,
82
- path,
83
- fileName,
84
- title,
85
- key: 'slots',
86
- regExp: _slots,
87
- })
88
- } else if (_directives.test(title)) {
89
- setData({
90
- data: _data,
91
- item,
92
- path,
93
- fileName,
94
- title,
95
- key: 'directives',
96
- regExp: _directives,
97
- })
98
- }
99
- }
100
- return _data
101
- }
102
-
103
- function setData({
104
- data,
105
- key,
106
- item,
107
- title,
108
- path,
109
- fileName,
110
- regExp,
111
- }: {
112
- data: NormalizeData
113
- key: 'props' | 'events' | 'slots' | 'directives'
114
- item: ParseTable
115
- title: string
116
- path: string
117
- fileName: string
118
- regExp: RegExp
119
- }) {
120
- const childTitle = title.replace(regExp, '').trim()
121
-
122
- if (childTitle) {
123
- const childHeader = data.headers?.find((item) => item.title === childTitle)
124
- const childItem = {
125
- path,
126
- fileName,
127
- title: childTitle,
128
- description: childHeader?.description || data.description,
129
- [key]: item,
130
- }
131
-
132
- if (!data.children) {
133
- data.children = [childItem]
134
- } else {
135
- const child = data.children.find((item) => item.title === childTitle)
136
-
137
- if (child) {
138
- child[key] = item
139
- } else {
140
- data.children.push(childItem)
141
- }
142
- }
143
- } else {
144
- data[key] = item
145
- }
146
- }
147
-
148
- export function generateWebTypes(options = {} as InstallOptions) {
149
- if (!options.entry) throw new Error('entry must be a string (non empty) or an array of strings')
150
- if (!options.outDir) throw new Error('outDir must be a string (non empty)')
151
- if (!options.name) console.warn('missing property "name"')
152
- if (!options.version) console.warn('missing property "version"')
153
-
154
- const _options: Options = Object.assign(config, options)
155
- const files: string[] = fg.sync(_options.entry, _options.fastGlobConfig)
156
- const data = files.map((path) => {
157
- const fileContent = read(path)
158
- const parseContent = parse(_options, fileContent)
159
- const content = normalize(_options, parseContent, path)
160
- content.props.content = content.props.content.map((item) => {
161
- item.Values = item.Values.replace(/`|-/g, '')
162
- return item
163
- })
164
- return content
165
- })
166
- const { tags, attributes } = vetur(_options, data)
167
- const webTypesData = webTypes(_options, data)
168
-
169
- write(_options, 'tags', tags)
170
- write(_options, 'attributes', attributes)
171
- write(_options, 'webTypes', webTypesData)
172
- }
173
-
174
- generateWebTypes({
175
- entry: './dist/docs/components/hy-button/hy-button.md', // 你的组件路径
176
- outDir: 'dist', // 输出目录
177
- name: 'hy-app', // 组件库名字
178
- version: '0.2.14', // 版本号
179
- })