Text.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. Ext.define('uas.override.form.field.Text', {
  2. override: 'Ext.form.field.Text',
  3. requiredLabelCls: Ext.baseCSSPrefix + 'form-item-required-label',
  4. requiredCls: Ext.baseCSSPrefix + 'form-required-field',
  5. setRequired: function (required) {
  6. var me = this;
  7. me.allowBlank = !required;
  8. if (required) {
  9. if (me.labelEl) {
  10. me.labelEl.addCls(me.requiredLabelCls);
  11. }
  12. if (me.inputEl) {
  13. me.inputEl.addCls(me.requiredCls);
  14. }
  15. } else {
  16. if (me.labelEl) {
  17. me.labelEl.removeCls(me.requiredLabelCls);
  18. }
  19. if (me.inputEl) {
  20. me.inputEl.removeCls(me.requiredCls);
  21. }
  22. }
  23. },
  24. /**
  25. * Generates the arguments for the field decorations {@link #labelableRenderTpl
  26. * rendering template}.
  27. * @param {Object} data optional object to use as the base data object. If provided,
  28. * this method will add properties to the base object instead of creating a new one.
  29. * @return {Object} The template arguments
  30. * @protected
  31. */
  32. getLabelableRenderData: function () {
  33. var me = this,
  34. labelAlign = me.labelAlign,
  35. topLabel = (labelAlign === 'top'),
  36. rightLabel = (labelAlign === 'right'),
  37. sideError = (me.msgTarget === 'side'),
  38. underError = (me.msgTarget === 'under'),
  39. errorMsgCls = me.errorMsgCls,
  40. labelPad = me.labelPad,
  41. labelWidth = me.labelWidth,
  42. labelClsExtra = me.labelClsExtra || '',
  43. errorWrapExtraCls = sideError ? me.errorWrapSideCls : me.errorWrapUnderCls,
  44. labelStyle = '',
  45. labelInnerStyle = '',
  46. labelVisible = me.hasVisibleLabel(),
  47. autoFitErrors = me.autoFitErrors,
  48. defaultBodyWidth = me.defaultBodyWidth,
  49. bodyStyle, data;
  50. if (topLabel) {
  51. labelClsExtra += ' ' + me.topLabelCls;
  52. if (labelPad) {
  53. labelInnerStyle = 'padding-bottom:' + labelPad + 'px;';
  54. }
  55. if (sideError && !autoFitErrors) {
  56. labelClsExtra += ' ' + me.topLabelSideErrorCls;
  57. }
  58. } else {
  59. if (rightLabel) {
  60. labelClsExtra += ' ' + me.rightLabelCls;
  61. }
  62. if (labelPad) {
  63. labelStyle += me.getHorizontalPaddingStyle() + labelPad + 'px;';
  64. }
  65. labelStyle += 'width:' + (labelWidth + (labelPad ? labelPad : 0)) + 'px;';
  66. // inner label needs width as well so that setting width on the outside
  67. // that is smaller than the natural width, will be ensured to take width
  68. // away from the body, and not the label.
  69. labelInnerStyle = 'width:' + labelWidth + 'px';
  70. }
  71. // 对requiredLabelCls的支持
  72. if (!me.allowBlank) {
  73. labelClsExtra += ' ' + me.requiredLabelCls;
  74. }
  75. if (labelVisible) {
  76. if (!topLabel && underError) {
  77. errorWrapExtraCls += ' ' + me.errorWrapUnderSideLabelCls;
  78. }
  79. }
  80. if (defaultBodyWidth) {
  81. // This is here to support textfield's deprecated "size" config
  82. bodyStyle = 'min-width:' + defaultBodyWidth + 'px;max-width:' + defaultBodyWidth + 'px;';
  83. }
  84. data = {
  85. id: me.id,
  86. inputId: me.getInputId(),
  87. labelCls: me.labelCls,
  88. labelClsExtra: labelClsExtra,
  89. labelStyle: labelStyle + (me.labelStyle || ''),
  90. labelInnerStyle: labelInnerStyle,
  91. labelInnerCls: me.labelInnerCls,
  92. labelTextCls: me.labelTextCls,
  93. skipLabelForAttribute: !!me.skipLabelForAttribute,
  94. unselectableCls: Ext.Element.unselectableCls,
  95. bodyStyle: bodyStyle,
  96. baseBodyCls: me.baseBodyCls,
  97. fieldBodyCls: me.fieldBodyCls,
  98. extraFieldBodyCls: me.extraFieldBodyCls,
  99. errorWrapCls: me.errorWrapCls,
  100. errorWrapExtraCls: errorWrapExtraCls,
  101. renderError: sideError || underError,
  102. invalidMsgCls: sideError ? me.invalidIconCls : underError ? me.invalidUnderCls : '',
  103. errorMsgCls: errorMsgCls,
  104. growCls: me.grow ? me.growCls : '',
  105. tipAnchorTarget: me.id + '-inputEl',
  106. errorWrapStyle: (sideError && !autoFitErrors) ? 'visibility:hidden' : 'display:none',
  107. fieldLabel: me.getFieldLabel(),
  108. labelSeparator: me.labelSeparator,
  109. renderAriaElements: !!me.renderAriaElements,
  110. ariaStatus: ''
  111. };
  112. if (me.ariaHelp) {
  113. data.ariaHelp = Ext.String.htmlEncode(me.ariaHelp);
  114. }
  115. me.getInsertionRenderData(data, me.labelableInsertions);
  116. return data;
  117. }
  118. });