1 | declare 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 | }
|