index.ts 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. // components/w-field/index.ts
  2. Component({
  3. options: {
  4. multipleSlots: true,
  5. styleIsolation: "shared"
  6. },
  7. /**
  8. * 组件的属性列表
  9. */
  10. properties: {
  11. value: {
  12. type: String,
  13. value: '',
  14. observer: '_value'
  15. },
  16. label: {
  17. type: String,
  18. value: '标题'
  19. },
  20. /** 是否显示内边框 */
  21. border: {
  22. type: Boolean,
  23. value: true,
  24. },
  25. /** 是否禁用输入框 */
  26. disabled: {
  27. type: Boolean,
  28. value: false,
  29. },
  30. /** 是否只读 */
  31. readonly: {
  32. type: Boolean,
  33. value: false,
  34. },
  35. /** 是否居中 */
  36. center: {
  37. type: Boolean,
  38. value: false,
  39. },
  40. /** 是否启用清除控件 */
  41. clearable: {
  42. type: Boolean,
  43. value: false,
  44. },
  45. /** 是否开启点击反馈 */
  46. clickable: {
  47. type: Boolean,
  48. value: false,
  49. },
  50. /** 是否展示右侧箭头并开启点击反馈 */
  51. isLink: {
  52. type: Boolean,
  53. value: false,
  54. },
  55. /**
  56. * 输入框内容对齐方式,可选值为 center right, 默认 left
  57. */
  58. inputAlign: {
  59. type: String,
  60. value: 'left'
  61. },
  62. /** 标题宽度 默认5.2em */
  63. titleWidth: {
  64. type: String,
  65. value: '5.2em'
  66. },
  67. /**
  68. * 可设置为任意原生类型, 如 number idcard textarea digit nickname, 默认 text
  69. */
  70. type: {
  71. type: String,
  72. value: 'text'
  73. },
  74. /** 请输入占位符 */
  75. placeholder: {
  76. type: String,
  77. value: '请输入内容'
  78. },
  79. /** 指定 placeholder 的样式 */
  80. placeholderStyle: {
  81. type: String,
  82. value: ''
  83. },
  84. /** 是否自适应内容高度,只对 textarea 有效,可传入对象,如 { maxHeight: 100, minHeight: 50 },单位为px */
  85. autosize: {
  86. type: [Object, Boolean] as any,
  87. value: false
  88. },
  89. /** 最大输入长度,设置为 -1 的时候不限制最大长度 */
  90. maxlength: {
  91. type: Number,
  92. value: -1
  93. },
  94. /** 是否显示字数统计,需要设置maxlength属性 */
  95. showWordLimit: {
  96. type: Boolean,
  97. value: false
  98. },
  99. /**
  100. * 左侧文本对齐方式,可选值为 top, 默认 left
  101. */
  102. labelAlign: {
  103. type: String,
  104. value: 'left'
  105. }
  106. },
  107. /**
  108. * 组件的初始数据
  109. */
  110. data: {
  111. innerValue: ''
  112. },
  113. lifetimes: {
  114. attached() {
  115. //
  116. }
  117. },
  118. /**
  119. * 组件的方法列表
  120. */
  121. methods: {
  122. // 值变化事件
  123. onChange(event: { detail: any }) {
  124. const value = event.detail || '';
  125. this.triggerEvent('change', value)
  126. },
  127. // 失焦事件
  128. onBlur(event: { detail: any }) {
  129. const value = event.detail || '';
  130. this.triggerEvent('blur', value)
  131. },
  132. onInput(event: { detail: any }) {
  133. const value = event.detail || '';
  134. this.setData({
  135. value: value
  136. })
  137. this.triggerEvent('input', value)
  138. },
  139. _value() {
  140. this.setData({
  141. innerValue: this.data.value
  142. })
  143. }
  144. }
  145. })