๋ ์ง ์ ํ์ ์ํ ์ ์ฉ ๊ตฌ์ฑ ์์๋ฅผ ์ถ๊ฐํฉ๋๋ค. ng ์๋ฃ์ ๋ ์ง ์ ํ๊ธฐ ๊ตฌ์ฑ์์์ ์ ์ฌ: https://material.angular.io/components/datepicker/overview
๊ตฌ์ฑ ์์๋ ๋ค์ ์์ฑ์ ์ง์ํด์ผ ํฉ๋๋ค.
์ฐ์ ๊ธฐ๋ณธ ๋ฒ์ ์ ์ ๊ณตํ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํฉ๋๋ค. ๋ฒํผ์ด ์๋ ์ ๋ ฅ ํ๋ ์์ ๋ ์ง ์ ํ๊ธฐ ์ค๋ฒ๋ ์ด๋ฅผ ์ด๋ ค๋ฉด(์ฒจ๋ถ๋ ์คํฌ๋ฆฐ์ท ์ฐธ์กฐ)
์ฌ๋ฃ ๋ ์ง ์ ํ๊ธฐ์ ์คํฌ๋ฆฐ์ท:
@gselltho ์ด ๊ธฐ๋ฅ ์์ฒญ์ ์ด์ด์ฃผ์
์ ๋๋จํ ๊ฐ์ฌํฉ๋๋ค!
์ด ์ฃผ์ ์ ๋ํด @dynatrace-oss/ux-core ํ๊ณผ ๊ธด๋ฐํ ํ๋ ฅ์ด ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์๋ง๋ ๊ทธ๋ค์ ์ด๋ฏธ ์ด ์ฃผ์ ์ ๋ํ ๋ช ๊ฐ์ง ๋ชจํ์ ๋ง๋ค์๊ฑฐ๋ ์ฐ๋ฆฌ์๊ฒ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
์ด๋ฏธ ์ผ๋ถ ๋ชจํ์ด๋ ๋์์ธ์ด ์๋ ๊ฒฝ์ฐ ์ด ๋ฌธ์ ๋ ํ์ํ ๋ชจ๋ ์ ๋ณด์ API ์ ์์ ์์งํ๋ ์ข์ ์ถ๋ฐ์ ์ด ๋ ๊ฒ์ ๋๋ค.
์ด๋ค ๋ชฉ์ ์ ๋ ์ง ์ ํ ๋๊ตฌ๊ฐ ํ์ํ์ง ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง Arkadiusz Lipiarz๋ ํ์ฌ ์ค๋ซ๋์ ๊ทธ์ ํ๊ณผ ํจ๊ป ๊ธ๋ก๋ฒ ์๊ฐ ํ๋ ์ ์ ํ ๋๊ตฌ๋ก ์ฌ์ฉํ ๋ ์ง ์ ํ ๋๊ตฌ์ ๋ํด ์์
ํ๊ณ ์์ต๋๋ค.
๋ฐ๋ชจ ํ๊ฒฝ์์ ์ด๋ฏธ ๊ตฌํ๋์ด ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ์๋ ๊ทธ์ ์ด์ผ๊ธฐํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
์ฐ๋ฆฌ๋ ๊ณผ๊ฑฐ์ ํ ๋ก ์ ํ๊ณ @ursula-wieshofer๊ฐ ์ ํ์ ๋ํด ์ฝ๊ฐ์ ํ๊ฐ๋ฅผ ํ์ผ๋ฉฐ ์ด ํ๋ ๋๋ ๋ ๊ฐ์ ๋ ์ง ์ ํ๊ธฐ๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ ์ด๊ฒ์ด ์ฐ์ ์์ ๋ชฉ๋ก์์ ๋์ง ์๋ค๋ ๊ฒ์ ์๋ฏธํ์ต๋๋ค.
@gselltho ๋๋ ์ด๊ฒ์ ๋ ๋
ผ์ํ๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ถ๊ฐํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
@angular/components์์ ๋ง์ ๊ฒ์ ๋ฐฐ์ฐ๊ณ ๋จ์ํ๋ ๋ฒ์ ์ ๋ง๋ค ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ ์์ธํ API ์ ์์ ์์ฑํ ์ ์์ต๋๊น?
์๋ ํ์ธ์!
๋ฐ๋ผ์ ์ฐ๋ฆฌ ํ์ด ๋ง๋ ๊ธฐ๋ฅ์ @gselltho์ ๋์ด๋ ์ฌ์ฉ ์ฌ๋ก ๋ฐ ํจ์ฌ ๋ ๋ง์ ๊ฒฝ์ฐ์ ์ ํฉํ ๊ฒ ๊ฐ์ต๋๋ค. ์ฌ์ดํธ ์๋จ ์ธ์๋ Dashboard ํ์์ ๋ก์ปฌ ๊ตฌ์ฑ ์์๋ก ์ฌ์ฉํฉ๋๋ค. Angular์ GWT๋ก ์ค๋นํ์ต๋๋ค. ๊ด์ฌ์ด ์์ผ์๋ฉด Slack์์ ์ ์๊ฒ ์ฐ๋ฝํ์ญ์์ค.
ํ์ง๋ง... Ryan๊ณผ ๊ทธ์ ํ์ ๋น์ ์ด ๊ณต์ ํ ๊ฒ๊ณผ ๋งค์ฐ ์ ์ฌํ ์๋ฃจ์ ์ ์ค๋นํ๊ณ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ํ์๋ฉ๋๋ค.
์ฝ๋ ์์ ์๋ @areknow ์ด๋ฉฐ ์์ธํ ๋ด์ฉ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
์๋ ์๋ค์, ๋๋ ๋ค์์ด ๋ฌด์์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค. Ryans ํ์ ๊ตฌ์ฑ ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ง ์ฌ๋ฃ์ด๋ฉฐ ๋ด๊ฐ ํ์ํ ์ ํํ ๊ฒ์ ๋๋ค. ํ์ง๋ง ์์ฃผ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์ฑ ์์์ด๊ธฐ ๋๋ฌธ์ ์ง์ ๋ฐ๋ฆฌ์คํ ๊ตฌ์ฑ ์์๊ฐ ์์ด์ผ ํ๊ณ ๋ ๋ง์ ํ์์ ์ฌ์ฉํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
@ffriedl89 : ๋ฌผ๋ก , ๋ ์์ธํ API ์ค๋ช ์ ๋ง๋ค ์ ์์ต๋๋ค. ์ ์ด๋ ์ฒซ ๋ฒ์งธ ๊ตฌํ์ ๋ํ ์ ํ๋ ๊ธฐ๋ฅ ์ธํธ์ ๋ํด์๋. ๋๋ ์์ผ๋ก ๋ฉฐ์น ์์ ์ฌ๊ธฐ์ ๊ฒ์ ํ ๊ฒ์ ๋๋ค
์๋ ํ์ธ์ @gselltho , ์ ๋ spine-x
Angular CDK์๋ ๋ ์ง ์ ํ๊ธฐ๊ฐ ํฌํจ๋์ด ์์ง ์์ผ๋ฏ๋ก ์ด ๊ตฌ์ฑ ์์๋ฅผ ์ฒ์๋ถํฐ ์์ฑํด์ผ ํฉ๋๋ค.
๋ชจ๋ ธ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ๋ ์ง ์ ํ๊ธฐ ๊ณต์ ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๊น?
๊ฑด๋ฐฐ
์๋ ํ์ธ์ @areknow , ๊ทํ์ ๊ตฌ์ฑ ์์๋ ํ๋ฅญํฉ๋๋ค! Angulars Reactive Form ๊ธฐ๋ฅ(ControlValueAccessor)์ด ๊ทธ๋ฆฌ์, Barista ๋ฐ Angular Reactive ์์ ๋ด์์ ์ํํ๊ฒ ์ฌ์ฉํ๋ ค๋ฉด DtFormFieldControl์ด์ด์ผ ํฉ๋๋ค.
@gselltho ๋ค์ ๋ฌธ์ํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. @areknow๊ฐ ์ค๋ช
ํ ๋๋ก์
๋๋ค. ๊ทธ์ ๊ตฌ์ฑ ์์๋ angular/components ์ ์ฅ์์ ์ฌ์ง ๋ฐ ๊ธฐํ ์ ํธ๋ฆฌํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ์ข
์์ฑ์ ๋์
ํ๋ ์คํ์ผ์ด ๋ณ๊ฒฝ๋ ์ฌ์ง ๊ตฌ์ฑ ์์์
๋๋ค. ๊ทธ๊ฒ์ ๋ํ ๊ฑฐ๋ํ๊ณ ๋๋ฌด๊ฐ ํ๋ค๋ฆด ์ ์๋ moment.js์ ๋ํ ๊ฐํ ์์กด์ฑ๊ณผ ํจ๊ป ์ ๊ณต๋ฉ๋๋ค.
๋ถํํ๋ CDK์๋ ์์ง ๋ ์ง ์ ํ ๋๊ตฌ๊ฐ ํฌํจ๋์ด ์์ง ์์ต๋๋ค.
์ง๊ธ๊น์ง datepicker๋ ์ ํ์ ๊ธ๋ก๋ฒ ํ์ํ๋ ์ ์ ํ๊ธฐ๋ฅผ ์ ์ธํ๊ณ ๋ datepicker๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ง์ ํ์ด ํ์๋ก ํ๋ ๊ตฌ์ฑ ์์๊ฐ ์๋์์ต๋๋ค.
๊ตฌ์ฑ ์์๊ฐ ํ์ํ ๊ฒฝ์ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ตฌ์ฑ ์์๋ฅผ ์ ๊ณตํ๋ ๋ฐ ํจ๊ป ํ๋ ฅํ ์ ์๋ค๋ฉด ์ ๋ง ์ข์ ๊ฒ์
๋๋ค. ์ด ํ๋ก์ธ์ค๋ ์ด๋ฒ ํธ์์ ์ด์ ๋ํ API ์ ์์ ์์ฑํ๋ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. :)
์ด ์์
์ด ์๋ฃ๋๋ฉด ์์ํ๋ ๋ฐ ๋์์ด ๋๋ฉฐ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ์๋ดํ ์ ์์ผ๋ฉฐ ๊ทธ ๊ณผ์ ์์ ๋์์ด ๋ ๊ฒ์
๋๋ค.
ํ์ฌ ๋ฐ๋ฆฌ์คํ ํ์ ์ด ๊ตฌ์ฑ ์์๋ฅผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ถ๊ฐํ๊ธฐ ์ํด ๊ธฐ์ฌ์์ ๋์์ด ํ์ํฉ๋๋ค.
์ฌ๊ธฐ์ ๋์์ ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
์ด๋ด, ์ค์ VCT๋ ์ด์ ๋ ์ง/์๊ฐ ์ ํ๊ธฐ๊ฐ ํ์ํ๋ฏ๋ก ์ฒ๋ฆฌํ๊ฒ ์ต๋๋ค. ๋ค์ ์๊ฒฌ์์๋ ๋ชจ๋ ์๊ตฌ ์ฌํญ์ ์์งํ ๋ค์ API๋ฅผ ์ ์ํ๋ ค๊ณ ํฉ๋๋ค.
๊ฑฐ๊ธฐ์ ์์ด์ผ ํ ๊ธฐ๋ฅ/์๊ตฌ ์ฌํญ์ด ์๊ณ ์์ง ๋์ด๋์ง ์์ ๊ฒฝ์ฐ ์๋ ค์ฃผ์ญ์์ค.
cc @areknow
Date
๊ฐ์ฒด/ํด๋์ค(์ ์ฒด ์๋น์ ๋๋ฉด API ํฌํจ)๋ก ํ์๋์ด์ผ ํฉ๋๋ค. ์ผ๋ถ ์ถ์ ์ฌ์ฉ์ ์ ์ ๊ตฌํ์ ์ํ ๊ฒ์ด ์๋๋๋ค. ์ถ๊ฐ ์ ํธ๋ฆฌํฐ ๊ธฐ๋ฅ/์๋น์ค( DateAdapter
)๊ฐ ํ์ํ ์ ์์ต๋๋ค._ WIP: ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์กฐ์ ๋ฉ๋๋ค.
Datepicker๋ ์ฌ๋ฌ ๊ตฌ์ฑ ์์๋ก ๊ตฌ์ฑ๋์ด์ผ ํฉ๋๋ค.
dt-datepicker
)๋ ์ง ์ ํ๊ธฐ ์์ฒด. ์ด ๊ตฌ์ฑ ์์๋ ๋ค๋ฅธ ๋ชจ๋ ๊ตฌ์ฑ ์์๋ฅผ ํ๋์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ ์ง ์ ํ๊ธฐ๋ก ๊ฒฐํฉํฉ๋๋ค(์๊ตฌ ์ฌํญ ์ฐธ์กฐ).
| ์ด๋ฆ | ์ ํ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช
|
| ---------- | ----------- | -------------- | ------------ |
| ๊ฐ์น | D \| null
| null
| ์ ํํ ๋ ์ง์
๋๋ค. |
| ์์์๊ฐ | D \| null
| null
| ๋ฌ๋ ฅ์ ์ฒ์ ์ฌ๋ ๋ ์ง์
๋๋ค. selected
๊ฐ ์ค์ ๋ ๊ฒฝ์ฐ ๋ฌด์๋ฉ๋๋ค. ํ์ ์ ์ฉ์ผ๋ก ๋ด๋ถ์ ์ผ๋ก ์ค๋ ๋ ์ง๊ฐ ๊ธฐ๋ณธ๊ฐ์
๋๋ค. |
| ๋ถ | D \| null
| null
| ์ต์ ์ ํจ ๋ ์ง์
๋๋ค. |
| ์ต๋ | D \| null
| null
| ์ต๋ ์ ํจ ๋ ์ง์
๋๋ค. |
| ์ฅ์ ์ธ | boolean
| false
| ๋ ์ง ์ ํ๊ธฐ๊ฐ ๋นํ์ฑํ๋์๋์ง ์ฌ๋ถ์
๋๋ค. |
| isTimeEnabled | boolean
| false
| ์๊ฐ ๋ชจ๋๊ฐ ํ์ฑํ๋์๋์ง ์ฌ๋ถ์
๋๋ค. |
| ๋ฒ์ ํ์ฑํ | boolean
| false
| ๋ฒ์ ๋ชจ๋๊ฐ ํ์ฑํ๋์๋์ง ์ฌ๋ถ์
๋๋ค. |
dt-calendar
)๋ฌ๋ ฅ ๋ณด๊ธฐ์์ ๋ ์ง๋ฅผ ์ ํํ๊ธฐ ์ํ ๊ตฌ์ฑ ์์( calendar-body
๊ตฌ์ฑ ์์). ๋ฌ๋ ฅ ๋ณด๊ธฐ(์) ๋ฐ ๋ค๋ฅธ ์๊ณผ ์ฐ๋ ์ฌ์ด๋ฅผ ํ์ํ๋ ๋ฐ ํ์ํ ์ปจํธ๋กค์ด ํฌํจ๋ฉ๋๋ค.
| ์ด๋ฆ | ์ ํ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช
|
| ---------- | ----------- | -------------- | ------------ |
| ์ ํ | D \| null
| null
| ํ์ฌ ์ ํํ ๋ ์ง์
๋๋ค. |
| ์์์ | D \| null
| null
| ๋ฌ๋ ฅ์ ์์ํ ๊ธฐ๊ฐ(์ ๋๋ ์ฐ๋)์ ๋ํ๋ด๋ ๋ ์ง์
๋๋ค. |
| ์์ ์ผ | D \| null
| null
| ์ ํ ๊ฐ๋ฅํ ์ต์ ๋ ์ง์
๋๋ค. |
| ์ต๋ ๋ ์ง | D \| null
| null
| ์ ํ ๊ฐ๋ฅํ ์ต๋ ๋ ์ง์
๋๋ค. |
| ์ด๋ฆ | ์ ํ | ์ค๋ช
|
| ---------------- | ----------- | ------------ |
| ์ ํ๋ณ๊ฒฝ | D
| ํ์ฌ ์ ํ๋ ๋ ์ง๊ฐ ๋ณ๊ฒฝ๋ ๋ ๋ฐ์ํฉ๋๋ค. |
dt-calendar-body
)ํ ๋ฌ ๋์ ๋ฌ๋ ฅ ๊ทธ๋ฆฌ๋๋ง ํธ์คํ ํฉ๋๋ค.
| ์ด๋ฆ | ์ ํ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช
|
| ------------ | ----------- | -------------- | ------------ |
| ํ์ฑ ๋ ์ง | D
| ์ค๋ | ์ด ์ ๋ณด๊ธฐ์ ํ์ํ ๋ ์ง์
๋๋ค(์ ๋ฐ ์ฐ๋ ์ด์ธ์ ๋ชจ๋ ํญ๋ชฉ์ ๋ฌด์๋จ). |
| ์ ํ | D \| null
| null
| ํ์ฌ ์ ํํ ๋ ์ง์
๋๋ค. |
| ์์ ์ผ | D \| null
| null
| ์ ํ ๊ฐ๋ฅํ ์ต์ ๋ ์ง์
๋๋ค. |
| ์ต๋ ๋ ์ง | D \| null
| null
| ์ ํ ๊ฐ๋ฅํ ์ต๋ ๋ ์ง์
๋๋ค. |
| ๋ ์ง ํํฐ | (date: D) => boolean
| - | ๋ ์ง ์ ํ ๊ฐ๋ฅ ์ฌ๋ถ๋ฅผ ํํฐ๋งํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ธฐ๋ฅ์
๋๋ค. |
| ์ด๋ฆ | ์ ํ | ์ค๋ช
|
| ------------------ | ----------- | ------------ |
| ์ ํ๋ณ๊ฒฝ | EventEmitter<D>
| ์ ๊ฐ์ด ์ ํ๋๋ฉด ๋ฐ์ํฉ๋๋ค. |
| ํ์ฑ ๋ ์ง ๋ณ๊ฒฝ | EventEmitter<D>
| ๋ ์ง๊ฐ ํ์ฑํ๋๋ฉด ๋ฐ์ํฉ๋๋ค. |
์๊ฐ ์ ๋ ฅ(์ ๋ฐ ๋ถ ์ ๋ ฅ ํฌํจ)์ ํฌํจํ๋ ์๊ฐ ์ ํ๊ธฐ๋ฅผ ํธ์คํ ํฉ๋๋ค.
| ์ด๋ฆ | ์ ํ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช
|
| ------------ | ----------- | -------------- | ------------ |
| ๊ฐ ๋ ์ด๋ธ | ๋ฌธ์์ด | '' | ๋ฒ์ ๋ชจ๋์์ ๋ ์ง๋ฅผ ํ์ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ ์ด๋ธ์
๋๋ค.
| ์๊ฐ | ๋ฒํธ \| ๋ | ๋ | ์๊ฐ ์ ํ๊ธฐ์ ํ์ํ ์๊ฐ์
๋๋ค.
| ๋ถ | ๋ฒํธ \| ๋ | ๋ | ์๊ฐ ์ ํ๊ธฐ์ ํ์ํ ๋ถ์
๋๋ค.
| ์ฅ์ ์ธ | ๋ถ์ธ | ๊ฑฐ์ง | timepicker ๋ฐ ํด๋น ์
๋ ฅ์ ๋นํ์ฑํ ์ํ์
๋๋ค.
| isTimeRangeํ์ฑํ | ๋ถ์ธ | ๊ฑฐ์ง | ์๊ฐ ๋ฒ์ ๋ชจ๋๊ฐ ํ์ฑํ๋์๋์ง ์ฌ๋ถ์
๋๋ค.
| ์ด๋ฆ | ์ ํ | ์ค๋ช
|
| ------------------ | ----------- | ------------ |
| ์๊ฐ๋ณ๊ฒฝ | ์ด๋ฒคํธ ์ด๋ฏธํฐ
์๊ฐ ๋ฐ ๋ถ ์ ๋ ฅ์ ํฌํจํ๋ timeinput์ ํธ์คํ ํฉ๋๋ค.
| ์ด๋ฆ | ์ ํ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช
|
| ------------ | ----------- | -------------- | ------------ |
| ์๊ฐ | ๋ฒํธ \| ๋ | ๋ | time์
๋ ฅ์ ํ์ํ ์๊ฐ์
๋๋ค.
| ๋ถ | ๋ฒํธ \| ๋ | ๋ | ์๊ฐ ์
๋ ฅ์ ํ์ํ ๋ถ์
๋๋ค.
| ์ฅ์ ์ธ | ๋ถ์ธ | ๊ฑฐ์ง | ์
๋ ฅ์ด ๋นํ์ฑํ๋ ์ํ์
๋๋ค.
| ์ด๋ฆ | ์ ํ | ์ค๋ช
|
| ------------------ | ----------- | ------------ |
| ์๊ฐ๋ณ๊ฒฝ | ์ด๋ฒคํธ ์ด๋ฏธํฐ
datepicker๊ฐ ์ ๊ณตํด์ผ ํ๋ ์๊ตฌ ์ฌํญ/๊ธฐ๋ฅ ์๋์ ๊ฒ์ํ์ญ์์ค. ์ด์ ๋๊ธ ๋ชฉ๋ก์ ์ถ๊ฐํ๊ฒ ์ต๋๋ค.
@thomaspink ์ ์ฑ๊ฒจ ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค๐
๊ทํ์ ์๊ตฌ ์ฌํญ ์ค๋ช
์๋ ๋ด๊ฐ ํ์ํ ๋ชจ๋ ๊ฒ์ด ์ด๋ฏธ ์์ต๋๋ค. ๋ค์๊ณผ ๊ด๋ จํ์ฌ ์ง๋ฌธ์ด ์์ต๋๋ค.
Selecting a time: In addition to selecting a date the user must also be able to select an additional time.
์๊ฐ์ ์ ํ ์ฌํญ์
๋๋ค. ๋ ์ง๋ง, ์๊ฐ๋ง ๋๋ ๋ ๋ค ์ ํ ๊ฐ๋ฅํ ํญ๋ชฉ์ ์ ํํ ์ ์์ต๋๊น?
@gselltho ํผ๋๋ฐฑ ๊ฐ์ฌํฉ๋๋ค ๐
์์ด๋์ด๋ ๋ ์ง์ ์๊ฐ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด์ง๋ง ์๊ฐ ๋ถ๋ถ์ ๋นํ์ฑํํ์ฌ ๋ ์ง๋ก๋ง ๋ง๋ค๊ฑฐ๋ ๊ทธ ๋ฐ๋์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ด ๋ฌด์์ธ์ง ํ์คํ์ง ์์ต๋๋ค(๋ ๋ง์ ์๋น์๊ฐ ๋ ์ง ์ ํ๊ธฐ ๋๋ ๋ ์ง/์๊ฐ ์ ํ๊ธฐ๋ง ํ์ํฉ๋๊น).
์๊ฐ๋๋ฅผ ์ ์ดํ ์ ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค. spine X์ ์ผ๋ถ ์ฌ์ฉ ์ฌ๋ก์๋ ํน์ ๋ ๊ฑฐ์ API์ ์ํธ ์์ฉํ๊ธฐ ์ํด UTC๊ฐ ํ์ํฉ๋๋ค.
๋ํ @gselltho๊ฐ ๋งํ๋ฏ์ด ๋ฐ์ดํธ๋ง ํ ์ ์๋ ์ต์ ์ด ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
์ด ํ๋ก์ ํธ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
์ฌ๊ธฐ์ ๋ฏธ๋ฆฌ ์ ์๋ ์๋ ๋ ์ง๊ฐ ํฌํจ๋ฉ๋๊น? "์ง๊ธ", "2์ฃผ ์ " ๋ฑ๊ณผ ๊ฐ์ด?
ํ ๊ฐ์ง ๋ ์๊ตฌ์ฌํญ(~ GTS):
๊ฐ์ ธ์ ์ข๋ค:
@toddbaert ์ ์ญ ์๊ฐ ํ๋ ์ ์ ํ๊ธฐ์ ๋ณ๋๋ก ์ด ์ผ๋ฐ ๋ ์ง ์ ํ๊ธฐ์ ์ฌ์ฉ
@pieniazek @areknow ๊ฐ ๋ชฉ๋ก์ ์ถ๊ฐ๋จ
@thomaspink ์ผ๊ด์ฑ์ ์ด์ ๋ก ์ฌ์ฉ์๊ฐ ๋ ์ง ์ ํ๊ธฐ๋ฅผ ๋ ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์๋๋ก ๋ฌ๋ ฅ๋ ํฌํจํ๋ ์ ์ญ ์๊ฐ ํ๋ ์ ์ ํ๊ธฐ ๋ถ๋ถ์ ๊ณ ์ํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ธฐ๋ณธ ๊ธฐ๋ฅ๊ณผ ํธ๋ค๋ง์ ์คํ์ผ๊ณผ ๋์ผํด์ผ ํฉ๋๋ค.
์ด๊ฒ์ ์ฌ์ฉ์๊ฐ ์ด๋ฏธ ๊ธฐ๋ฅ์ ์ต์ํด์ก๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์๊ฐ ์ด๋ฅผ ์ฒ๋ฆฌํ ๋ ์ง์ํฉ๋๋ค.
@thomaspink ์ฌ์ฉ์์๊ฒ๋ ๋ฌธ์ ๊ฐ ๋์ง ์๊ฒ ์ง๋ง ๋ฏธ๋ฆฌ ์ ์๋ ์๋์ ๋ ์ง๊ฐ ์ ์ฉํ ์ ์๋ ์ผ๋ถ UI๋ฅผ ๊ณง ๊ณต๊ฐํ ์์ ์ ๋๋ค.
@toddbaert ์ง์๋๋ ๊ฐ ๋ชฉ๋ก์ด ์์ต๋๊น? ๊ด์ฐฎ์ผ์๋ค๋ฉด ์ข์ ๋ชฉ๋ก์ ์ถ๊ฐํ๊ฒ ์ต๋๋ค.
datepicker์ ๊ฒฝ์ฐ ๋ ์ง์ ์ ํํ ์ด๋ฆ(์์ผ ์ด๋ฆ ํฌํจ)์ ํํธ์ผ๋ก ํ์ํ๊ณ ๊ณ์ฐํ ์ ์๋๋ก ๊ธฐ๋ฅ๊ณผ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ์ผ์ข ์ ์๋น์ค(๊ฐํ ์ฌ๋ฃ ๋ฐ์ดํฐ ์ด๋ํฐ์ ์ ์ฌ)๋ ํ์ํฉ๋๋ค. /๋ฐ๋ฉด์ ๊ธฐ๋ณธ ๋ ์ง๋ก ์์ ํฉ๋๋ค. ์ด "์๋น์ค"๋ ์๋น์๋ ์ฌ์ฉํ ์ ์์ด์ผ ๋์ผํ ๋ฐฉ์์ผ๋ก ๋ ์ง๋ฅผ ์ฒ๋ฆฌํ ์ ์๊ณ ์ฐ๋ฆฌ๋ ์ด ๊ธฐ๋ฅ์ ๊ณต์ ํ ์ ์์ต๋๋ค.
์ด๋ฅผ ์ํด ์ต์ํ 2๊ฐ์ง ์ต์ ์ด ์์ต๋๋ค(๋ ๋ง์ ์์ด๋์ด๊ฐ ์๋ ๊ฒฝ์ฐ ์๋์ ๊ฒ์ํด ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค).
Intl
, Date
)์ ์ ํธ๋ฆฌํฐ ํจ์(์: addCalendarDays
)๋ฅผ ๊ฒฐํฉํ๋ NativeDateAdapter๋ฅผ ๋ง๋ญ๋๋ค. ์ด ์ด๋ํฐ๋ Angular Materials NativeDateAdapter ์ ๋งค์ฐ ์ ์ฌํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ง์๋๋ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์ ์ด๋ฏธ Intl' built in. We would also not need the possibility to have DateAdapter for different libraries as we only work with the native
Date` API๊ฐ ์์ผ๋ฏ๋ก ์ฌ์ฉ ์ฌ๋ก์ ๊ฒฝ์ฐ Intl
๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ ํด๋ฐฑ์ด ํ์ํ์ง ์์ต๋๋ค.date-fns
์ ๊ฐ์ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์ด๋ฅผ ๊ณ ๊ฐ์๊ฒ ์ ๊ณตํ๋ ์๋น์ค(DateAdapter)๋ก ๋ํํฉ๋๋ค.์ง๊ธ์ ์ถ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ด ๊ธฐ๋ณธ API๋ฅผ ๋ง์ด ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ต์ 1์ ๋ ์ ํธํ์ง๋ง ์์ด๋์ด, ๊ฒฐ๊ณผ ๋ฐ ์๊ฒฌ๋ ๊ฒ์ํด ์ฃผ์ธ์. :)
@thomaspink ๊ทธ๋ฐ ์ด๋ํฐ ์๋น์ค๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ์ด์ ์ Intl
๋ฐ Date
๋ค์ดํฐ๋ธ๋ฅผ ์ฌ์ฉํ๊ณ ์ถ๋ค๊ณ ๋งํ์ง๋ง Intl.DateFormat
์ ๋ํ ์ง์ ์ ๋ค์ ํ์ธํ์ง๋ง ๊ทธ๋ ์ง ์์ต๋๋ค. ๊ทธ๊ฒ์ ๋ํด ๋งค์ฐ ํ๋ณตํฉ๋๋ค. ํนํ ๋ถ๋ถ์ ์ผ๋ก ๋๋ฝ๋ Range ํ์์ ์ฝ๊ฐ ์์ฝ์ต๋๋ค.
date-fns
์ด treeshakable ์ด๊ณ ์ผ๋ฐ์ ์ผ๋ก ํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ณด์ด์ง ์๋ ๊ฒ์ ๋ณด๋ฉด ์ด์ date-fns
๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ์ ํํฉ๋๋ค.
๋ํ ๋ ์ง ๋ฐ ์๊ฐ ์ํ์ ํด๋ผ์ด์ธํธ ์๊ฐ๋ ๋ฑ์ ์ฒ๋ฆฌํ ๋ ๋ง์ ๊ธฐ๋ณธ ์ง์์ด ์๋๋ผ๋ ์ ๋ง ์ด๋ ค์ธ ์ ์์ต๋๋ค.
๋ ์ง ์ ํ๊ธฐ์ ๋ํ PR ์ด์์ ์ด๋ฏธ ์์ฑํ๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ๊ตฌ์ฑ ์์์ ๊ด๋ จํ์ฌ ์ ์ํ ์ ์๋ API๊ฐ ์ด๋ฏธ ์์ต๋๊น?
Intl.DateFormat
: ๋ด๊ฐ ์ง๊ธ ์ฐ์ฐํ ๋ฐ๊ฒฌํ ์ฌ์ฉ ์ฌ๋ก์ ๊ฒฝ์ฐ ๋์ฒด๋ฅผ ์ฝ๊ฒ ๋ฌ์ฑํ ์ ์์ง๋ง ์ฌ์ฉ์ ์ง์ ๋ ์ง/์๊ฐ ๊ณ์ฐ์ด ์ด๋ ค์ธ ์ ์๋ค๋ ๋ฐ ๋์ํฉ๋๋ค.
์ด PR์ wip์ด๋ฉฐ ๋๋ ์์ง ๊ทธ๋ฌํ ์๋น์ค๊ฐ ํ์ํ ์์ ์ ๋ค๋ฃจ์ง ์์์ต๋๋ค. ์ด ์๋น์ค์ ์ด๋ค ๊ธฐ๋ฅ์ด ํ์ํ์ง ์์ง ํ์คํ์ง ์์ง๋ง ๊ธฐ๋ณธ ๊ธฐ๋ฅ๋ถํฐ ์์ํ์ฌ ๊ณ์ ํ์ฅํ๊ฒ ์ต๋๋ค.
์ต๊ทผ์ ์ด ์๊ตฌ ์ฌํญ์ ์ญ์ ํ์ต๋๋ค. UX ๊ด์ ์์ ์ฌ์ฉ์์๊ฒ ์ค๋ช ํ๊ธฐ ์ด๋ ค์ด ๋ง์ ์์ง๋ง ๋ณต์กํ ์ธ๋ถ ์ฌํญ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
date-fns๋ addMonth
, getDaysInMonth
, isToday
, startOfTheWeek
๋ฑ๊ณผ ๊ฐ์ ์๊ฐ ์ด๋ ์์
์ ์ํ ํ์์ ์ธ API์
๋๋ค. . ์๋ง๋ ์ด๋ํฐ ์ถ์ํ๋งํผ ๋ง์ ๋น์ฉ์ด ๋ค ๊ฒ์
๋๋ค.
๋ฐ๋ฉด์, ๋์๊ด ์๋น์๋ ์๊ฐ์ด๋ luxon์ด ์์ ๋ date-fns
๋ฅผ ํฌํจํด์ผ ํ๋ ๊ฒฝ์ฐ ์๊ฐ๋ฆฐ ๊ฐ์ ์ ๊ฐ์ง ๊ฒ์
๋๋ค. -> Here ์ด๋ํฐ๊ฐ ์ ์ฉํ ๊ฒ์
๋๋ค. ํ์ง๋ง ์ด์ด ์ข๊ฒ๋ date-fns
๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค.
์๊ฐ ์์ญ์ ๋ํ ์ฐธ๊ณ : date-fns
๋น์ ์ด (์ฌ์ง์ด ์ ์ฒด ์๊ฐ๋ ์ง์์ ๊ตฌํํ๊ธฐ ์ํด ์ข์ํ๋ ๊ฒ์ด๋ค ๊ฒฝ์ฐ์ ์ ํฉํ์ง ์์ ๊ฒ์
๋๋ค date-fns-tz
์๋ ํด๊ฒฐํ ์์๋ ๋ฌธ์ ๋ ๋ฌธ์ ๋ฅผ ๋ถ์ / ํฌ๋งท์,ํ์ง๋ง ๋ ์ง ์กฐ์ ์๋๋ฆฌ์ค ). ์ต๊ทผ์ ์ฐ๋ฆฌ๋ ์ด๋ฌํ ๋ชฉ์ ์ ์ํด luxon
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํ์ต๋๋ค. ์ต์ํ ์์ ์ฌ์ ์ด ์๋ฃ๋์ง ์๊ณ ๋ธ๋ผ์ฐ์ ์์ ์ฑํ๋ ๋๊น์ง์
๋๋ค.
Intl.DateFormat
์์ ๋๋ฝ๋ ๋ฒ์ ํ์ : ์๋ง๋ ์ฐ๋ฆฌ ์์ ์ ํด๋ฐฑ์ ๊ตฌํํ๊ฑฐ๋ ํด๋ฆฌํ์ ์ฌ์ฉํ ์ ์์๊น์? ์ ํ์์ ์ฐ๋ฆฌ๋ ์ด๋ฏธ ๋ฌด์ธ๊ฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.@piotrl ๊ฐ์ฌ
๋ด๊ฐ ์ดํดํ๋ ํ DatePipe๋ ์ต์ข ์ ์ผ๋ก ์ ํํ ๋ ์ง๋ฅผ ํ์ํ๋ ๋ฐ๋ง ์ ์ฉํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ ๊ณ์ฐ/ํ์ํ ๋๋ ์ ์ฉํ์ง ์์ต๋๋ค. ํน์ ์์ ๋ชจ๋ ๋ .
๋ด๊ฐ ๋ชจ๋ ์๊ฒฌ์ ์ฝ์ ๋, ๋๋ ์ฐ๋ฆฌ๊ฐ ์ด๋ํฐ ๊ฐ๋
์ด ๊ฐ์ผ ํ ๊ธธ์ด๋ผ๋ ๋ฐ ๋์ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ํฉ์ํ ์๋ฃจ์
์ ๋ฐ๋ผ ๊ธฐ๋ณธ, date-fns
๋๋ luxon
์ฉ ์ด๋ํฐ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. @piotrl์ด ์ธ๊ธํ๋ฏ์ด ์ด๊ฒ์ ์๋น์๊ฐ ์์ฒด ๋ ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฒฝ์ฐ ์ ์ด๋ํฐ๋ฅผ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋ค๋ ๋ฌธ์ ๋ ํด๊ฒฐํฉ๋๋ค.
@ffriedl89 @tomheller ๋น์ ์ ์๊ฐ์?
@piotrl : ์ฐ๋ฆฌ๊ฐ ๋ ์ง ์ด๋ํฐ๋ฅผ ๊ตฌํํ๋ค๋ฉด ํด๋ฌ์คํฐ๋ ๊ทธ๊ฒ์ ์ค์ ๋ ์ง ์ง์
์ ์ผ๋ก ์ฌ์ฉํ ๊น์? ๋ํ ์ด ์ฃผ์ ์ ๋ํด ๋ง์ ์ ๋ฌธ ์ง์์ ๊ฐ๊ณ ๊ณ์๊ธฐ ๋๋ฌธ์ ์ ๋ฅผ ์ง์ํด ์ฃผ์ ๋ค๋ฉด ์ผ๋ง๋ ์ข์๊น์?
๋ ๋ค๋ฅธ ๊ธ์ ์ ์ธ ๋ถ์์ฉ์ ์ฐ๋ฆฌ๊ฐ ์ฌ๋ฃ ๋ ์ง ์ด๋ํฐ์ API์ ๋ฐ์ ํ๊ฒ ๋ถ์ด ์๊ณ ๊ทธ๋ค์ด ๊ทธ๊ฒ์ cdk๋ก ์ฎ๊ธฐ๋ฉด ์ฝ๊ฒ ์ ์ํ๊ณ ๋ณ๊ฒฝํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
@areknow
์๊ฐ๋๋ฅผ ์ ์ดํ ์ ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค. spine X์ ์ผ๋ถ ์ฌ์ฉ ์ฌ๋ก์๋ ํน์ ๋ ๊ฑฐ์ API์ ์ํธ ์์ฉํ๊ธฐ ์ํด UTC๊ฐ ํ์ํฉ๋๋ค.
datepicker๊ฐ ๋ ์ง๋ฅผ ์ด๋ํฐ๊ฐ ์ ๊ณตํ๋ ์ผ๋ฐ ๊ฐ์ฒด๋ก ์ทจ๊ธํ๊ธฐ ๋๋ฌธ์ ๋ ์ง ์ด๋ํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์ด ์๊ตฌ ์ฌํญ๋ ํด๊ฒฐ๋ฉ๋๋ค. ์ด๊ฒ์ ๊ธฐ๋ณธ ๋ ์ง, ์๊ฐ ๋ํผ ๋๋ ํญ์ ํน์ ์๊ฐ๋๊ฐ ์๋ ๋ ์ง์ผ ์ ์์ต๋๋ค.
๋ ์ง ์ด๋ํฐ๋ฅผ ๊ตฌํํ๋ฉด ํด๋ฌ์คํฐ๋ ์ด๋ฅผ ์ค์ ๋ ์ง ์ง์ ์ ์ผ๋ก ์ฌ์ฉํฉ๋๊น?
๋๋ ๊ทธ๊ฒ์ ๊ณ ๋ คํ๊ธฐ ์ํด ์ด๋ ค ์์ต๋๋ค. ๋ด ์ด๊ธฐ ์๊ฐ: Raw Date ๊ฐ์ฒด๋ ์ด๋ฏธ 600๊ฐ ์ด์์ ์ฅ์์์ ์ฌ์ฉ๋ฉ๋๋ค(๋ช ์์ ์ผ๋ก, ์์์ ์ฌ์ฉ์ ๊ณ์ฐํ ์ ์์).
๋๋ถ๋ถ์ ์ฌ์ฉ์ ์ด์จ๋ ์บ๋ฆฐ๋์ ์ฐ๊ฒฐ๋๊ฑฐ๋ ์บ๋ฆฐ๋์ ๊ฐ๊น์ง ์์ต๋๋ค. ์ฌ์ฉ๋ฒ์ ์ฐพ์ ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ ์ง๋ ๋ฐฑ์๋์์ ๊ฐ์ ธ์ค๊ณ ํ์ ์ง์ ์ ์ํด ์ฝ๊ฐ ์ฒ๋ฆฌ๋ฉ๋๋ค. ์บ๋ฆฐ๋์์ ์ผ๊ด์ฑ์ ์ํด์๋ง ์ด๋ฌํ ์ฌ์ฉ ์ฌ๋ก์ ์ด๋ํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์๋์ ์ผ ์ ์์ต๋๋ค. ๊ทธ๋์ ๋๋ ๋ฌ๋ ฅ์ ์ฌ์ฉํ ๋๋ง๋ค ๊ธฐ๋ณธ ๋ ์ง์์ ์ด๋ํฐ๋ก์ ์์ ๋ณํ์ ๊ณ ๋ คํ ๊ฒ์
๋๋ค(์ด๋ํฐ๊ฐ @Input
๋ก ํ์ํ ๊ฒฝ์ฐ).
๋ฐ๋ผ์ ์ด๋ํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ ๊ฒฝ์ฐ ์ฌ์ ํ 2๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
๋ ๋ฒ์งธ ์ต์
์ ์๊ฐํด์ผ ํ ์ฌ์ฉ ์ฌ๋ก ์ธก๋ฉด์์ ๋ ์นจ์ต์ ์ด๋ฉฐ ์ด๋ํฐ์ ์ ์๊ฐํ API๊ฐ ํ์ํฉ๋๋ค.
์ฒซ ๋ฒ์งธ ์ต์
์ ์์ํ๊ธฐ ๋ ์ฌ์ธ ์ ์์ผ๋ฉฐ ํ์ํ ๊ฒฝ์ฐ ๋ ๋ฒ์งธ ์ต์
์ผ๋ก ๋ฐ์ ํ ์ ์์ต๋๋ค.
APM-266081๋ก ์ด๋
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
Intl.DateFormat
: ๋ด๊ฐ ์ง๊ธ ์ฐ์ฐํ ๋ฐ๊ฒฌํ ์ฌ์ฉ ์ฌ๋ก์ ๊ฒฝ์ฐ ๋์ฒด๋ฅผ ์ฝ๊ฒ ๋ฌ์ฑํ ์ ์์ง๋ง ์ฌ์ฉ์ ์ง์ ๋ ์ง/์๊ฐ ๊ณ์ฐ์ด ์ด๋ ค์ธ ์ ์๋ค๋ ๋ฐ ๋์ํฉ๋๋ค.์ด PR์ wip์ด๋ฉฐ ๋๋ ์์ง ๊ทธ๋ฌํ ์๋น์ค๊ฐ ํ์ํ ์์ ์ ๋ค๋ฃจ์ง ์์์ต๋๋ค. ์ด ์๋น์ค์ ์ด๋ค ๊ธฐ๋ฅ์ด ํ์ํ์ง ์์ง ํ์คํ์ง ์์ง๋ง ๊ธฐ๋ณธ ๊ธฐ๋ฅ๋ถํฐ ์์ํ์ฌ ๊ณ์ ํ์ฅํ๊ฒ ์ต๋๋ค.