dunji
카카오 우편번호 서비스(Kakao Postcode)의 Lustre 전용 Gleam 래퍼.
Lustre TEA 패턴에 맞춰 Effect(msg)를 반환하는 API를 제공한다.
빠른 시작
import dunji
import dunji/address.{type Address}
type Msg {
UserClickedSearch
GotAddress(Address)
}
fn update(model, msg) {
case msg {
UserClickedSearch ->
#(model, dunji.open_default(on_complete: GotAddress))
GotAddress(addr) ->
#(Model(..model, address: Some(addr)), effect.none())
}
}
Types
팝업 닫힘 상태.
pub type CloseState {
ForceClose
CompleteClose
}
Constructors
-
ForceClose사용자가 닫기 버튼을 클릭.
-
CompleteClose사용자가 주소를 선택하여 닫힘.
검색 이벤트 정보.
pub type SearchData {
SearchData(query: String, count: Int)
}
Constructors
-
SearchData(query: String, count: Int)
Values
pub fn embed(
selector selector: String,
options options: options.Options,
on_complete on_complete: fn(address.Address) -> msg,
on_close on_close: option.Option(fn(CloseState) -> msg),
on_resize on_resize: option.Option(fn(Size) -> msg),
on_search on_search: option.Option(fn(SearchData) -> msg),
) -> effect.Effect(msg)
카카오 우편번호 서비스를 DOM 요소에 임베드한다.
selector는 대상 요소의 CSS 선택자 (예: "#address-search").
예시
dunji.embed(
selector: "#postcode-container",
options: options.default(),
on_complete: GotAddress,
on_close: None,
on_resize: None,
on_search: None,
)
pub fn embed_default(
selector selector: String,
on_complete on_complete: fn(address.Address) -> msg,
) -> effect.Effect(msg)
기본 옵션으로 DOM 요소에 임베드하는 편의 함수.
dunji.embed_default(selector: "#container", on_complete: GotAddress)
pub fn open(
options options: options.Options,
on_complete on_complete: fn(address.Address) -> msg,
on_close on_close: option.Option(fn(CloseState) -> msg),
on_search on_search: option.Option(fn(SearchData) -> msg),
) -> effect.Effect(msg)
카카오 우편번호 서비스를 팝업으로 연다.
예시
// 기본 사용
dunji.open(
options: options.default(),
on_complete: GotAddress,
on_close: None,
on_search: None,
)
// 콜백 추가
dunji.open(
options: options.default() |> options.animation(True),
on_complete: GotAddress,
on_close: Some(GotClose),
on_search: None,
)
pub fn open_default(
on_complete on_complete: fn(address.Address) -> msg,
) -> effect.Effect(msg)
기본 옵션으로 팝업을 여는 편의 함수.
dunji.open_default(on_complete: GotAddress)