@oscarpalmer/oui 0.37.0 → 0.39.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/css/a11y.css +1 -0
- package/dist/css/badge.css +12 -8
- package/dist/css/button.css +111 -14
- package/dist/css/color-picker.css +859 -0
- package/dist/css/color.css +86 -87
- package/dist/css/combobox.css +105 -4
- package/dist/css/content.css +8 -6
- package/dist/css/floatable.css +3 -3
- package/dist/css/form.css +106 -6
- package/dist/css/icon.css +99 -0
- package/dist/css/listbox.css +5 -0
- package/dist/css/message.css +6 -3
- package/dist/css/mixins/badge.mixins.css +2 -0
- package/dist/css/mixins/button.mixins.css +3 -0
- package/dist/css/mixins/message.mixins.css +1 -0
- package/dist/css/mixins/misc.mixins.css +2 -0
- package/dist/css/mixins/shadow.mixins.css +1 -0
- package/dist/css/reset.css +3 -3
- package/dist/css/splitter.css +1 -1
- package/dist/css/tabs.css +115 -23
- package/dist/css/typography.css +90 -0
- package/dist/js/color-picker/constants.color-picker.d.mts +2 -0
- package/dist/js/color-picker/constants.color-picker.mjs +59 -0
- package/dist/js/color-picker/dom.color-picker.d.mts +8 -0
- package/dist/js/color-picker/dom.color-picker.mjs +191 -0
- package/dist/js/color-picker/event.color-picker.d.mts +9 -0
- package/dist/js/color-picker/event.color-picker.mjs +2 -0
- package/dist/js/color-picker/form.color-picker.d.mts +5 -0
- package/dist/js/color-picker/form.color-picker.mjs +24 -0
- package/dist/js/color-picker/index.d.mts +2 -0
- package/dist/js/color-picker/index.mjs +303 -0
- package/dist/js/color-picker/misc.color-picker.d.mts +2 -0
- package/dist/js/color-picker/misc.color-picker.mjs +2 -0
- package/dist/js/color-picker/models.color-picker.d.mts +2 -0
- package/dist/js/color-picker/models.color-picker.mjs +24 -0
- package/dist/js/color-picker/output.color-picker.d.mts +8 -0
- package/dist/js/color-picker/output.color-picker.mjs +233 -0
- package/dist/js/color-picker/state.color-picker.d.mts +8 -0
- package/dist/js/color-picker/state.color-picker.mjs +2 -0
- package/dist/js/combobox/constants.combobox.d.mts +1 -1
- package/dist/js/combobox/dom.combobox.d.mts +12 -13
- package/dist/js/combobox/dom.combobox.mjs +12 -5
- package/dist/js/combobox/event.combobox.d.mts +20 -21
- package/dist/js/combobox/event.combobox.mjs +1 -1
- package/dist/js/combobox/index.d.mts +1 -1
- package/dist/js/combobox/index.mjs +56 -2
- package/dist/js/combobox/misc.combobox.d.mts +1 -1
- package/dist/js/combobox/misc.combobox.mjs +1 -1
- package/dist/js/combobox/models.combobox.d.mts +12 -13
- package/dist/js/combobox/state.combobox.d.mts +8 -9
- package/dist/js/combobox/state.combobox.mjs +1 -1
- package/dist/js/constants.color-picker-B-gFjL8m.d.mts +364 -0
- package/dist/js/constants.combobox-8EMRmv09.d.mts +18 -0
- package/dist/js/constants.listbox-DGnX32kv.d.mts +8 -0
- package/dist/js/dialog.d.mts +2 -2
- package/dist/js/dialog.mjs +1 -1
- package/dist/js/{draggable-a6w0J1OD.d.mts → draggable-B5-70SZm.d.mts} +5 -4
- package/dist/js/event.color-picker-BEpq0Adu.mjs +485 -0
- package/dist/js/floatable/floatable.embedded.d.mts +1 -1
- package/dist/js/floatable/floatable.embedded.mjs +11 -8
- package/dist/js/floatable/floatable.standalone.d.mts +1 -1
- package/dist/js/{floatable.embedded-Bct4U5Dm.d.mts → floatable.embedded-DQYkXt8X.d.mts} +1 -1
- package/dist/js/focus-trap/focus-trap.embedded.d.mts +1 -1
- package/dist/js/focus-trap/focus-trap.standalone.d.mts +1 -1
- package/dist/js/{focus-trap.embedded-DR8NpZfr.d.mts → focus-trap.embedded-CjyFQYow.d.mts} +2 -2
- package/dist/js/{index-EfkUSals.d.mts → index-C5D3-oiI.d.mts} +41 -3
- package/dist/js/index.d.mts +8 -7
- package/dist/js/index.mjs +6 -3
- package/dist/js/internal/attributable.d.mts +2 -3
- package/dist/js/internal/draggable.d.mts +1 -1
- package/dist/js/internal/draggable.mjs +1 -1
- package/dist/js/internal/listbox/listbox.constants.d.mts +7 -10
- package/dist/js/internal/listbox/listbox.constants.mjs +15 -16
- package/dist/js/internal/listbox/listbox.data.d.mts +9 -10
- package/dist/js/internal/listbox/listbox.data.mjs +1 -1
- package/dist/js/internal/listbox/listbox.dom.d.mts +19 -20
- package/dist/js/internal/listbox/listbox.dom.mjs +1 -1
- package/dist/js/internal/listbox/listbox.event.d.mts +3 -4
- package/dist/js/internal/listbox/listbox.event.mjs +4 -4
- package/dist/js/internal/listbox/listbox.form.d.mts +4 -5
- package/dist/js/internal/listbox/listbox.form.mjs +16 -15
- package/dist/js/internal/listbox/listbox.misc.d.mts +10 -11
- package/dist/js/internal/listbox/listbox.misc.mjs +1 -1
- package/dist/js/internal/listbox/listbox.model.d.mts +1 -1
- package/dist/js/internal/listbox/listbox.state.d.mts +5 -6
- package/dist/js/internal/listbox/listbox.state.mjs +3 -3
- package/dist/js/internal/misc.d.mts +4 -4
- package/dist/js/internal/misc.mjs +9 -1
- package/dist/js/internal/navigable.d.mts +9 -10
- package/dist/js/internal/navigable.mjs +1 -0
- package/dist/js/listbox/constants.listbox.d.mts +1 -1
- package/dist/js/listbox/event.listbox.d.mts +6 -7
- package/dist/js/listbox/event.listbox.mjs +1 -1
- package/dist/js/listbox/index.d.mts +43 -5
- package/dist/js/listbox/index.mjs +56 -2
- package/dist/js/listbox/misc.listbox.d.mts +1 -1
- package/dist/js/listbox/misc.listbox.mjs +1 -1
- package/dist/js/listbox/state.listbox.d.mts +7 -8
- package/dist/js/listbox/state.listbox.mjs +1 -1
- package/dist/js/{listbox.data-BWd0PCy7.mjs → listbox.data-DQ7-x2uY.mjs} +8 -7
- package/dist/js/{listbox.model-CRReGOmu.d.mts → listbox.model-BHPA7GM4.d.mts} +3 -3
- package/dist/js/menu.mjs +1 -1
- package/dist/js/{misc.listbox-BI-XsTOf.mjs → misc.listbox-DKB-j0UK.mjs} +4 -5
- package/dist/js/{misc.listbox-gnoJhrTr.d.mts → misc.listbox-mZMuYOxg.d.mts} +1 -1
- package/dist/js/movable/movable.embedded.d.mts +1 -1
- package/dist/js/movable/movable.standalone.d.mts +1 -1
- package/dist/js/popover.d.mts +2 -2
- package/dist/js/popover.mjs +1 -1
- package/dist/js/resizable/resizable.embedded.d.mts +1 -1
- package/dist/js/resizable/resizable.embedded.mjs +1 -1
- package/dist/js/resizable/resizable.standalone.d.mts +1 -1
- package/dist/js/{resizable.embedded-3qoR0Bjm.d.mts → resizable.embedded-dvhdfQgt.d.mts} +1 -1
- package/dist/js/sortable/sortable.embedded.d.mts +1 -1
- package/dist/js/sortable/sortable.standalone.d.mts +1 -1
- package/dist/js/splitter.d.mts +2 -3
- package/dist/js/splitter.mjs +2 -2
- package/dist/js/{state.combobox-4xq0FPCF.mjs → state.combobox-BWDFHwoi.mjs} +9 -9
- package/dist/js/tabs.d.mts +4 -5
- package/dist/js/tabs.mjs +4 -7
- package/dist/js/tooltip.d.mts +1 -1
- package/package.json +24 -22
- package/dist/js/constants.combobox-DmRAMC64.d.mts +0 -26
- package/dist/js/constants.listbox-DRsXUxd3.d.mts +0 -14
- package/src/css/a11y.scss +0 -13
- package/src/css/badge.scss +0 -62
- package/src/css/button.scss +0 -50
- package/src/css/color.scss +0 -115
- package/src/css/combobox.scss +0 -252
- package/src/css/content.scss +0 -180
- package/src/css/flex.scss +0 -107
- package/src/css/floatable.scss +0 -152
- package/src/css/form.scss +0 -573
- package/src/css/listbox.scss +0 -120
- package/src/css/message.scss +0 -73
- package/src/css/mixins.scss +0 -419
- package/src/css/reset.scss +0 -392
- package/src/css/splitter.scss +0 -89
- package/src/css/table.scss +0 -107
- package/src/css/tabs.scss +0 -85
- package/src/js/combobox/constants.combobox.ts +0 -83
- package/src/js/combobox/dom.combobox.ts +0 -407
- package/src/js/combobox/event.combobox.ts +0 -365
- package/src/js/combobox/index.ts +0 -320
- package/src/js/combobox/misc.combobox.ts +0 -104
- package/src/js/combobox/models.combobox.ts +0 -54
- package/src/js/combobox/state.combobox.ts +0 -246
- package/src/js/dialog.ts +0 -255
- package/src/js/floatable/floatable.embedded.ts +0 -332
- package/src/js/floatable/floatable.standalone.ts +0 -6
- package/src/js/focus-trap/focus-trap.embedded.ts +0 -411
- package/src/js/focus-trap/focus-trap.standalone.ts +0 -1
- package/src/js/index.ts +0 -15
- package/src/js/internal/attributable.ts +0 -73
- package/src/js/internal/draggable.ts +0 -657
- package/src/js/internal/listbox/listbox.constants.ts +0 -25
- package/src/js/internal/listbox/listbox.data.ts +0 -287
- package/src/js/internal/listbox/listbox.dom.ts +0 -445
- package/src/js/internal/listbox/listbox.event.ts +0 -129
- package/src/js/internal/listbox/listbox.form.ts +0 -115
- package/src/js/internal/listbox/listbox.misc.ts +0 -135
- package/src/js/internal/listbox/listbox.model.ts +0 -169
- package/src/js/internal/listbox/listbox.state.ts +0 -82
- package/src/js/internal/misc.ts +0 -27
- package/src/js/internal/navigable.ts +0 -315
- package/src/js/l10n.ts +0 -192
- package/src/js/listbox/constants.listbox.ts +0 -61
- package/src/js/listbox/event.listbox.ts +0 -106
- package/src/js/listbox/index.ts +0 -302
- package/src/js/listbox/misc.listbox.ts +0 -70
- package/src/js/listbox/state.listbox.ts +0 -196
- package/src/js/menu.ts +0 -348
- package/src/js/movable/movable.embedded.ts +0 -318
- package/src/js/movable/movable.standalone.ts +0 -2
- package/src/js/popover.ts +0 -229
- package/src/js/resizable/resizable.embedded.ts +0 -413
- package/src/js/resizable/resizable.standalone.ts +0 -5
- package/src/js/sortable/sortable.embedded.ts +0 -527
- package/src/js/sortable/sortable.standalone.ts +0 -2
- package/src/js/splitter.ts +0 -583
- package/src/js/tabs.ts +0 -447
- package/src/js/toolbar.ts +0 -63
- package/src/js/tooltip.ts +0 -367
- /package/dist/css/{mixins.css → mixins/input.mixins.css} +0 -0
|
@@ -1,332 +0,0 @@
|
|
|
1
|
-
import {isPlainObject} from '@oscarpalmer/atoms/is';
|
|
2
|
-
import {getAria} from '@oscarpalmer/toretto/aria';
|
|
3
|
-
import {getAttribute, setAttribute} from '@oscarpalmer/toretto/attribute';
|
|
4
|
-
import {on} from '@oscarpalmer/toretto/event';
|
|
5
|
-
import {isHTMLOrSVGElement} from '@oscarpalmer/toretto/is';
|
|
6
|
-
import type {RemovableEventListener} from '@oscarpalmer/toretto/models';
|
|
7
|
-
import {setStyle, setStyles} from '@oscarpalmer/toretto/style';
|
|
8
|
-
|
|
9
|
-
// #region Types
|
|
10
|
-
|
|
11
|
-
export type CreateOuiFloatableOptions = {
|
|
12
|
-
/**
|
|
13
|
-
* Open the floatable when created? _(defaults to `true`)_
|
|
14
|
-
*/
|
|
15
|
-
open?: boolean;
|
|
16
|
-
/**
|
|
17
|
-
* Position of the floatable _(defaults to `below`)_
|
|
18
|
-
*/
|
|
19
|
-
position?: OuiFloatablePosition;
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
export class OuiFloatable {
|
|
23
|
-
#destroyed = false;
|
|
24
|
-
|
|
25
|
-
readonly #state: OuiFloatableState;
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Is the floatable open?
|
|
29
|
-
*/
|
|
30
|
-
get open(): boolean {
|
|
31
|
-
return this.#state.content.checkVisibility();
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Open or close the floatable
|
|
36
|
-
*/
|
|
37
|
-
set open(value: boolean) {
|
|
38
|
-
if (value === true) {
|
|
39
|
-
this.show();
|
|
40
|
-
} else if (value === false) {
|
|
41
|
-
this.hide();
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
constructor(state: OuiFloatableState, standalone: boolean) {
|
|
46
|
-
this.#state = state;
|
|
47
|
-
|
|
48
|
-
const {anchor, content} = state;
|
|
49
|
-
|
|
50
|
-
if (standalone) {
|
|
51
|
-
setAttribute(content, ATTRIBUTE_FLOATABLE, '');
|
|
52
|
-
|
|
53
|
-
content.popover = 'manual';
|
|
54
|
-
} else {
|
|
55
|
-
content.popover ??= 'auto';
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
setStyle(anchor, 'anchorName', state.name);
|
|
59
|
-
setStyle(content, 'positionAnchor', state.name);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Destroy the floatable, removing it from the DOM and cleaning up references
|
|
64
|
-
*/
|
|
65
|
-
destroy(): void {
|
|
66
|
-
if (this.#destroyed) {
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
this.#destroyed = true;
|
|
71
|
-
|
|
72
|
-
removeFloatable(this.#state.content);
|
|
73
|
-
|
|
74
|
-
this.#state.anchor = null as never;
|
|
75
|
-
this.#state.content = null as never;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Closes the floatable
|
|
80
|
-
*/
|
|
81
|
-
hide(): void {
|
|
82
|
-
if (!this.#destroyed && this.open) {
|
|
83
|
-
this.#state.content.hidePopover();
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Opens the floatable
|
|
89
|
-
*/
|
|
90
|
-
show(): void {
|
|
91
|
-
if (!this.#destroyed && !this.open) {
|
|
92
|
-
this.#state.content.showPopover();
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Update the position of the floatable, with an optional new position
|
|
98
|
-
*
|
|
99
|
-
* @param position Optional new position
|
|
100
|
-
*/
|
|
101
|
-
update(position?: OuiFloatablePosition): void {
|
|
102
|
-
if (!this.#destroyed) {
|
|
103
|
-
setPosition(this.#state, position);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
export type OuiFloatableOptions = {
|
|
109
|
-
attribute?: string;
|
|
110
|
-
position: OuiFloatablePosition;
|
|
111
|
-
reusable: boolean;
|
|
112
|
-
};
|
|
113
|
-
|
|
114
|
-
export type OuiFloatablePosition =
|
|
115
|
-
| 'above'
|
|
116
|
-
| 'above-end'
|
|
117
|
-
| 'above-start'
|
|
118
|
-
| 'below'
|
|
119
|
-
| 'below-end'
|
|
120
|
-
| 'below-start'
|
|
121
|
-
| 'end'
|
|
122
|
-
| 'end-bottom'
|
|
123
|
-
| 'end-top'
|
|
124
|
-
| 'start'
|
|
125
|
-
| 'start-bottom'
|
|
126
|
-
| 'start-top';
|
|
127
|
-
|
|
128
|
-
type OuiFloatableState = {
|
|
129
|
-
anchor: HTMLElement;
|
|
130
|
-
content: HTMLElement;
|
|
131
|
-
name: string;
|
|
132
|
-
options: OuiFloatableOptions;
|
|
133
|
-
};
|
|
134
|
-
|
|
135
|
-
// #endregion
|
|
136
|
-
|
|
137
|
-
// #region Functions
|
|
138
|
-
|
|
139
|
-
function getAnchorName(anchor: HTMLElement): string {
|
|
140
|
-
let {anchorName} = anchor.style;
|
|
141
|
-
|
|
142
|
-
if (anchorName.length > 0) {
|
|
143
|
-
return anchorName;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
index += 1;
|
|
147
|
-
|
|
148
|
-
return `--oui-floatable-anchor-${index}`;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
export function createEmbeddedFloatable(
|
|
152
|
-
anchor: HTMLElement,
|
|
153
|
-
content: HTMLElement,
|
|
154
|
-
options: OuiFloatableOptions,
|
|
155
|
-
): OuiFloatable {
|
|
156
|
-
return createInstance(anchor, content, options, false);
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
* Create a _OuiFloatable_ for an anchor and content element
|
|
161
|
-
*
|
|
162
|
-
* @param anchor Anchor element
|
|
163
|
-
* @param content Content element
|
|
164
|
-
* @param options _OuiFloatable_ options
|
|
165
|
-
* @returns _OuiFloatable_ instance
|
|
166
|
-
*/
|
|
167
|
-
export function createFloatable(
|
|
168
|
-
anchor: HTMLElement,
|
|
169
|
-
content: HTMLElement,
|
|
170
|
-
options?: CreateOuiFloatableOptions,
|
|
171
|
-
): OuiFloatable {
|
|
172
|
-
const {open, position} = getOptions(options);
|
|
173
|
-
|
|
174
|
-
const floatable = createInstance(
|
|
175
|
-
anchor,
|
|
176
|
-
content,
|
|
177
|
-
{
|
|
178
|
-
position,
|
|
179
|
-
reusable: false,
|
|
180
|
-
},
|
|
181
|
-
true,
|
|
182
|
-
);
|
|
183
|
-
|
|
184
|
-
floatable?.update(position);
|
|
185
|
-
|
|
186
|
-
if (open) {
|
|
187
|
-
floatable?.show();
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
return floatable;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
function createInstance(
|
|
194
|
-
anchor: HTMLElement,
|
|
195
|
-
content: HTMLElement,
|
|
196
|
-
options: OuiFloatableOptions,
|
|
197
|
-
standalone: boolean,
|
|
198
|
-
): OuiFloatable {
|
|
199
|
-
if (!isHTMLOrSVGElement(anchor) || !isHTMLOrSVGElement(content)) {
|
|
200
|
-
throw new TypeError(MESSAGE);
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
let floatable = options.reusable ? undefined : instances.get(content);
|
|
204
|
-
|
|
205
|
-
if (floatable == null) {
|
|
206
|
-
floatable = new OuiFloatable(getState(anchor, content, options), standalone);
|
|
207
|
-
|
|
208
|
-
if (!options.reusable) {
|
|
209
|
-
instances.set(content, floatable);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
return floatable;
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
export function getOnBeforeToggleListener(element: HTMLElement): RemovableEventListener {
|
|
217
|
-
return on(
|
|
218
|
-
element,
|
|
219
|
-
'beforetoggle',
|
|
220
|
-
event => {
|
|
221
|
-
const {newState, source} = event;
|
|
222
|
-
|
|
223
|
-
if (newState === 'open' && source != null && getAria(source, 'disabled') === 'true') {
|
|
224
|
-
event.preventDefault();
|
|
225
|
-
}
|
|
226
|
-
},
|
|
227
|
-
{
|
|
228
|
-
passive: false,
|
|
229
|
-
},
|
|
230
|
-
);
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
function getOptions(input?: CreateOuiFloatableOptions): Required<CreateOuiFloatableOptions> {
|
|
234
|
-
const object = isPlainObject(input) ? input : {};
|
|
235
|
-
|
|
236
|
-
return {
|
|
237
|
-
open: typeof object.open === 'boolean' ? object.open : true,
|
|
238
|
-
position: object.position != null && object.position in AREAS ? object.position : 'below',
|
|
239
|
-
};
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
function getPosition(
|
|
243
|
-
state: OuiFloatableState,
|
|
244
|
-
override?: OuiFloatablePosition,
|
|
245
|
-
): OuiFloatablePosition {
|
|
246
|
-
if (override != null && override in AREAS) {
|
|
247
|
-
return override;
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
const {anchor, options} = state;
|
|
251
|
-
|
|
252
|
-
if (options.attribute == null) {
|
|
253
|
-
return options.position;
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
const attribute = getAttribute(anchor, options.attribute);
|
|
257
|
-
|
|
258
|
-
return attribute != null && attribute in AREAS
|
|
259
|
-
? (attribute as OuiFloatablePosition)
|
|
260
|
-
: options.position;
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
function getState(
|
|
264
|
-
anchor: HTMLElement,
|
|
265
|
-
content: HTMLElement,
|
|
266
|
-
options: OuiFloatableOptions,
|
|
267
|
-
): OuiFloatableState {
|
|
268
|
-
const name = getAnchorName(anchor);
|
|
269
|
-
|
|
270
|
-
const state: OuiFloatableState = {
|
|
271
|
-
anchor,
|
|
272
|
-
content,
|
|
273
|
-
name,
|
|
274
|
-
options,
|
|
275
|
-
};
|
|
276
|
-
|
|
277
|
-
return state;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
export function removeFloatable(content: HTMLElement): void {
|
|
281
|
-
instances.get(content)?.destroy();
|
|
282
|
-
|
|
283
|
-
instances.delete(content);
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
function setPosition(state: OuiFloatableState, override?: OuiFloatablePosition): void {
|
|
287
|
-
const position = getPosition(state, override);
|
|
288
|
-
|
|
289
|
-
const area = AREAS[position];
|
|
290
|
-
|
|
291
|
-
setAttribute(state.content, ATTRIBUTE_POSITION, POSITIONS[area]);
|
|
292
|
-
|
|
293
|
-
setStyles(state.content, {
|
|
294
|
-
positionAnchor: state.name,
|
|
295
|
-
positionArea: area,
|
|
296
|
-
});
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
// #endregion
|
|
300
|
-
|
|
301
|
-
// #region Variables
|
|
302
|
-
|
|
303
|
-
const AREAS: Record<OuiFloatablePosition, string> = {
|
|
304
|
-
above: 'block-start',
|
|
305
|
-
'above-end': 'start span-start',
|
|
306
|
-
'above-start': 'start span-end',
|
|
307
|
-
below: 'block-end',
|
|
308
|
-
'below-end': 'end span-start',
|
|
309
|
-
'below-start': 'end span-end',
|
|
310
|
-
end: 'center end',
|
|
311
|
-
'end-bottom': 'span-start end',
|
|
312
|
-
'end-top': 'span-end end',
|
|
313
|
-
start: 'center start',
|
|
314
|
-
'start-bottom': 'span-start start',
|
|
315
|
-
'start-top': 'span-end start',
|
|
316
|
-
};
|
|
317
|
-
|
|
318
|
-
export const ATTRIBUTE_FLOATABLE = 'oui-floatable';
|
|
319
|
-
|
|
320
|
-
const ATTRIBUTE_POSITION = 'oui-position';
|
|
321
|
-
|
|
322
|
-
const MESSAGE = 'Anchor and content must be an HTMLElement or SVGElement';
|
|
323
|
-
|
|
324
|
-
const POSITIONS = Object.fromEntries(
|
|
325
|
-
Object.entries(AREAS).map(([position, area]) => [area, position]),
|
|
326
|
-
) as Record<string, OuiFloatablePosition>;
|
|
327
|
-
|
|
328
|
-
const instances = new WeakMap<HTMLElement, OuiFloatable>();
|
|
329
|
-
|
|
330
|
-
let index = 0;
|
|
331
|
-
|
|
332
|
-
// #endregion
|