UNPKG

5.91 kBTypeScriptView Raw
1declare namespace FomanticUI {
2 interface Sticky {
3 settings: StickySettings;
4
5 (behavior: 'destroy'): JQuery;
6 <K extends keyof StickySettings>(behavior: 'setting', name: K, value?: undefined, ): Partial<Pick<StickySettings, keyof StickySettings>>;
7 <K extends keyof StickySettings>(behavior: 'setting', name: K, value: StickySettings[K]): JQuery;
8 (behavior: 'setting', value: Partial<Pick<StickySettings, keyof StickySettings>>): JQuery;
9 (settings?: Partial<Pick<StickySettings, keyof StickySettings>>): JQuery;
10 }
11
12 /**
13 * @see {@link https://fomantic-ui.com/modules/sticky.html#/settings}
14 */
15 interface StickySettings {
16 // region Sticky Settings
17
18 /**
19 * Whether element should be "pushed" by the viewport, attaching to the bottom of the screen when scrolling up.
20 * @default false
21 */
22 pushing: boolean;
23
24 /**
25 * Sets size of fixed content to match its width before fixing to screen dynamically.
26 * This is used because fixed may display block or 100% width content differently than it appears before sticking.
27 * @default true
28 */
29 setSize: boolean;
30
31 /**
32 * Sticky container height will only be set if the difference between heights of container and context is larger than this jitter value.
33 * @default 5
34 */
35 jitter: number;
36
37 /**
38 * Whether any change in 'context' DOM should automatically refresh cached sticky positions.
39 * @default false
40 */
41 observeChanges: boolean;
42
43 /**
44 * Context which sticky element should stick to.
45 * @default false
46 */
47 context: boolean | string;
48
49 /**
50 * Context which sticky should attach 'onscroll' events.
51 * @default window
52 */
53 scrollContext: Window | string;
54
55 /**
56 * Offset in pixels from the top of the screen when fixing element to viewport.
57 * @default 0
58 */
59 offset: number;
60
61 /**
62 * Offset in pixels from the bottom of the screen when fixing element to viewport.
63 * @default 0
64 */
65 bottomOffset: number;
66
67 // endregion
68
69 // region Callbacks
70
71 /**
72 * Callback when element is repositioned from layout change.
73 */
74 onReposition(this: JQuery): void;
75
76 /**
77 * Callback when 'requestAnimationFrame' fires from scroll handler.
78 */
79 onScroll(this: JQuery): void;
80
81 /**
82 * Callback when element is fixed to page.
83 */
84 onStick(this: JQuery): void;
85
86 /**
87 * Callback when element is unfixed from page.
88 */
89 onUnstick(this: JQuery): void;
90
91 /**
92 * Callback when element is bound to top of parent container.
93 */
94 onTop(this: JQuery): void;
95
96 /**
97 * Callback when element is bound to bottom of parent container.
98 */
99 onBottom(this: JQuery): void;
100
101 // endregion
102
103 // region DOM Settings
104
105 /**
106 * Class names used to determine element state.
107 */
108 className: Sticky.ClassNameSettings;
109
110 // endregion
111
112 // region Debug Settings
113
114 /**
115 * Name used in log statements
116 * @default 'Sticky'
117 */
118 name: string;
119
120 /**
121 * Event namespace. Makes sure module teardown does not effect other events attached to an element.
122 * @default 'sticky'
123 */
124 namespace: string;
125
126 /**
127 * Silences all console output including error messages, regardless of other debug settings.
128 * @default false
129 */
130 silent: boolean;
131
132 /**
133 * Debug output to console
134 * @default false
135 */
136 debug: boolean;
137
138 /**
139 * Show console.table output with performance metrics
140 * @default true
141 */
142 performance: boolean;
143
144 /**
145 * Debug output includes all internal behaviors
146 * @default false
147 */
148 verbose: boolean;
149
150 error: Sticky.ErrorSettings;
151
152 // endregion
153 }
154
155 namespace Sticky {
156 type ClassNameSettings = Partial<Pick<Settings.ClassNames, keyof Settings.ClassNames>>;
157 type ErrorSettings = Partial<Pick<Settings.Errors, keyof Settings.Errors>>;
158
159 namespace Settings {
160 interface ClassNames {
161 /**
162 * @default 'bound'
163 */
164 bound: string;
165
166 /**
167 * @default 'fixed'
168 */
169 fixed: string;
170
171 /**
172 * @default 'native'
173 */
174 supported: string;
175
176 /**
177 * @default 'top'
178 */
179 top: string;
180
181 /**
182 * @default 'bottom'
183 */
184 bottom: string;
185 }
186
187 interface Errors {
188 /**
189 * @default 'Sticky element must be inside a relative container'
190 */
191 container: string;
192
193 /**
194 * @default 'Element is hidden, you must call refresh after element becomes visible'
195 */
196 visible: string;
197
198 /**
199 * @default 'The method you called is not defined.'
200 */
201 method: string;
202
203 /**
204 * @default 'Context specified does not exist'
205 */
206 invalidContext: string;
207
208 /**
209 * @default 'Sticky element is larger than its container, cannot create sticky.'
210 */
211 elementSize: string;
212 }
213 }
214 }
215}