beyond-rails 0.0.295 → 1.0.4

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 (62) hide show
  1. checksums.yaml +4 -4
  2. data/src/font/beyond.eot +0 -0
  3. data/src/font/beyond.svg +9 -2
  4. data/src/font/beyond.ttf +0 -0
  5. data/src/font/beyond.woff +0 -0
  6. data/src/font/beyond.woff2 +0 -0
  7. data/src/js/components/BarChart.js +19 -7
  8. data/src/js/components/Dropdown.js +9 -2
  9. data/src/js/components/LineChart.js +18 -8
  10. data/src/js/components/PieChart.js +16 -6
  11. data/src/js/components/SearchDropdown.js +10 -5
  12. data/src/js/components/Tooltip.js +1 -5
  13. data/src/js/consts/index.js +42 -0
  14. data/src/js/decorators/chartCommon.js +4 -1
  15. data/src/js/index.js +0 -1
  16. data/src/sass/_base.scss +170 -0
  17. data/src/sass/_beyond-dark.scss +3 -0
  18. data/src/sass/_beyond.scss +0 -54
  19. data/src/sass/_main.scss +56 -176
  20. data/src/sass/abstracts/_mixins.scss +2 -4
  21. data/src/sass/abstracts/_placeholders.scss +3 -3
  22. data/src/sass/abstracts/_post-variables.scss +85 -0
  23. data/src/sass/abstracts/_variables.scss +296 -222
  24. data/src/sass/base/_background.scss +2 -3
  25. data/src/sass/base/_typography.scss +18 -17
  26. data/src/sass/components/_alert.scss +8 -14
  27. data/src/sass/components/_autocomplete.scss +4 -5
  28. data/src/sass/components/_avatar.scss +5 -6
  29. data/src/sass/components/_badge.scss +2 -4
  30. data/src/sass/components/_breadcrumb.scss +3 -2
  31. data/src/sass/components/_btn-group.scss +1 -1
  32. data/src/sass/components/_btn.scss +65 -67
  33. data/src/sass/components/_card.scss +12 -6
  34. data/src/sass/components/_chart.scss +5 -5
  35. data/src/sass/components/_checkbox.scss +8 -8
  36. data/src/sass/components/_date-menu.scss +10 -10
  37. data/src/sass/components/_date-time-ranger.scss +9 -3
  38. data/src/sass/components/_dropdown.scss +22 -14
  39. data/src/sass/components/_form.scss +17 -18
  40. data/src/sass/components/_icon.scss +143 -2
  41. data/src/sass/components/_input.scss +4 -4
  42. data/src/sass/components/_mega-menu.scss +9 -6
  43. data/src/sass/components/_modal.scss +5 -6
  44. data/src/sass/components/_month-menu.scss +11 -11
  45. data/src/sass/components/_nav.scss +5 -5
  46. data/src/sass/components/_navbar.scss +26 -33
  47. data/src/sass/components/_pagination.scss +9 -8
  48. data/src/sass/components/_radio.scss +2 -4
  49. data/src/sass/components/_search-dropdown.scss +3 -2
  50. data/src/sass/components/_select.scss +15 -23
  51. data/src/sass/components/_sidebar.scss +1 -1
  52. data/src/sass/components/_spinner.scss +0 -1
  53. data/src/sass/components/_switch.scss +5 -5
  54. data/src/sass/components/_tabbox.scss +19 -32
  55. data/src/sass/components/_table.scss +13 -14
  56. data/src/sass/components/_tag-input.scss +2 -4
  57. data/src/sass/components/_tag.scss +4 -4
  58. data/src/sass/components/_time-menu.scss +4 -4
  59. data/src/sass/components/_toast.scss +4 -3
  60. data/src/sass/components/_tooltip.scss +19 -27
  61. data/src/sass/themes/_dark.scss +309 -0
  62. metadata +6 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 36652abb2afa4c3c6a9aedbe1d08b5048dd48640d0a8a077c32e76ec0614d81f
4
- data.tar.gz: a9e338ed7f0b0cde7b26f425672f7e356456c31a82684ca7e952b19148a178fd
3
+ metadata.gz: c1804f518e40f24b57bb76c5d0739a063d9f91400963e7467cb61dd8cb28af2d
4
+ data.tar.gz: 76c17444b4c4e614e9e637f1da0ac12d07d03a986f542d0de067a4ed9ca7cfe8
5
5
  SHA512:
6
- metadata.gz: a0951e8675a2f2eb791f6f0bd98dacdea22edc61cad5384c3c6ff4b588f06296bbf7382ad84cb22d1e23deb87c6ff29ce909c9d2c8b4d159a021549aac24b5e1
7
- data.tar.gz: 674a58e6a09c7dd7bcd453e4e1f061642fabfa0ec9ce52539d8cc1a3c6a80432aece770737cd39b118446dbd5619e4134af489d5056937812fe2bddb7af1e19c
6
+ metadata.gz: 6eff3dfc7511bb2c89c86f54817b3175b5710bb1bb9384ac3d7a9473a50a38f41e812d325accafc1d7b12ba9724f4e8438e93d3f77a5400139b252bf226352d5
7
+ data.tar.gz: a7e0eb9127f29f277849e8f8dcb7664540d2033817491b742e51161497e8af1fe59aaf87abd35a5dfbebbd5b088c95f2adc8e2e687880874a6157d406f2b02f7
data/src/font/beyond.eot CHANGED
Binary file
data/src/font/beyond.svg CHANGED
@@ -142,6 +142,13 @@
142
142
  <glyph unicode="&#xe984;" glyph-name="expand" d="M511.868-65.382h-0.845c-14.249 0.040-27.086 6.057-36.136 15.676-0.801 0.713-1.585 1.457-2.35 2.231l-343.999 348.25c-19.309 19.548-19.115 51.047 0.432 70.356s51.047 19.115 70.356-0.432l262.305-265.547 1.213 575.831c0.058 27.476 22.379 49.703 49.855 49.645s49.703-22.379 49.645-49.855l-1.215-576.566 263.564 266.512c19.32 19.536 50.82 19.712 70.356 0.391s19.712-50.82 0.391-70.356l-347.473-351.359c-9.914-10.025-23.035-14.952-36.101-14.777v0zM143.131 880c-16.089 0-29.131 17.909-29.131 40s13.042 40 29.131 40h737.738c16.089 0 29.131-17.909 29.131-40s-13.042-40-29.131-40h-737.738z" />
