colorpicker.js 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. ///import core
  2. ///import uicore
  3. (function() {
  4. var utils = baidu.editor.utils,
  5. UIBase = baidu.editor.ui.UIBase,
  6. ColorPicker = (baidu.editor.ui.ColorPicker = function(options) {
  7. this.initOptions(options);
  8. this.noColorText = this.noColorText || this.editor.getLang("clearColor");
  9. this.initUIBase();
  10. });
  11. ColorPicker.prototype = {
  12. getHtmlTpl: function() {
  13. return genColorPicker(this.noColorText, this.editor);
  14. },
  15. _onTableClick: function(evt) {
  16. var tgt = evt.target || evt.srcElement;
  17. var color = tgt.getAttribute("data-color");
  18. if (color) {
  19. this.fireEvent("pickcolor", color);
  20. }
  21. },
  22. _onTableOver: function(evt) {
  23. var tgt = evt.target || evt.srcElement;
  24. var color = tgt.getAttribute("data-color");
  25. if (color) {
  26. this.getDom("preview").style.backgroundColor = color;
  27. }
  28. },
  29. _onTableOut: function() {
  30. this.getDom("preview").style.backgroundColor = "";
  31. },
  32. _onPickNoColor: function() {
  33. this.fireEvent("picknocolor");
  34. }
  35. };
  36. utils.inherits(ColorPicker, UIBase);
  37. var COLORS = ("ffffff,000000,eeece1,1f497d,4f81bd,c0504d,9bbb59,8064a2,4bacc6,f79646," +
  38. "f2f2f2,7f7f7f,ddd9c3,c6d9f0,dbe5f1,f2dcdb,ebf1dd,e5e0ec,dbeef3,fdeada," +
  39. "d8d8d8,595959,c4bd97,8db3e2,b8cce4,e5b9b7,d7e3bc,ccc1d9,b7dde8,fbd5b5," +
  40. "bfbfbf,3f3f3f,938953,548dd4,95b3d7,d99694,c3d69b,b2a2c7,92cddc,fac08f," +
  41. "a5a5a5,262626,494429,17365d,366092,953734,76923c,5f497a,31859b,e36c09," +
  42. "7f7f7f,0c0c0c,1d1b10,0f243e,244061,632423,4f6128,3f3151,205867,974806," +
  43. "c00000,ff0000,ffc000,ffff00,92d050,00b050,00b0f0,0070c0,002060,7030a0,").split(
  44. ","
  45. );
  46. function genColorPicker(noColorText, editor) {
  47. var html =
  48. '<div id="##" class="edui-colorpicker %%">' +
  49. '<div class="edui-colorpicker-topbar edui-clearfix">' +
  50. '<div unselectable="on" id="##_preview" class="edui-colorpicker-preview"></div>' +
  51. '<div unselectable="on" class="edui-colorpicker-nocolor" onclick="$$._onPickNoColor(event, this);">' +
  52. noColorText +
  53. "</div>" +
  54. "</div>" +
  55. '<table class="edui-box" style="border-collapse: collapse;" onmouseover="$$._onTableOver(event, this);" onmouseout="$$._onTableOut(event, this);" onclick="return $$._onTableClick(event, this);" cellspacing="0" cellpadding="0">' +
  56. '<tr style="border-bottom: 1px solid #ddd;font-size: 13px;line-height: 25px;color:#39C;padding-top: 2px"><td colspan="10">' +
  57. editor.getLang("themeColor") +
  58. "</td> </tr>" +
  59. '<tr class="edui-colorpicker-tablefirstrow" >';
  60. for (var i = 0; i < COLORS.length; i++) {
  61. if (i && i % 10 === 0) {
  62. html +=
  63. "</tr>" +
  64. (i == 60
  65. ? '<tr style="border-bottom: 1px solid #ddd;font-size: 13px;line-height: 25px;color:#39C;"><td colspan="10">' +
  66. editor.getLang("standardColor") +
  67. "</td></tr>"
  68. : "") +
  69. "<tr" +
  70. (i == 60 ? ' class="edui-colorpicker-tablefirstrow"' : "") +
  71. ">";
  72. }
  73. html += i < 70
  74. ? '<td style="padding: 0 2px;"><a hidefocus title="' +
  75. COLORS[i] +
  76. '" onclick="return false;" href="javascript:" unselectable="on" class="edui-box edui-colorpicker-colorcell"' +
  77. ' data-color="#' +
  78. COLORS[i] +
  79. '"' +
  80. ' style="background-color:#' +
  81. COLORS[i] +
  82. ";border:solid #ccc;" +
  83. (i < 10 || i >= 60
  84. ? "border-width:1px;"
  85. : i >= 10 && i < 20
  86. ? "border-width:1px 1px 0 1px;"
  87. : "border-width:0 1px 0 1px;") +
  88. '"' +
  89. "></a></td>"
  90. : "";
  91. }
  92. html += "</tr></table></div>";
  93. return html;
  94. }
  95. })();