@indielayer/ui 1.5.2 → 1.6.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 (210) hide show
  1. package/README.md +1 -1
  2. package/docs/components/common/DocumentPage.vue +0 -30
  3. package/docs/components/menu/DocsMenu.vue +2 -0
  4. package/docs/pages/component/datepicker/index.vue +35 -0
  5. package/docs/pages/component/datepicker/usage.vue +22 -0
  6. package/docs/pages/component/form/usage.vue +13 -0
  7. package/docs/pages/component/menu/usage.vue +7 -3
  8. package/docs/pages/component/qrCode/index.vue +25 -0
  9. package/docs/pages/component/qrCode/usage.vue +20 -0
  10. package/docs/pages/component/slider/usage.vue +8 -10
  11. package/docs/pages/index.vue +9 -19
  12. package/lib/components/button/Button.vue.d.ts +3 -3
  13. package/lib/components/button/Button.vue.js +2 -2
  14. package/lib/components/button/Button.vue2.js +10 -10
  15. package/lib/components/carousel/Carousel.vue.d.ts +8 -2
  16. package/lib/components/carousel/Carousel.vue.js +51 -48
  17. package/lib/components/checkbox/theme/Checkbox.base.theme.js +1 -1
  18. package/lib/components/datepicker/Datepicker.vue.d.ts +1886 -0
  19. package/lib/components/datepicker/Datepicker.vue.js +328 -0
  20. package/lib/components/datepicker/Datepicker.vue2.js +4 -0
  21. package/lib/components/datepicker/Datepicker.vue3.js +5 -0
  22. package/lib/components/datepicker/__tests__/Datepicker.spec.d.ts +1 -0
  23. package/lib/components/datepicker/index.d.ts +2 -0
  24. package/lib/components/datepicker/theme/Datepicker.base.theme.d.ts +3 -0
  25. package/lib/components/datepicker/theme/Datepicker.base.theme.js +65 -0
  26. package/lib/components/datepicker/theme/Datepicker.carbon.theme.d.ts +3 -0
  27. package/lib/components/datepicker/theme/Datepicker.carbon.theme.js +5 -0
  28. package/lib/components/drawer/Drawer.vue.js +1 -1
  29. package/lib/components/drawer/theme/Drawer.base.theme.js +1 -1
  30. package/lib/components/formGroup/FormGroup.vue.js +42 -36
  31. package/lib/components/index.d.ts +2 -0
  32. package/lib/components/index.js +99 -94
  33. package/lib/components/menu/Menu.vue.d.ts +4 -0
  34. package/lib/components/menu/Menu.vue.js +40 -34
  35. package/lib/components/menu/MenuItem.vue.d.ts +4 -0
  36. package/lib/components/menu/MenuItem.vue.js +1 -1
  37. package/lib/components/menu/MenuItem.vue2.js +43 -39
  38. package/lib/components/menu/theme/MenuItem.base.theme.js +1 -1
  39. package/lib/components/qrCode/QrCode.vue.d.ts +68 -0
  40. package/lib/components/qrCode/QrCode.vue.js +93 -0
  41. package/lib/components/qrCode/QrCode.vue2.js +4 -0
  42. package/lib/components/qrCode/__tests__/QrCode.spec.d.ts +1 -0
  43. package/lib/components/qrCode/index.d.ts +2 -0
  44. package/lib/components/qrCode/qrcodegen.d.ts +94 -0
  45. package/lib/components/qrCode/qrcodegen.js +571 -0
  46. package/lib/components/qrCode/theme/QrCode.base.theme.d.ts +3 -0
  47. package/lib/components/qrCode/theme/QrCode.base.theme.js +8 -0
  48. package/lib/components/qrCode/theme/QrCode.carbon.theme.d.ts +3 -0
  49. package/lib/components/qrCode/theme/QrCode.carbon.theme.js +5 -0
  50. package/lib/components/slider/Slider.vue.d.ts +31 -31
  51. package/lib/components/slider/Slider.vue.js +5 -146
  52. package/lib/components/slider/Slider.vue2.js +101 -2
  53. package/lib/components/slider/Slider.vue3.js +4 -0
  54. package/lib/components/slider/theme/Slider.base.theme.js +14 -10
  55. package/lib/components/slider/theme/Slider.carbon.theme.js +3 -14
  56. package/lib/index.js +117 -113
  57. package/lib/index.umd.js +39 -3
  58. package/lib/node_modules/.pnpm/@vuepic_vue-datepicker@8.0.0_vue@3.3.9/node_modules/@vuepic/vue-datepicker/dist/main.css.js +4 -0
  59. package/lib/node_modules/.pnpm/@vuepic_vue-datepicker@8.0.0_vue@3.3.9/node_modules/@vuepic/vue-datepicker/dist/vue-datepicker.js +5011 -0
  60. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/_lib/addLeadingZeros.js +7 -0
  61. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/_lib/defaultOptions.js +7 -0
  62. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/_lib/format/formatters.js +518 -0
  63. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/_lib/format/lightFormatters.js +59 -0
  64. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/_lib/format/longFormatters.js +52 -0
  65. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js +18 -0
  66. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/_lib/protectedTokens.js +21 -0
  67. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/add.js +20 -0
  68. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/addDays.js +10 -0
  69. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/addMonths.js +21 -0
  70. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/addQuarters.js +9 -0
  71. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/addYears.js +8 -0
  72. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/constants.js +8 -0
  73. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/constructFrom.js +7 -0
  74. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/differenceInCalendarDays.js +11 -0
  75. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/eachDayOfInterval.js +19 -0
  76. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/eachQuarterOfInterval.js +20 -0
  77. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/endOfQuarter.js +9 -0
  78. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/endOfWeek.js +11 -0
  79. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/endOfYear.js +9 -0
  80. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/format.js +60 -0
  81. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/getDay.js +8 -0
  82. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/getDayOfYear.js +11 -0
  83. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/getDaysInMonth.js +10 -0
  84. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/getDefaultOptions.js +8 -0
  85. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/getHours.js +8 -0
  86. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/getISODay.js +9 -0
  87. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/getISOWeek.js +12 -0
  88. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/getISOWeekYear.js +15 -0
  89. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/getMinutes.js +8 -0
  90. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/getMonth.js +8 -0
  91. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/getQuarter.js +9 -0
  92. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/getSeconds.js +8 -0
  93. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/getWeek.js +12 -0
  94. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/getWeekYear.js +17 -0
  95. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/getYear.js +8 -0
  96. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/isAfter.js +9 -0
  97. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/isBefore.js +9 -0
  98. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/isDate.js +7 -0
  99. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/isEqual.js +9 -0
  100. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/isSameQuarter.js +9 -0
  101. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/isValid.js +12 -0
  102. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/locale/_lib/buildFormatLongFn.js +9 -0
  103. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/locale/_lib/buildLocalizeFn.js +18 -0
  104. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/locale/_lib/buildMatchFn.js +31 -0
  105. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js +17 -0
  106. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/locale/en-US/_lib/formatDistance.js +70 -0
  107. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/locale/en-US/_lib/formatLong.js +33 -0
  108. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/locale/en-US/_lib/formatRelative.js +11 -0
  109. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/locale/en-US/_lib/localize.js +155 -0
  110. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/locale/en-US/_lib/match.js +110 -0
  111. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/locale/en-US.js +21 -0
  112. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/Parser.js +22 -0
  113. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/Setter.js +40 -0
  114. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/constants.js +49 -0
  115. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/AMPMMidnightParser.js +49 -0
  116. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/AMPMParser.js +49 -0
  117. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/DateParser.js +61 -0
  118. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/DayOfYearParser.js +51 -0
  119. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/DayParser.js +45 -0
  120. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/DayPeriodParser.js +49 -0
  121. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/EraParser.js +30 -0
  122. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/ExtendedYearParser.js +21 -0
  123. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/FractionOfSecondParser.js +22 -0
  124. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/Hour0To11Parser.js +32 -0
  125. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/Hour0to23Parser.js +32 -0
  126. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/Hour1To24Parser.js +33 -0
  127. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/Hour1to12Parser.js +33 -0
  128. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/ISODayParser.js +99 -0
  129. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/ISOTimezoneParser.js +48 -0
  130. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.js +48 -0
  131. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/ISOWeekParser.js +49 -0
  132. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/ISOWeekYearParser.js +40 -0
  133. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/LocalDayParser.js +74 -0
  134. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/LocalWeekParser.js +48 -0
  135. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/LocalWeekYearParser.js +69 -0
  136. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/MinuteParser.js +32 -0
  137. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/MonthParser.js +71 -0
  138. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/QuarterParser.js +70 -0
  139. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/SecondParser.js +32 -0
  140. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.js +74 -0
  141. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/StandAloneMonthParser.js +71 -0
  142. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/StandAloneQuarterParser.js +70 -0
  143. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.js +22 -0
  144. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/TimestampSecondsParser.js +22 -0
  145. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers/YearParser.js +49 -0
  146. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/parsers.js +67 -0
  147. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse/_lib/utils.js +103 -0
  148. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parse.js +90 -0
  149. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/parseISO.js +128 -0
  150. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/set.js +11 -0
  151. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/setDay.js +12 -0
  152. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/setHours.js +9 -0
  153. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/setISODay.js +11 -0
  154. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/setISOWeek.js +10 -0
  155. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/setMilliseconds.js +9 -0
  156. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/setMinutes.js +9 -0
  157. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/setMonth.js +13 -0
  158. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/setSeconds.js +9 -0
  159. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/setWeek.js +10 -0
  160. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/setYear.js +10 -0
  161. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/startOfDay.js +9 -0
  162. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/startOfISOWeek.js +8 -0
  163. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/startOfISOWeekYear.js +11 -0
  164. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/startOfQuarter.js +9 -0
  165. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/startOfWeek.js +11 -0
  166. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/startOfWeekYear.js +13 -0
  167. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/startOfYear.js +10 -0
  168. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/sub.js +19 -0
  169. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/subDays.js +8 -0
  170. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/subMonths.js +8 -0
  171. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/subYears.js +8 -0
  172. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/toDate.js +8 -0
  173. package/lib/node_modules/.pnpm/date-fns@3.3.1/node_modules/date-fns/transpose.js +18 -0
  174. package/lib/theme.d.ts +3 -1
  175. package/lib/themes/base/components.d.ts +2 -0
  176. package/lib/themes/base/components.js +82 -78
  177. package/lib/themes/carbon/components.d.ts +2 -0
  178. package/lib/themes/carbon/components.js +82 -78
  179. package/lib/version.d.ts +1 -1
  180. package/lib/version.js +1 -1
  181. package/package.json +2 -1
  182. package/src/components/button/Button.vue +1 -1
  183. package/src/components/carousel/Carousel.vue +8 -3
  184. package/src/components/checkbox/theme/Checkbox.base.theme.ts +1 -1
  185. package/src/components/datepicker/Datepicker.vue +414 -0
  186. package/src/components/datepicker/__tests__/Datepicker.spec.ts +11 -0
  187. package/src/components/datepicker/index.ts +2 -0
  188. package/src/components/datepicker/theme/Datepicker.base.theme.ts +72 -0
  189. package/src/components/datepicker/theme/Datepicker.carbon.theme.ts +7 -0
  190. package/src/components/drawer/Drawer.vue +1 -1
  191. package/src/components/drawer/theme/Drawer.base.theme.ts +1 -1
  192. package/src/components/formGroup/FormGroup.vue +5 -0
  193. package/src/components/index.ts +2 -0
  194. package/src/components/menu/Menu.vue +6 -0
  195. package/src/components/menu/MenuItem.vue +2 -1
  196. package/src/components/menu/theme/MenuItem.base.theme.ts +1 -1
  197. package/src/components/qrCode/QrCode.vue +120 -0
  198. package/src/components/qrCode/__tests__/QrCode.spec.ts +14 -0
  199. package/src/components/qrCode/index.ts +2 -0
  200. package/src/components/qrCode/qrcodegen.ts +991 -0
  201. package/src/components/qrCode/theme/QrCode.base.theme.ts +9 -0
  202. package/src/components/qrCode/theme/QrCode.carbon.theme.ts +7 -0
  203. package/src/components/slider/Slider.vue +63 -137
  204. package/src/components/slider/theme/Slider.base.theme.ts +10 -5
  205. package/src/components/slider/theme/Slider.carbon.theme.ts +2 -16
  206. package/src/theme.ts +4 -0
  207. package/src/themes/base/components.ts +2 -0
  208. package/src/themes/carbon/components.ts +2 -0
  209. package/src/version.ts +1 -1
  210. package/volar.d.ts +2 -0