143
143
  <glyph unicode="&#xe985;" glyph-name="shrink" d="M511.868 733.382c13.066 0.174 26.187-4.752 36.101-14.777l347.473-351.359c19.32-19.536 19.145-51.036-0.391-70.356s-51.036-19.145-70.356 0.391l-263.564 266.512 1.215-576.566c0.058-27.476-22.169-49.797-49.645-49.855s-49.797 22.169-49.855 49.646l-1.213 575.831-262.305-265.547c-19.309-19.548-50.808-19.741-70.356-0.432s-19.741 50.808-0.432 70.356l343.999 348.25c0.765 0.774 1.548 1.518 2.35 2.231 9.050 9.619 21.887 15.636 36.136 15.676h0.845zM143.131 880c-16.089 0-29.131 17.909-29.131 40s13.042 40 29.131 40h737.738c16.089 0 29.131-17.909 29.131-40s-13.042-40-29.131-40h-737.738z" />
144
144
  <glyph unicode="&#xe986;" glyph-name="brush-alt" d="M895.693 940.743c39.535 21.353 73.331 18.001 101.388-10.056s31.529-61.973 10.415-101.747c-143.315-175.012-239.296-288.064-287.944-339.154-72.972-76.635-157.854-139.003-163.736-133.121-6.569 6.569-118.875 118.875-132.999 132.999 0 0-26.317 11.172 133.364 163.493 106.454 101.547 219.625 197.409 339.512 287.586zM354.82 430.539c43.447-43.447 87.986-87.092 133.617-130.937 0.461-110.050-52.691-190.068-159.457-240.055s-216.426 4.111-328.98 162.293c77.634-4.996 125.092 4.308 142.375 27.91 26.195 35.773 7.996 84.241 73.273 146.441 36.047 34.348 107.648 34.348 139.172 34.348z" />
