Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[#616] splitter 이벤트, slot, props 추가 #621

Merged
merged 9 commits into from
Sep 17, 2020
Merged

Conversation

baejihoon
Copy link
Collaborator

No description provided.

@baejihoon baejihoon linked an issue Sep 11, 2020 that may be closed by this pull request
src/components/splitter/splitter.vue Outdated Show resolved Hide resolved
src/components/splitter/splitter.vue Outdated Show resolved Hide resolved
src/components/splitter/splitter.vue Outdated Show resolved Hide resolved
##########
 - width, height 등 el 관련 변수 computed 화
 - 잘못된 width 변수 바인딩 수정
 - emit 파라미터 1개로 변경
src/components/splitter/splitter.vue Outdated Show resolved Hide resolved
src/components/splitter/splitter.vue Outdated Show resolved Hide resolved
@baejihoon
Copy link
Collaborator Author

sibling element의 width나 height를 max-width나 min-width 로 제한하면 width나 height의 css 값이 실제 크기와 다른 값이 설정되며, emit으로 전달한 데이터도 실제 element의 크기와 다른 값이 전달됩니다.
처음에는 이 문제를 splitter를 사용하는 designer.vue 에서 해결하려 하였으나, 컴포넌트 단에서 처리 하는게 맞는 듯 하여 수정하게 되었습니다.

이를 해결하기 위해 세가지 방법을 생각해 보았는데,

  1. resizeForNeighbor가 호출 되기 전에 sibling element 에 적용 되어 있는 css (min-w, min-h, max-w, max-w)를 찾아서 올바른 min max 를 가지고 changeValue 를 바인딩해 resizeForNeighbor 를 호출한다
  2. cssText 를 변경한 이후 getBoundingClientRect() 의 값으로 실제 변화된 값을 이벤트 데이터로 전달한다.
  3. ev-splitter 의 prop로 min, max 값을 받아서 sibling element 의 크기를 제한한다.

1번의 방법이 cssText 에 입력되는 값도 정확한 값이 입력되지만, element 에 실제로 적용되는 css 항목을 찾기위해 window.getComputedStyle(element) 라는 함수를 사용하여야 하며, min-width 에 바인딩 되는 값이 %, px, em 등 다양한 종류의 값이 들어갈 수 있어 이를 처리하기 어렵습니다.
2번의 방법은 실제로 cssText 에 입력되는 값이 실제 element의 크기와 차이가 발생하지만, 간단히 해결이되고 (cssText를 다시 바인딩하여 차이를 제거 할 수 있음)
3번의 방법은 min, max를 지정 할 수는 있지만 sibling element 에 css (min-w, max-w 등) 을 지정할 경우 여전히 해결이 되지 않을듯 합니다.

2번의 방법으로 수정하여 push 해두었습니다.

##########
 - 잘못 이해한 computed 원복
 - css 로 제한된 min, max 문제 수정
##########
 - props 로 leftBound, rightBound 를 받아 min, max 문제 처리 하도록 변경
@baejihoon
Copy link
Collaborator Author

위의 min, max 문제는 3번의 방식으로 수정되었습니다

##########
 - 피드백 사항 수정 ( destructuring )
##########
 - 중복 되는 부분 함수화
##########
 - 함수 간소화
src/components/splitter/splitter.vue Outdated Show resolved Hide resolved
src/components/splitter/splitter.vue Outdated Show resolved Hide resolved
src/components/splitter/splitter.vue Outdated Show resolved Hide resolved
@darkstyles darkstyles merged commit 8f1a722 into 2.0 Sep 17, 2020
@darkstyles darkstyles deleted the 616_splitter_event branch September 17, 2020 01:51
@baejihoon
Copy link
Collaborator Author

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[2.0] splitter - 이벤트, props, slot 추가
2 participants