index.uts 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import { BuilderNode } from "@kit.ArkUI"
  2. import { buildCalendarPicker } from "./builder.ets"
  3. interface CalendarPickerOptions {
  4. selected ?: Date
  5. hintRadius ?: number
  6. alignType ?: CalendarAlign
  7. offsetX ?: number | string
  8. offsetY ?: number | string
  9. color ?: string
  10. fontSize ?: number
  11. fontWeight ?: 100 | 400 | 500 | 700 | 900
  12. fontStyle ?: FontStyle
  13. onChange ?: (value : Date) => void
  14. }
  15. export class CalendarPicker {
  16. private onChanges : Array<(value : Date) => void> = []
  17. private params : CalendarPickerOptions = {
  18. onChange: (value : Date) => {
  19. this.onChanges.forEach((onChange) => {
  20. onChange(value)
  21. })
  22. }
  23. }
  24. private builder : BuilderNode<[CalendarPickerOptions]> | null = null
  25. init(element : UniNativeViewElement) {
  26. this.builder =
  27. element.bindHarmonyWrappedBuilder(wrapBuilder<[CalendarPickerOptions]>(buildCalendarPicker), this.params)
  28. }
  29. onChange(callback : (value : Date) => void) : CalendarPicker {
  30. this.onChanges.push(callback)
  31. return this
  32. }
  33. setSelected(date : Date) : CalendarPicker {
  34. this.params.selected = date
  35. this.builder?.update(this.params)
  36. return this
  37. }
  38. setAlignType(alignType : 'start' | 'center' | 'end') : CalendarPicker {
  39. switch (alignType) {
  40. case 'start':
  41. this.params.alignType = CalendarAlign.START
  42. break
  43. case 'center':
  44. this.params.alignType = CalendarAlign.CENTER
  45. break
  46. case 'end':
  47. this.params.alignType = CalendarAlign.END
  48. break
  49. }
  50. this.builder?.update(this.params)
  51. return this
  52. }
  53. setOffsetX(offsetX : number | string) : CalendarPicker {
  54. this.params.offsetX = offsetX
  55. this.builder?.update(this.params)
  56. return this
  57. }
  58. setOffsetY(offsetY : number | string) : CalendarPicker {
  59. this.params.offsetY = offsetY
  60. this.builder?.update(this.params)
  61. return this
  62. }
  63. setHintRadius(hintRadius : number) : CalendarPicker {
  64. this.params.hintRadius = hintRadius
  65. this.builder?.update(this.params)
  66. return this
  67. }
  68. setColor(color : string) : CalendarPicker {
  69. this.params.color = color
  70. this.builder?.update(this.params)
  71. return this
  72. }
  73. setFontSize(fontSize : number) : CalendarPicker {
  74. this.params.fontSize = fontSize
  75. this.builder?.update(this.params)
  76. return this
  77. }
  78. setFontWeight(fontWeight : 100 | 400 | 500 | 700 | 900) : CalendarPicker {
  79. this.params.fontWeight = fontWeight
  80. this.builder?.update(this.params)
  81. return this
  82. }
  83. setFontStyle(fontStyle : 'normal' | 'italic') : CalendarPicker {
  84. switch (fontStyle) {
  85. case 'normal':
  86. this.params.fontStyle = FontStyle.Normal
  87. break
  88. case 'italic':
  89. this.params.fontStyle = FontStyle.Italic
  90. break
  91. }
  92. this.builder?.update(this.params)
  93. return this
  94. }
  95. }