145
- <glyph unicode="&#xe999;" glyph-name="bug" d="M1024 384v64h-193.29c-5.862 72.686-31.786 139.026-71.67 192.25h161.944l70.060 280.24-62.090 15.522-57.94-231.76h-174.68c-0.892 0.694-1.796 1.374-2.698 2.056 6.71 19.502 10.362 40.422 10.362 62.194 0.002 105.76-85.958 191.498-191.998 191.498s-192-85.738-192-191.5c0-21.772 3.65-42.692 10.362-62.194-0.9-0.684-1.804-1.362-2.698-2.056h-174.68l-57.94 231.76-62.090-15.522 70.060-280.24h161.944c-39.884-53.222-65.806-119.562-71.668-192.248h-193.29v-64h193.37c3.802-45.664 15.508-88.812 33.638-127.75h-123.992l-70.060-280.238 62.090-15.524 57.94 231.762h112.354c58.692-78.032 147.396-127.75 246.66-127.75s187.966 49.718 246.662 127.75h112.354l57.94-231.762 62.090 15.524-70.060 280.238h-123.992c18.13 38.938 29.836 82.086 33.636 127.75h193.37z" />
146
- <glyph unicode="&#xe9b3;" glyph-name="target1" d="M1024 512h-100.924c-27.64 178.24-168.836 319.436-347.076 347.076v100.924h-128v-100.924c-178.24-27.64-319.436-168.836-347.076-347.076h-100.924v-128h100.924c27.64-178.24 168.836-319.436 347.076-347.076v-100.924h128v100.924c178.24 27.64 319.436 168.836 347.076 347.076h100.924v128zM792.822 512h-99.762c-19.284 54.55-62.51 97.778-117.060 117.060v99.762c107.514-24.49 192.332-109.31 216.822-216.822zM512 384c-35.346 0-64 28.654-64 64s28.654 64 64 64c35.346 0 64-28.654 64-64s-28.654-64-64-64zM448 728.822v-99.762c-54.55-19.282-97.778-62.51-117.060-117.060h-99.762c24.49 107.512 109.31 192.332 216.822 216.822zM231.178 384h99.762c19.282-54.55 62.51-97.778 117.060-117.060v-99.762c-107.512 24.49-192.332 109.308-216.822 216.822zM576 167.178v99.762c54.55 19.284 97.778 62.51 117.060 117.060h99.762c-24.49-107.514-109.308-192.332-216.822-216.822z" />
145
+ <glyph unicode="&#xe987;" glyph-name="pencil7" d="M768 416v-352h-640v640h352l128 128h-512c-52.8 0-96-43.2-96-96v-704c0-52.8 43.2-96 96-96h704c52.798 0 96 43.2 96 96v512l-128-128zM864 960l-608-608v-160h160l608 608c0 96-64 160-160 160zM416 320l-48 48 480 480 48-48-480-480z" />
146
+ <glyph unicode="&#xe9fd;" glyph-name="store2" d="M416 384h-192c-17.672 0-32-14.326-32-32v-192c0-17.674 14.328-32 32-32h192c17.672 0 32 14.326 32 32v192c0 17.674-14.328 32-32 32zM384 192h-128v128h128v-128zM1024 576v288c0 17.672-14.326 32-32 32h-960c-17.672 0-32-14.328-32-32v-288c0-47.274 25.78-88.612 64-110.78v-465.22h-32c-17.672 0-32-14.326-32-32s14.328-32 32-32h960c17.674 0 32 14.326 32 32s-14.326 32-32 32h-32v465.22c38.22 22.168 64 63.506 64 110.78zM640 832h128v-256c0-35.29-28.71-64-64-64-35.292 0-64 28.71-64 64v256zM256 832h128v-256c0-35.29-28.71-64-64-64-35.292 0-64 28.71-64 64v256zM768 0h-128v256h128v-256zM896 0h-64v288c0 17.674-14.326 32-32 32h-192c-17.674 0-32-14.326-32-32v-288h-448v448c38.204 0 72.526 16.844 96 43.472 23.474-26.628 57.796-43.472 96-43.472s72.526 16.844 96 43.472c23.474-26.628 57.796-43.472 96-43.472s72.528 16.844 96 43.47c23.472-26.626 57.796-43.47 96-43.47s72.528 16.844 96 43.47c23.472-26.626 57.796-43.47 96-43.47v-448z" />
147
+ <glyph unicode="&#xea06;" glyph-name="basket" d="M812.988 576l-177.842 231.53c3.122 7.54 4.854 15.802 4.854 24.47 0 35.346-28.652 64-64 64-35.346 0-64-28.654-64-64s28.654-64 64-64c2.842 0 5.632 0.204 8.376 0.564l147.912-192.564h-440.574l147.912 192.564c2.742-0.36 5.534-0.564 8.374-0.564 35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64c0-8.668 1.732-16.93 4.854-24.468l-177.842-231.532h-211.012v-128h64l64-512h768l64 512h64v128h-211.012zM320 64h-128v128h128v-128zM320 320h-128v128h128v-128zM576 64h-128v128h128v-128zM576 320h-128v128h128v-128zM832 64h-128v128h128v-128zM832 320h-128v128h128v-128z" />
148
+ <glyph unicode="&#xea0b;" glyph-name="coin-dollar" d="M480 896c-265.096 0-480-214.904-480-480 0-265.098 214.904-480 480-480 265.098 0 480 214.902 480 480 0 265.096-214.902 480-480 480zM480 32c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.078 0 384-171.922 384-384s-171.922-384-384-384zM512 448v128h128v64h-128v64h-64v-64h-128v-256h128v-128h-128v-64h128v-64h64v64h128.002l-0.002 256h-128zM448 448h-64v128h64v-128zM576.002 256h-64.002v128h64.002v-128z" />
149
+ <glyph unicode="&#xea9d;" glyph-name="database-refresh" d="M923.004 507.004c-50.316 43.010-115.62 68.996-187.004 68.996-140.95 0-258.234-101.262-283.116-235h98.562c23.058 80.174 97.062 139 184.554 139 44.798 0 86.038-15.45 118.736-41.264l-118.736-118.736h288v288l-100.996-100.996zM736 96c-44.798 0-86.038 15.45-118.736 41.264l118.736 118.736h-288v-288l100.996 100.996c50.312-43.012 115.62-68.996 187.004-68.996 140.95 0 258.232 101.262 283.116 235h-98.556c-23.064-80.174-97.068-139-184.56-139zM138.12 374.66c-48.8 17.594-68.726 35.99-74.12 43.338v161.998c63.702-41.124 168.942-67.996 288-67.996 10.79 0 21.458 0.234 32 0.666v84.098c-10.574-0.488-21.246-0.764-32-0.764-73.698 0-144.112 11.6-198.27 32.662-45.24 17.594-63.712 35.99-68.71 43.338 4.998 7.348 23.47 25.744 68.71 43.338 54.158 21.062 124.572 32.662 198.27 32.662s144.112-11.6 198.272-32.662c45.238-17.594 63.71-35.99 68.708-43.338-3.924-5.768-16.16-18.346-43.124-32h121.096c4.618 10.34 7.046 21.042 7.046 32 0 88.366-157.596 160-352 160s-351.998-71.634-351.998-160v-512c0-88.366 157.596-160 352-160 10.79 0 21.458 0.232 32 0.664v83.984c-10.582-0.418-21.254-0.648-32-0.648-79.5 0-155.458 11.6-213.88 32.662-48.802 17.594-68.728 35.99-74.12 43.338v165.994c63.702-41.124 168.942-67.996 288-67.996 10.79 0 21.458 0.232 32 0.666v83.982c-10.582-0.418-21.254-0.648-32-0.648-79.5 0-155.458 11.6-213.88 32.662z" />
150
+ <glyph unicode="&#xeb79;" glyph-name="bug" d="M1024 384v64h-193.29c-5.862 72.686-31.786 139.026-71.67 192.25h161.944l70.060 280.24-62.090 15.522-57.94-231.76h-174.68c-0.892 0.694-1.796 1.374-2.698 2.056 6.71 19.502 10.362 40.422 10.362 62.194 0.002 105.76-85.958 191.498-191.998 191.498s-192-85.738-192-191.5c0-21.772 3.65-42.692 10.362-62.194-0.9-0.684-1.804-1.362-2.698-2.056h-174.68l-57.94 231.76-62.090-15.522 70.060-280.24h161.944c-39.884-53.222-65.806-119.562-71.668-192.248h-193.29v-64h193.37c3.802-45.664 15.508-88.812 33.638-127.75h-123.992l-70.060-280.238 62.090-15.524 57.94 231.762h112.354c58.692-78.032 147.396-127.75 246.66-127.75s187.966 49.718 246.662 127.75h112.354l57.94-231.762 62.090 15.524-70.060 280.238h-123.992c18.13 38.938 29.836 82.086 33.636 127.75h193.37z" />
151
+ <glyph unicode="&#xebde;" glyph-name="meter" d="M512 896c282.77 0 512-229.23 512-512 0-192.792-106.576-360.666-264.008-448h-495.984c-157.432 87.334-264.008 255.208-264.008 448 0 282.77 229.23 512 512 512zM801.914 94.086c77.438 77.44 120.086 180.398 120.086 289.914h-90v64h85.038c-7.014 44.998-21.39 88.146-42.564 128h-106.474v64h64.284c-9.438 11.762-19.552 23.096-30.37 33.914-46.222 46.22-101.54 80.038-161.914 99.798v-69.712h-64v85.040c-20.982 3.268-42.36 4.96-64 4.96s-43.018-1.69-64-4.96v-85.040h-64v69.712c-60.372-19.76-115.692-53.576-161.914-99.798-10.818-10.818-20.932-22.152-30.37-33.914h64.284v-64h-106.476c-21.174-39.854-35.552-83.002-42.564-128h85.040v-64h-90c0-109.516 42.648-212.474 120.086-289.914 10.71-10.71 21.924-20.728 33.56-30.086h192.354l36.572 512h54.856l36.572-512h192.354c11.636 9.358 22.852 19.378 33.56 30.086z" />
152
+ <glyph unicode="&#xec2c;" glyph-name="target1" d="M1024 512h-100.924c-27.64 178.24-168.836 319.436-347.076 347.076v100.924h-128v-100.924c-178.24-27.64-319.436-168.836-347.076-347.076h-100.924v-128h100.924c27.64-178.24 168.836-319.436 347.076-347.076v-100.924h128v100.924c178.24 27.64 319.436 168.836 347.076 347.076h100.924v128zM792.822 512h-99.762c-19.284 54.55-62.51 97.778-117.060 117.060v99.762c107.514-24.49 192.332-109.31 216.822-216.822zM512 384c-35.346 0-64 28.654-64 64s28.654 64 64 64c35.346 0 64-28.654 64-64s-28.654-64-64-64zM448 728.822v-99.762c-54.55-19.282-97.778-62.51-117.060-117.060h-99.762c24.49 107.512 109.31 192.332 216.822 216.822zM231.178 384h99.762c19.282-54.55 62.51-97.778 117.060-117.060v-99.762c-107.512 24.49-192.332 109.308-216.822 216.822zM576 167.178v99.762c54.55 19.284 97.778 62.51 117.060 117.060h99.762c-24.49-107.514-109.308-192.332-216.822-216.822z" />
153
+ <glyph unicode="&#xee83;" glyph-name="pencil-ruler" d="M249.562 945.846c-5.964 8.882-15.986 14.21-26.676 14.154-10.7-0.040-20.672-5.422-26.574-14.346l-127-192c-3.464-5.236-5.312-11.376-5.312-17.654v-736c0-35.29 28.708-64 64-64h192c35.29 0 64 28.71 64 64v736c0 6.356-1.894 12.57-5.44 17.846l-128.998 192zM197.868 832h51.082l71.050-105.752 0.022-662.248h-192.022v662.374l69.868 105.626zM224 128c17.672 0 32 14.326 32 32v512c0 17.672-14.328 32-32 32s-32-14.328-32-32v-512c0-17.674 14.328-32 32-32zM512 960v-1024h384v1024h-384zM832 832h-64v-64h64v-64h-128v-64h128v-64h-64v-64h64v-64h-128v-64h128v-64h-64v-64h64v-64h-128v-64h128v-128h-256v896h256v-64z" />
147
154
  </font></defs></svg>
