Repository URL to install this package:
|
Version:
3.0.2 ▾
|
// import '../globals.d'
import { ObservableMap } from 'xmobx/mobx'
/**
* @todo connect to routing too
*
* @todo split smaller stores (loading, snackbar, scroll, resize)
* @see https://mobx.js.org/best/store.html
* can do focus here too probably & locale
*
* @todo can use context here to show & set popups & modal & snackbar...
*/
export interface ApplicationScreen {
height: number
width: number
availHeight: number
availWidth: number
isGrowing?: boolean
isShrinking?: boolean
}
export interface ApplicationScroll {
vertical: number
horizontal: number
direction: 'up' | 'down' | 'none' | string
}
export interface ApplicationPrev {
screen: {
height: number
width: number
}
}
export interface ApplicationSnackbar {
isVisible?: boolean
message?: string
meta?: any
}
export interface ApplicationTypes {
store: ObservableMap
hasError: boolean
/**
* @todo @name snackBar
*/
snackbar: ApplicationSnackbar
// router....
// not observable previous => snapshot
prev: ApplicationPrev
screen: ApplicationScreen
scroll: ApplicationScroll
}
export type CurriedSet<Type = any> = (x: any) => Type & ApplicationTypes
/**
* === common ===
*/
export type AnyVoidFnType = (arg?: any) => void
export type CommonStateInnerType = CommonPropsArgType & {
toggleSelected: (event: MouseEvent) => void
select: AnyVoidFnType
setSelected: AnyVoidFnType
handleSelect: AnyVoidFnType
unselect: AnyVoidFnType
handleUnSelect: AnyVoidFnType
handleToggleSelected: (event?: MouseEvent) => void
setOpen: AnyVoidFnType
handleShow: AnyVoidFnType
handleOpen: AnyVoidFnType
show: AnyVoidFnType
handleToggleVisibility: (event: MouseEvent) => void
toggleVisibility: (event: MouseEvent) => void
setClosed: AnyVoidFnType
handleHide: AnyVoidFnType
hide: AnyVoidFnType
setActive: AnyVoidFnType
activate: AnyVoidFnType
handleActive: AnyVoidFnType
setInactive: AnyVoidFnType
deactivate: AnyVoidFnType
handleInactive: AnyVoidFnType
handleToggleActive: (event: MouseEvent) => void
toggleActive: (event: MouseEvent) => void
handleFocus: AnyVoidFnType
setFocused: AnyVoidFnType
focus: AnyVoidFnType
handleBlur: AnyVoidFnType
blur: AnyVoidFnType
toggle: (name: keyof CommonStateInnerType) => void
set: (name: keyof CommonStateInnerType, value?: unknown) => void
setValue: (value: unknown) => void
setLabel: (label: unknown) => void
}
export type CommonStateType = CommonPropsArgType & CommonStateInnerType
export interface CommonPropsArgType {
isDefaultSelected?: boolean
isSelected?: boolean
isDisabled?: boolean
isVisible?: boolean
isActive?: boolean
isFocused?: boolean
state?: CommonStateType
value?: any
label?: any
/**
* unknown things... can add again...
*/
// [key: string]: unknown
}
export interface CommonStateOptionsType {
select?: boolean
visible?: boolean
active?: boolean
focus?: boolean
value?: boolean
label?: boolean
}