@@ -0,0 +1,120 @@
1
+ <script lang="ts">
2
+ const qrCodeProps = {
3
+ value: String,
4
+ color: {
5
+ type: String,
6
+ default: '#000',
7
+ },
8
+ backgroundColor: {
9
+ type: String,
10
+ default: '#fff',
11
+ },
12
+ size: {
13
+ type: [String, Number],
14
+ default: 100,
15
+ },
16
+ errorCorrectionLevel: {
17
+ type: String,
18
+ default: 'M',
19
+ },
20
+ }
21
+
22
+ export type QrCodeProps = ExtractPublicPropTypes<typeof qrCodeProps>
23
+
24
+ type InternalClasses = 'wrapper'
25
+ export interface QrCodeTheme extends ThemeComponent<QrCodeProps, InternalClasses> {}
26
+
27
+ export default {
28
+ name: 'XQrCode',
29
+ validators: {
30
+ errorCorrectionLevel: ['L', 'M', 'Q', 'H'],
31
+ },
32
+ }
33
+ </script>
34
+
35
+ <script setup lang="ts">
36
+ import { computed, onMounted, ref, watchEffect, type ExtractPublicPropTypes } from 'vue'
37
+ import { useTheme, type ThemeComponent } from '../../composables/useTheme'
38
+ import qrcodegen from './qrcodegen'
39
+
40
+ const props = defineProps(qrCodeProps)
41
+
42
+ const ERROR_CORRECTION_LEVEL: Record<string, qrcodegen.QrCode.Ecc> = {
43
+ L: qrcodegen.QrCode.Ecc.LOW,
44
+ M: qrcodegen.QrCode.Ecc.MEDIUM,
45
+ Q: qrcodegen.QrCode.Ecc.QUARTILE,
46
+ H: qrcodegen.QrCode.Ecc.HIGH,
47
+ }
48
+
49
+ const canvasRef = ref<HTMLCanvasElement>()
50
+
51
+ const qr = computed(() => qrcodegen.QrCode.encodeText(
52
+ props.value ?? '-',
53
+ ERROR_CORRECTION_LEVEL[props.errorCorrectionLevel] || qrcodegen.QrCode.Ecc.MEDIUM,
54
+ ))
55
+
56
+ onMounted(() => {
57
+ watchEffect(() => {
58
+ drawQR(
59
+ qr.value,
60
+ Number(props.size),
61
+ props.color,
62
+ props.backgroundColor,
63
+ )
64
+ })
65
+ })
66
+
67
+ function drawQR(qr: qrcodegen.QrCode, size: number, foregroundColor: string, backgroundColor: string) {
68
+ const canvas = canvasRef.value
69
+
70
+ if (!canvas) return
71
+
72
+ const canvasWidth = size * 2
73
+ const width = qr.size
74
+ const scale = canvasWidth / width
75
+
76
+ canvas.width = canvasWidth
77
+ canvas.height = canvasWidth
78
+ const ctx = canvas.getContext('2d')
79
+
80
+ if (!ctx) return
81
+
82
+ ctx.clearRect(0, 0, canvas.width, canvas.height)
83
+ for (let y = 0; y < qr.size; y++) {
84
+ for (let x = 0; x < qr.size; x++) {
85
+ ctx.fillStyle = qr.getModule(x, y) ? foregroundColor : backgroundColor
86
+ const startX = Math.floor(x * scale)
87
+ const endX = Math.ceil((x + 1) * scale)
88
+ const startY = Math.floor(y * scale)
89
+ const endY = Math.ceil((y + 1) * scale)
90
+
91
+ ctx.fillRect(startX, startY, endX - startX, endY - startY)
92
+ }
93
+ }
94
+ }
95
+
96
+ const { styles, classes, className } = useTheme('QrCode', {}, props)
97
+ </script>
98
+
99
+ <template>
100
+ <div
101
+ :style="[styles, {
102
+ width: `calc(1rem + ${size}px)`,
103
+ height: `calc(1rem + ${size}px)`,
104
+ backgroundColor,
105
+ padding: '0.5rem',
106
+ }]"
107
+ :class="[
108
+ className,
109
+ classes.wrapper,
110
+ ]"
111
+ >
112
+ <canvas
113
+ ref="canvasRef"
114
+ :style="{
115
+ width: `${size}px`,
116
+ height: `${size}px`
117
+ }"
118
+ ></canvas>
119
+ </div>
120
+ </template>
@@ -0,0 +1,14 @@
1
+ import { describe, it, expect, vitest } from 'vitest'
2
+ import { mount } from '@vue/test-utils'
3
+ import QrCode from '../QrCode.vue'
4
+
5
+ describe('QrCode', () => {
6
+ it('renders properly', () => {
7
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
8
+ // @ts-ignore
9
+ HTMLCanvasElement.prototype.getContext = vitest.fn()
10
+ const wrapper = mount(QrCode)
11
+
12
+ expect(wrapper.vm).toBeTruthy()
13
+ })
14
+ })
@@ -0,0 +1,2 @@
1
+ export { default as XQrCode } from './QrCode.vue'
2
+ export type { QrCodeProps, QrCodeTheme } from './QrCode.vue'