data/src/font/beyond.ttf CHANGED
Binary file
data/src/font/beyond.woff CHANGED
Binary file
Binary file
@@ -4,7 +4,7 @@ import isDef from '../utils/isDef'
4
4
  import isUndef from '../utils/isUndef'
5
5
  import isInt from '../utils/isInt'
6
6
  import { mem, range, sortBy, throttle, uniqBy } from '../utils'
7
- import { DEFAULT_CHART_STYLES } from '../consts'
7
+ import { THEME_DEFAULT, CHART_STYLE } from '../consts'
8
8
 
9
9
  @supportDom
10
10
  @chartCommon
@@ -30,8 +30,7 @@ export default class BarChart {
30
30
  this.yLabelMargin = isDef(options.yLanelMargin) ? options.yLabelMargin : 14
31
31
 
32
32
  this.fontSize = options.fontSize || 12
33
- this.bg = options.bg || '#fff'
34
- this.barStyles = options.barStyles || DEFAULT_CHART_STYLES
33
+ this.setTheme(options)
35
34
 
36
35
  this.yLabelRows = []
37
36
  this.barPosMap = new Map()
@@ -48,6 +47,19 @@ export default class BarChart {
48
47
  this.bindBarVisible()
49
48
  }
50
49
 
50
+ setTheme(opts) {
51
+ const options = Object.assign({}, this.options, opts)
52
+ const theme = options.theme || THEME_DEFAULT
53
+ const style = CHART_STYLE[theme]
54
+ this.theme = theme
55
+ this.bg = options.bg || style.bg
56
+ this.line = options.line || style.line
57
+ this.txt = options.txt || style.txt
58
+ this.glowAlpha = options.glowAlpha || style.glowAlpha
59
+ this.barStyles = options.barStyles || style.variants
60
+ this.setBg()
61
+ }
62
+
51
63
  get contentWidth() {
52
64
  return this.width - (this.xPadding * 2) - this.yLabelMargin -
53
65
  this.yLabelWidth - this.halfXLabelWidth
@@ -140,7 +152,7 @@ export default class BarChart {
140
152
  const xStart = this.xPadding
141
153
  const xEnd = this.width - this.xPadding - this.yLabelWidth - this.yLabelMargin
142
154
 
143
- ctx.strokeStyle = 'rgba(224, 224, 224, .5)'
155
+ ctx.strokeStyle = this.line
144
156
  ctx.lineWidth = 1
145
157
 
146
158
  yLabelRows.forEach(row => {
@@ -164,7 +176,7 @@ export default class BarChart {
164
176
  let x = xAxisStart
165
177
 
166
178
  ctx.textBaseline = 'top'
167
- ctx.fillStyle = '#3c4257'
179
+ ctx.fillStyle = this.txt
168
180
 
169
181
  xLabelRows.forEach((row, i) => {
170
182
  ctx.fillText(row.label, x, y)
@@ -177,7 +189,7 @@ export default class BarChart {
177
189
  const x = this.width - this.xPadding
178
190
  const delta = yLabelHeight * .45
179
191
 
180
- ctx.fillStyle = '#3c4257'
192
+ ctx.fillStyle = this.txt
181
193
  ctx.textAlign = 'right'
182
194
 
183
195
  yLabelRows.forEach(row => {
@@ -210,7 +222,7 @@ export default class BarChart {
210
222
  const glowHeight = ((glowWidth - width) / 2) + height
211
223
  const glowX = x - ((glowWidth - width) / 2)
212
224
  const glowY = y - (glowHeight - height)
213
- ctx.globalAlpha = 0.2
225
+ ctx.globalAlpha = this.glowAlpha
214
226
  ctx.fillStyle = this.barStyles[res.index]
215
227
  ctx.fillRect(glowX, glowY, glowWidth, glowHeight)
216
228
  ctx.restore()
@@ -1,6 +1,6 @@
1
1
  import getFloatedTargetPos from '../utils/getFloatedTargetPos'
2
2
  import supportDom from '../decorators/supportDom'
3
- import { isFunction, toPixel, throttle } from '../utils'
3
+ import { isFunction, toPixel, throttle, noop } from '../utils'
4
4
 
5
5
  @supportDom
6
6
  export default class Dropdown {
@@ -14,6 +14,7 @@ export default class Dropdown {
14
14
  this.defaultTextNode = this.getDefaultTextNode(dom, options.textIndex)
15
15
  this.defaultText = this.defaultTextNode ? this.defaultTextNode.textContent.trim() : ''
16
16
  this.backdropMode = options.backdropMode || 'auto'
17
+ this.hidden = options.hidden || noop
17
18
  this.init()
18
19
  }
19
20
 
@@ -136,7 +137,12 @@ export default class Dropdown {
136
137
  })
137
138
  }
138
139
 
139
- this.addEvent(this.dom, 'click', () => this.toggleMenu())
140
+ this.addEvent(this.dom, 'click', () => {
141
+ this.toggleMenu()
142
+ if (! this.isMenuVisible) {
143
+ this.hidden()
144
+ }
145
+ })
140
146
 
141
147
  this.addEvent(document, 'click', event => {
142
148
  if (! this.isMenuVisible) {
@@ -148,6 +154,7 @@ export default class Dropdown {
148
154
  // is backdrop
149
155
  if ((event.target !== this.dom) && (! this.dom.contains(event.target))) {
150
156
  this.hideMenu()
157
+ this.hidden()
151
158
  }
152
159
  })
153
160
 
@@ -3,7 +3,7 @@ import chartCommon from '../decorators/chartCommon'
3
3
  import isDef from '../utils/isDef'
4
4
  import isUndef from '../utils/isUndef'
5
5
  import { mem, range, sortBy, throttle, uniqBy } from '../utils'
6
- import { DEFAULT_CHART_STYLES } from '../consts'
6
+ import { THEME_DEFAULT, CHART_STYLE } from '../consts'
7
7
 
8
8
  /**
9
9
  * -------------------------------------------------------------------------------------------------
@@ -52,10 +52,8 @@ export default class LineChart {
52
52
  this.xLabelMargin = isDef(options.xLabelMargin) ? options.xLabelMargin : 10
53
53
  this.yLabelMargin = isDef(options.yLanelMargin) ? options.yLabelMargin : 10
54
54
 
55
- this.lineStyles = options.lineStyles || DEFAULT_CHART_STYLES
56
-
57
- this.bg = options.bg || '#fff'
58
55
  this.fontSize = options.fontSize || 12
56
+ this.setTheme(options)
59
57
 
60
58
  this.xStep = options.xStep
61
59
  this.yStep = options.yStep
@@ -79,6 +77,18 @@ export default class LineChart {
79
77
  this.bindPointMouseOver()
80
78
  }
81
79
 
80
+ setTheme(opts) {
81
+ const options = Object.assign({}, this.options, opts)
82
+ const theme = options.theme || THEME_DEFAULT
83
+ const style = CHART_STYLE[theme]
84
+ this.theme = theme
85
+ this.bg = options.bg || style.bg
86
+ this.line = options.line || style.line
87
+ this.txt = options.txt || style.txt
88
+ this.lineStyles = options.lineStyles || style.variants
89
+ this.setBg()
90
+ }
91
+
82
92
  get noData() {
83
93
  return (this.xLabelRows.length === 0) && (this.yLabelRows.length === 0)
84
94
  }
@@ -175,7 +185,7 @@ export default class LineChart {
175
185
 
176
186
  const { ctx, yLabelRows, contentWidth, firstY, xAxisStart, yAxisStart, yRatio } = this
177
187
 
178
- ctx.strokeStyle = 'rgba(224, 224, 224, .5)'
188
+ ctx.strokeStyle = this.line
179
189
  ctx.lineWidth = 1
180
190
 
181
191
  yLabelRows.forEach(row => {
@@ -247,10 +257,10 @@ export default class LineChart {
247
257
  const scaleEnd = y - scaleMargin
248
258
 
249
259
  ctx.textBaseline = 'top'
250
- ctx.fillStyle = '#3c4257'
260
+ ctx.fillStyle = this.txt
251
261
  ctx.textAlign = 'center'
252
262
 
253
- ctx.strokeStyle = '#3c4257'
263
+ ctx.strokeStyle = this.txt
254
264
 
255
265
  let x = this.xAxisMiddle
256
266
 
@@ -274,7 +284,7 @@ export default class LineChart {
274
284
  const x = this.width - this.xPadding
275
285
  const halfYLabelHeight = this.yLabelHeight / 2
276
286
 
277
- ctx.fillStyle = '#3c4257'
287
+ ctx.fillStyle = this.txt
278
288
  ctx.textAlign = 'right'
279
289
 
280
290
  let y = this.yAxisMiddle
@@ -4,7 +4,7 @@ import isFn from '../utils/isFn'
4
4
  import isDef from '../utils/isDef'
5
5
  import isUndef from '../utils/isUndef'
6
6
  import { throttle } from '../utils'
7
- import { DEFAULT_CHART_STYLES } from '../consts'
7
+ import { THEME_DEFAULT, CHART_STYLE } from '../consts'
8
8
 
9
9
  @supportDom
10
10
  @chartCommon
@@ -20,8 +20,7 @@ export default class PieChart {
20
20
  this.height = options.height
21
21
  this.width = options.width
22
22
  this.padding = isDef(options.padding) ? options.padding : 30
23
- this.styles = options.styles || DEFAULT_CHART_STYLES
24
- this.bg = options.bg || '#fff'
23
+ this.setTheme(options)
25
24
 
26
25
  this.init()
27
26
  }
@@ -36,6 +35,17 @@ export default class PieChart {
36
35
  this.bindPointMouseOver()
37
36
  }
38
37
 
38
+ setTheme(opts) {
39
+ const options = Object.assign({}, this.options, opts)
40
+ const theme = options.theme || THEME_DEFAULT
41
+ const style = CHART_STYLE[theme]
42
+ this.theme = theme
43
+ this.bg = options.bg || style.bg
44
+ this.glowAlpha = options.glowAlpha || style.glowAlpha
45
+ this.styles = options.styles || style.variants
46
+ this.setBg()
47
+ }
48
+
39
49
  get x() {
40
50
  return this.width / 2
41
51
  }
@@ -99,7 +109,7 @@ export default class PieChart {
99
109
  distance += ratio
100
110
  })
101
111
 
102
- this.fillCircle(ctx, x, y, centerCircleRadius, '#fff')
112
+ this.fillCircle(ctx, x, y, centerCircleRadius, this.bg)
103
113
  }
104
114
 
105
115
  handleDprChange() {
@@ -177,11 +187,11 @@ export default class PieChart {
177
187
 
178
188
  const options = {
179
189
  style: this.styles[index],
180
- alpha: .3
190
+ alpha: this.glowAlpha
181
191
  }
182
192
  const radiusDelta = (radius - centerCircleRadius) * .3
183
193
  this.fillArc(ctx, x, y, radius + radiusDelta, startAngle, endAngle, options)
184
- this.fillCircle(this.firstLayer.ctx, x, y, centerCircleRadius, '#fff')
194
+ this.fillCircle(this.firstLayer.ctx, x, y, centerCircleRadius, this.bg)
185
195
  }
186
196
 
187
197
  clearSliceGlow() {
@@ -304,6 +304,8 @@ export default class SearchDropdown {
304
304
  this.addEvent(this.menuContent, 'click', event => {
305
305
  const item = this.findClickedItem(event.target)
306
306
  if (item) {
307
+ event.preventDefault()
308
+ event.stopPropagation()
307
309
  this.setItem(item)
308
310
  }
309
311
  })
@@ -333,9 +335,10 @@ export default class SearchDropdown {
333
335
  if (! this.isMenuVisible) {
334
336
  return
335
337
  }
336
- const isBackdrop = (event.target !== this.dom) &&
337
- (! this.dom.contains(event.target)) &&
338
- (! this.menu.contains(event.target))
338
+ const { target } = event
339
+ const isBackdrop = (target !== this.dom) &&
340
+ (! this.dom.contains(target)) &&
341
+ (! this.menu.contains(target))
339
342
 
340
343
  if (isBackdrop) {
341
344
  this.hideMenu()
@@ -386,8 +389,10 @@ export default class SearchDropdown {
386
389
  }
387
390
 
388
391
  destroy() {
389
- this.menu.remove()
390
- this.menu = null
392
+ if (this.menu) {
393
+ this.menu.remove()
394
+ this.menu = null
395
+ }
391
396
  this.input = null
392
397
  this.menuContent = null
393
398
  this.loader = null
@@ -67,12 +67,10 @@ export default class Tooltip {
67
67
  this.addEvent(dom, 'mouseover', () => {
68
68
 
69
69
  const msg = this.dom.dataset.msg || ''
70
- const style = this.dom.dataset.style || 'default'
71
70
 
72
71
  if (msg.length === 0) {
73
72
  return
74
73
  }
75
-
76
74
  this.setTooltipMsg()
77
75
 
78
76
  tooltip.style.opacity = 0
@@ -84,9 +82,7 @@ export default class Tooltip {
84
82
  place: this.getPlace(),
85
83
  offset: this.getOffset()
86
84
  })
87
-
88
- tooltip.className = (style === 'default') ? 'tooltip' : `tooltip tooltip-popover ${place}`
89
-
85
+ tooltip.className = `tooltip ${place}`
90
86
  tooltip.style.left = toPixel(pos.left)
91
87
  tooltip.style.top = toPixel(pos.top)
92
88
  tooltip.style.opacity = 1
@@ -4,6 +4,48 @@ export const DEFAULT_TIMEZONE = 'Asia/Taipei'
4
4
 
5
5
  export const DEFAULT_LOCALE = locale
6
6
 
7
+ export const THEME_DEFAULT = 'default'
8
+
9
+ export const THEME_DARK = 'dark'
10
+
11
+ export const THEMES = [
12
+ { text: 'Default', value: THEME_DEFAULT },
13
+ { text: 'Dark', value: THEME_DARK }
14
+ ]
15
+
16
+ export const CHART_STYLE = {
17
+ [THEME_DEFAULT]: {
18
+ bg: '#fff',
19
+ txt: '#3c4257',
20
+ line: 'rgba(224, 224, 224, .5)',
21
+ glowAlpha: .2,
22
+ variants: [
23
+ '#5469d4',
24
+ '#7c54d4',
25
+ '#a254d4',
26
+ '#c040a2',
27
+ '#ff5604',
28
+ '#0be4e3',
29
+ '#00d924'
30
+ ]
31
+ },
32
+ [THEME_DARK]: {
33
+ bg: '#070B1F',
34
+ txt: '#fff',
35
+ line: 'rgba(255, 255, 255, .3)',
36
+ glowAlpha: .3,
37
+ variants: [
38
+ '#769aff',
39
+ '#9e72ff',
40
+ '#c66cff',
41
+ '#ff5ed9',
42
+ '#ff5604',
43
+ '#0be4e3',
44
+ '#00d924'
45
+ ]
46
+ }
47
+ }
48
+
7
49
  export const DEFAULT_CHART_STYLES = [
8
50
  '#5469d4',
9
51
  '#7c54d4',
@@ -213,12 +213,15 @@ export default function chartCommon(target) {
213
213
  this.dom.appendChild(box)
214
214
  }
215
215
 
216
+ setBg() {
217
+ this.dom.style.backgroundColor = this.bg
218
+ }
219
+
216
220
  drawLabels(labels, styles = DEFAULT_CHART_STYLES) {
217
221
  if (labels.length <= 0) {
218
222
  return
219
223
  }
220
224
  const { labelBox, handleLabelMouseOver, handleLabelMouseLeave } = this
221
- this.dom.style.backgroundColor = this.bg
222
225
 
223
226
  this.offLabels.forEach(off => off())
224
227
  labelBox.innerHTML = ''
data/src/js/index.js CHANGED
@@ -1,4 +1,3 @@
1
- import './../sass/_beyond.scss'
2
1
  import 'core-js/stable'
3
2
  import 'regenerator-runtime/runtime'
4
3
  import './polyfills/classList'
@@ -0,0 +1,170 @@
1
+ html {
2
+ height: 100%;
3
+ }
4
+ body {
5
+ color: $txt;
6
+ box-sizing: border-box;
7
+ font-family: 'Noto Sans CJK TC', 'PingFang TC', 'Microsoft JhengHei',
8
+ 'Helvetica Neue', Helvetica, Verdana, 'Open Sans', sans-serif;
9
+ font-size: 16px;
10
+
11
+ .content {
12
+ flex: 1;
13
+ }
14
+ &.with-footer {
15
+ min-height: 100%;
16
+ display: flex;
17
+ flex-direction: column;
18
+ }
19
+ }
20
+ *,
21
+ *:before,
22
+ *:after {
23
+ box-sizing: inherit;
24
+ }
25
+
26
+ :focus {
27
+ outline: 1px solid $bg-outline;
28
+ outline-offset: 2px;
29
+ }
30
+
31
+ // for ie11
32
+ body:focus {
33
+ outline: 0;
34
+ }
35
+
36
+ h1, h2, h3, h4, h5, h6 {
37
+ margin-top: 0;
38
+ margin-bottom: 8px;
39
+ }
40
+
41
+ ul {
42
+ list-style-type: none;
43
+ padding: 0;
44
+ margin: 0;
45
+ }
46
+
47
+ p {
48
+ line-height: 2.1em;
49
+ margin-top: 0;
50
+ margin-bottom: 1rem;
51
+ }
52
+ small {
53
+ font-size: 70%;
54
+ }
55
+ blockquote {
56
+ margin: 0 0 1rem;
57
+ }
58
+
59
+ th, td {
60
+ padding: 7px;
61
+ }
62
+
63
+ a {
64
+ cursor: pointer;
65
+ color: $txt-anchor;
66
+ text-decoration: none;
67
+ &:hover {
68
+ color: $txt-anchor-ex;
69
+ }
70
+ }
71
+
72
+ // active style
73
+ $color-active: #5469d4;
74
+
75
+ .select,
76
+ .select.select-outline,
77
+ .select.select-outline-strong,
78
+ .btn.btn-dropdown,
79
+ .search-input,
80
+ .input {
81
+ &.active {
82
+ color: $color-active;
83
+ box-shadow: 0 1px 1px 0 rgba(54, 59, 255, .6),
84
+ rgba(14, 48, 173, .3) 0 0 0 1px,
85
+ rgba(14, 26, 62, .12) 0 2px 5px 0;
86
+ }
87
+ }
88
+ .search-input.active .input,
89
+ .search-input.active .icon-search:before {
90
+ color: $color-active;
91
+ }
92
+
93
+ .input,
94
+ .select,
95
+ .select.select-outline,
96
+ .select.select-outline-strong {
97
+ &:focus.active {
98
+ color: $color-active;
99
+ box-shadow: 0 1px 1px 0 rgba(54, 59, 255, .6),
100
+ rgba(14, 48, 173, .3) 0 0 0 1px,
101
+ rgba(14, 26, 62, .12) 0 2px 5px 0,
102
+ 0 0 0 4px rgba(58, 151, 212, .28);
103
+ }
104
+ }
105
+ .search-input.active.outline {
106
+ color: $color-active;
107
+ box-shadow: 0 1px 1px 0 rgba(54, 59, 255, .6),
108
+ rgba(14, 48, 173, .3) 0 0 0 1px,
109
+ rgba(14, 26, 62, .12) 0 2px 5px 0,
110
+ 0 0 0 4px rgba(58, 151, 212, .28);
111
+ }
112
+
113
+ .scrollable {
114
+ overflow-y: scroll;
115
+ -webkit-overflow-scrolling: touch;
116
+ }
117
+
118
+ .align-left {
119
+ text-align: left !important;
120
+ }
121
+ .align-right {
122
+ text-align: right !important;
123
+ }
124
+ .align-center {
125
+ text-align: center !important;
126
+ }
127
+
128
+ .float-left {
129
+ float: left !important;
130
+ }
131
+ .float-right {
132
+ float: right !important;
133
+ }
134
+ .float-none {
135
+ float: none !important;
136
+ }
137
+
138
+ .sr-only {
139
+ position: absolute;
140
+ width: 1px;
141
+ height: 1px;
142
+ padding: 0;
143
+ overflow: hidden;
144
+ clip: rect(0, 0, 0, 0);
145
+ white-space: nowrap;
146
+ clip-path: inset(50%);
147
+ border: 0;
148
+ }
149
+
150
+ .full-width {
151
+ width: 100% !important;
152
+ }
153
+
154
+ hr {
155
+ margin-top: 20px;
156
+ margin-bottom: 20px;
157
+ border-top: 1px solid $hr-border;
158
+ border-left: 0;
159
+ border-right: 0;
160
+ border-bottom: 0;
161
+ }
162
+
163
+ input[type=file], /* FF, IE7+, chrome (except button) */
164
+ input[type=file]::-webkit-file-upload-button { /* chromes and blink button */
165
+ cursor: pointer;
166
+ }
167
+
168
+ .nowrap {
169
+ white-space: nowrap !important;
170
+ }
@@ -0,0 +1,3 @@
1
+ @import './abstracts/_variables';
2
+ @import './themes/_dark';
3
+ @import './_main';
@@ -1,56 +1,2 @@
1
1
  @import './abstracts/_variables';
2
- @import './abstracts/_placeholders';
3
- @import './abstracts/_mixins';
4
- @import './vendor/_normalize';
5
- @import './vendor/_turbolink';
6
- @import './base/_background';
7
- @import './base/_typography';
8
- @import './_animations';
9
2
  @import './_main';
10
- @import './layout/_border-util';
11
- @import './layout/_col';
12
- @import './layout/_container';
13
- @import './layout/_offset-util';
14
- @import './layout/_sizing-util';
15
- @import './layout/_spacing-util';
16
- @import './layout/_visibility-util';
17
- @import './layout/_flex-util';
18
- @import './components/_alert';
19
- @import './components/_autocomplete';
20
- @import './components/_avatar';
21
- @import './components/_badge';
22
- @import './components/_breadcrumb';
23
- @import './components/_btn';
24
- @import './components/_btn-group';
25
- @import './components/_card';
26
- @import './components/_checkbox';
27
- @import './components/_date-input';
28
- @import './components/_date-menu';
29
- @import './components/_month-menu';
30
- @import './components/_date-time-ranger';
31
- @import './components/_datepicker';
32
- @import './components/_dropdown';
33
- @import './components/_form';
34
- @import './components/_icon';
35
- @import './components/_input';
36
- @import './components/_list';
37
- @import './components/_modal';
38
- @import './components/_nav';
39
- @import './components/_navbar';
40
- @import './components/_pagination';
41
- @import './components/_radio';
42
- @import './components/_search-dropdown';
43
- @import './components/_select';
44
- @import './components/_sidebar';
45
- @import './components/_spinner';
46
- @import './components/_tabbox';
47
- @import './components/_table';
48
- @import './components/_tag';
49
- @import './components/_tag-input';
50
- @import './components/_time-input';
51
- @import './components/_time-menu';
52
- @import './components/_toast';
53
- @import './components/_tooltip';
54
- @import './components/_switch';
55
- @import './components/_mega-menu';
56
- @import './components/_chart';