6ee529de72f209ad797382438bae4b4fdf6194b8423a86f15ee237565888952f6536fcc5bc0a1c7dffd7ec985fbb516c7f805f2934a4bb59482f0c91900c4a 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <template>
  2. <div class="splitpanes__pane" @click="onPaneClick($event, _uid)" :style="style">
  3. <slot/>
  4. </div>
  5. </template>
  6. <script>
  7. export default {
  8. name: 'pane',
  9. inject: ['requestUpdate', 'onPaneAdd', 'onPaneRemove', 'onPaneClick'],
  10. props: {
  11. size: { type: [Number, String], default: null },
  12. minSize: { type: [Number, String], default: 0 },
  13. maxSize: { type: [Number, String], default: 100 }
  14. },
  15. data: () => ({
  16. style: {}
  17. }),
  18. mounted () {
  19. this.onPaneAdd(this)
  20. },
  21. beforeDestroy () {
  22. this.onPaneRemove(this)
  23. },
  24. methods: {
  25. // Called from the splitpanes component.
  26. update (style) {
  27. this.style = style
  28. }
  29. },
  30. computed: {
  31. sizeNumber () {
  32. return (this.size || this.size === 0) ? parseFloat(this.size) : null
  33. },
  34. minSizeNumber () {
  35. return parseFloat(this.minSize)
  36. },
  37. maxSizeNumber () {
  38. return parseFloat(this.maxSize)
  39. }
  40. },
  41. watch: {
  42. sizeNumber (size) {
  43. this.requestUpdate({ target: this, size })
  44. },
  45. minSizeNumber (min) {
  46. this.requestUpdate({ target: this, min })
  47. },
  48. maxSizeNumber (max) {
  49. this.requestUpdate({ target: this, max })
  50. }
  51. }
  52. }
  53. </script>