@oscarpalmer/oui 0.18.0 → 0.19.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/badge.css +10 -10
- package/dist/css/button.css +9 -9
- package/dist/css/color.css +99 -99
- package/dist/css/content.css +1 -1
- package/dist/css/flex.css +39 -39
- package/dist/css/form.css +29 -56
- package/dist/css/message.css +6 -6
- package/dist/css/reset.css +3 -2
- package/dist/css/table.css +4 -4
- package/dist/css/tooltip.css +18 -1
- package/dist/js/attributable.full.js +29 -41
- package/dist/js/floatable.full.js +322 -337
- package/dist/js/focus-trap/embedded.full.js +252 -195
- package/dist/js/focus-trap/standalone.full.js +283 -238
- package/dist/js/index.js +3 -3
- package/dist/js/oui.full.js +1170 -1193
- package/dist/js/popover.full.js +568 -630
- package/dist/js/popover.js +1 -1
- package/dist/js/splitter.full.js +533 -369
- package/dist/js/splitter.js +2 -2
- package/dist/js/tooltip.full.js +488 -554
- package/dist/js/tooltip.js +1 -1
- package/package.json +19 -19
- package/src/css/a11y.scss +1 -1
- package/src/css/badge.scss +23 -19
- package/src/css/button.scss +9 -9
- package/src/css/color.scss +99 -99
- package/src/css/content.scss +6 -8
- package/src/css/flex.scss +21 -20
- package/src/css/form.scss +37 -60
- package/src/css/message.scss +8 -12
- package/src/css/mixins.scss +11 -12
- package/src/css/popover.scss +2 -2
- package/src/css/reset.scss +14 -14
- package/src/css/splitter.scss +15 -13
- package/src/css/table.scss +11 -11
- package/src/css/tooltip.scss +25 -4
- package/src/js/attributable.ts +3 -10
- package/src/js/floatable.ts +7 -25
- package/src/js/focus-trap/embedded.ts +6 -24
- package/src/js/popover.ts +3 -3
- package/src/js/splitter.ts +9 -39
- package/src/js/tooltip.ts +5 -17
- package/dist/css/value.css +0 -1
|
@@ -70,10 +70,7 @@ type Options = {
|
|
|
70
70
|
|
|
71
71
|
//
|
|
72
72
|
|
|
73
|
-
export function createFocusTrap(
|
|
74
|
-
element: HTMLElement,
|
|
75
|
-
options?: Options,
|
|
76
|
-
): FocusTrap {
|
|
73
|
+
export function createFocusTrap(element: HTMLElement, options?: Options): FocusTrap {
|
|
77
74
|
let focusTrap = FOCUSTRAPS_ALL.get(element);
|
|
78
75
|
|
|
79
76
|
if (focusTrap == null) {
|
|
@@ -86,10 +83,7 @@ export function createFocusTrap(
|
|
|
86
83
|
}
|
|
87
84
|
|
|
88
85
|
function onEscape(event: KeyboardEvent): void {
|
|
89
|
-
let element = findAncestor(
|
|
90
|
-
event.target as HTMLElement,
|
|
91
|
-
ATTRIBUTE_SELECTOR,
|
|
92
|
-
) as HTMLElement;
|
|
86
|
+
let element = findAncestor(event.target as HTMLElement, ATTRIBUTE_SELECTOR) as HTMLElement;
|
|
93
87
|
|
|
94
88
|
let focusTrap = FOCUSTRAPS_ALL.get(element);
|
|
95
89
|
|
|
@@ -119,10 +113,7 @@ function onEscape(event: KeyboardEvent): void {
|
|
|
119
113
|
|
|
120
114
|
function onFocusIn(event: Event): void {
|
|
121
115
|
const focusTrap = FOCUSTRAPS_ALL.get(
|
|
122
|
-
findAncestor(
|
|
123
|
-
event.target as HTMLElement,
|
|
124
|
-
ATTRIBUTE_SELECTOR,
|
|
125
|
-
) as HTMLElement,
|
|
116
|
+
findAncestor(event.target as HTMLElement, ATTRIBUTE_SELECTOR) as HTMLElement,
|
|
126
117
|
);
|
|
127
118
|
|
|
128
119
|
lastTarget = focusTrap == null ? undefined : (event.target as HTMLElement);
|
|
@@ -144,10 +135,7 @@ function onKeydown(event: KeyboardEvent): void {
|
|
|
144
135
|
}
|
|
145
136
|
|
|
146
137
|
function onPointerdown(event: MouseEvent | TouchEvent): void {
|
|
147
|
-
const lastFocusTrap = findAncestor(
|
|
148
|
-
lastTarget as HTMLElement,
|
|
149
|
-
ATTRIBUTE_SELECTOR,
|
|
150
|
-
) as HTMLElement;
|
|
138
|
+
const lastFocusTrap = findAncestor(lastTarget as HTMLElement, ATTRIBUTE_SELECTOR) as HTMLElement;
|
|
151
139
|
|
|
152
140
|
const nextFocusTrap = findAncestor(
|
|
153
141
|
event.target as HTMLElement,
|
|
@@ -174,10 +162,7 @@ function onPointerdown(event: MouseEvent | TouchEvent): void {
|
|
|
174
162
|
}
|
|
175
163
|
|
|
176
164
|
function onTab(event: KeyboardEvent): void {
|
|
177
|
-
const element = findAncestor(
|
|
178
|
-
event.target as HTMLElement,
|
|
179
|
-
ATTRIBUTE_SELECTOR,
|
|
180
|
-
) as HTMLElement;
|
|
165
|
+
const element = findAncestor(event.target as HTMLElement, ATTRIBUTE_SELECTOR) as HTMLElement;
|
|
181
166
|
|
|
182
167
|
const focusTrap = FOCUSTRAPS_ALL.get(element);
|
|
183
168
|
|
|
@@ -228,10 +213,7 @@ function tabToElement(
|
|
|
228
213
|
const next = clamp(index + modifier, 0, length - 1, true);
|
|
229
214
|
|
|
230
215
|
if (focusTrap.disabled) {
|
|
231
|
-
if (
|
|
232
|
-
(index === length - 1 && next === 0) ||
|
|
233
|
-
(index === 0 && next === length - 1)
|
|
234
|
-
) {
|
|
216
|
+
if ((index === length - 1 && next === 0) || (index === 0 && next === length - 1)) {
|
|
235
217
|
lastTarget = undefined;
|
|
236
218
|
|
|
237
219
|
focusTrap.enable();
|
package/src/js/popover.ts
CHANGED
|
@@ -84,7 +84,7 @@ export class OuiPopoverElement extends HTMLElement {
|
|
|
84
84
|
this.#focusTrap.disconnect();
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
hidePopover(): void {
|
|
87
|
+
override hidePopover(): void {
|
|
88
88
|
if (this.#floatable.active && this.isConnected) {
|
|
89
89
|
this.#floatable.toggle(false);
|
|
90
90
|
}
|
|
@@ -94,7 +94,7 @@ export class OuiPopoverElement extends HTMLElement {
|
|
|
94
94
|
this.showPopover();
|
|
95
95
|
}
|
|
96
96
|
|
|
97
|
-
showPopover(): void {
|
|
97
|
+
override showPopover(): void {
|
|
98
98
|
if (!this.#floatable.active && this.isConnected) {
|
|
99
99
|
this.#floatable.toggle(true);
|
|
100
100
|
}
|
|
@@ -104,7 +104,7 @@ export class OuiPopoverElement extends HTMLElement {
|
|
|
104
104
|
this.togglePopover();
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
-
togglePopover(options?: boolean): boolean {
|
|
107
|
+
override togglePopover(options?: boolean): boolean {
|
|
108
108
|
if (typeof options === 'boolean') {
|
|
109
109
|
if (options === true) {
|
|
110
110
|
this.showPopover();
|
package/src/js/splitter.ts
CHANGED
|
@@ -57,9 +57,7 @@ export class OuiSplitterElement extends HTMLElement {
|
|
|
57
57
|
constructor() {
|
|
58
58
|
super();
|
|
59
59
|
|
|
60
|
-
const panels = [...this.children].filter(
|
|
61
|
-
child => child instanceof HTMLElement,
|
|
62
|
-
);
|
|
60
|
+
const panels = [...this.children].filter(child => child instanceof HTMLElement);
|
|
63
61
|
|
|
64
62
|
if (panels.length !== 2) {
|
|
65
63
|
throw new Error(`${SELECTOR} must have exactly two panels.`);
|
|
@@ -242,9 +240,7 @@ function getTypes(splitter: Splitter, width?: number, height?: number): Types {
|
|
|
242
240
|
if (type === 'auto') {
|
|
243
241
|
return {
|
|
244
242
|
auto: true,
|
|
245
|
-
horizontal:
|
|
246
|
-
(height ?? splitter.rectangle.height) >
|
|
247
|
-
(width ?? splitter.rectangle.width),
|
|
243
|
+
horizontal: (height ?? splitter.rectangle.height) > (width ?? splitter.rectangle.width),
|
|
248
244
|
};
|
|
249
245
|
}
|
|
250
246
|
|
|
@@ -254,11 +250,7 @@ function getTypes(splitter: Splitter, width?: number, height?: number): Types {
|
|
|
254
250
|
};
|
|
255
251
|
}
|
|
256
252
|
|
|
257
|
-
function getValue(
|
|
258
|
-
element: HTMLElement,
|
|
259
|
-
name: string,
|
|
260
|
-
defaultValue: number,
|
|
261
|
-
): number {
|
|
253
|
+
function getValue(element: HTMLElement, name: string, defaultValue: number): number {
|
|
262
254
|
const value = element.getAttribute(name);
|
|
263
255
|
|
|
264
256
|
if (isNullableOrWhitespace(value)) {
|
|
@@ -288,11 +280,7 @@ function getValues(element: OuiSplitterElement): Values {
|
|
|
288
280
|
},
|
|
289
281
|
};
|
|
290
282
|
|
|
291
|
-
const value = getContained(
|
|
292
|
-
values.min,
|
|
293
|
-
getValue(element, 'size', values.now.current),
|
|
294
|
-
values.max,
|
|
295
|
-
);
|
|
283
|
+
const value = getContained(values.min, getValue(element, 'size', values.now.current), values.max);
|
|
296
284
|
|
|
297
285
|
values.now.current = value;
|
|
298
286
|
values.now.previous = value;
|
|
@@ -336,10 +324,7 @@ function onKeydown(event: KeyboardEvent): void {
|
|
|
336
324
|
|
|
337
325
|
function onNavigate(event: KeyboardEvent): void {
|
|
338
326
|
const splitter = MAPPED_ELEMENTS.get(
|
|
339
|
-
findAncestor(
|
|
340
|
-
event.target as never,
|
|
341
|
-
'[oui-splitter-separator]',
|
|
342
|
-
) as HTMLSpanElement,
|
|
327
|
+
findAncestor(event.target as never, '[oui-splitter-separator]') as HTMLSpanElement,
|
|
343
328
|
);
|
|
344
329
|
|
|
345
330
|
if (splitter == null) {
|
|
@@ -365,11 +350,7 @@ function onNavigate(event: KeyboardEvent): void {
|
|
|
365
350
|
|
|
366
351
|
setSize(
|
|
367
352
|
splitter,
|
|
368
|
-
getContained(
|
|
369
|
-
values.min,
|
|
370
|
-
values.now.current + offset * NAVIGATION_MODIFIER,
|
|
371
|
-
values.max,
|
|
372
|
-
),
|
|
353
|
+
getContained(values.min, values.now.current + offset * NAVIGATION_MODIFIER, values.max),
|
|
373
354
|
true,
|
|
374
355
|
);
|
|
375
356
|
}
|
|
@@ -387,11 +368,7 @@ function onObservation(entries: ResizeObserverEntry[]): void {
|
|
|
387
368
|
return;
|
|
388
369
|
}
|
|
389
370
|
|
|
390
|
-
splitter.types = getTypes(
|
|
391
|
-
splitter,
|
|
392
|
-
entry.contentRect.width,
|
|
393
|
-
entry.contentRect.height,
|
|
394
|
-
);
|
|
371
|
+
splitter.types = getTypes(splitter, entry.contentRect.width, entry.contentRect.height);
|
|
395
372
|
|
|
396
373
|
if (splitter.types.horizontal) {
|
|
397
374
|
splitter.element.setAttribute(ATTRIBUTE_HORIZONTAL, '');
|
|
@@ -468,10 +445,7 @@ function setAriaValue(splitter: Splitter): void {
|
|
|
468
445
|
splitter.separator.setAttribute('aria-valuemax', String(splitter.values.max));
|
|
469
446
|
splitter.separator.setAttribute('aria-valuemin', String(splitter.values.min));
|
|
470
447
|
|
|
471
|
-
splitter.separator.setAttribute(
|
|
472
|
-
'aria-valuenow',
|
|
473
|
-
String(splitter.values.now.current),
|
|
474
|
-
);
|
|
448
|
+
splitter.separator.setAttribute('aria-valuenow', String(splitter.values.now.current));
|
|
475
449
|
}
|
|
476
450
|
|
|
477
451
|
function setSize(splitter: Splitter, size: number, previous?: boolean): void {
|
|
@@ -506,11 +480,7 @@ const KEYS_NEGATIVE: Set<string> = new Set(['ArrowLeft', 'ArrowUp']);
|
|
|
506
480
|
|
|
507
481
|
const KEYS_VERTICAL: Set<string> = new Set(['ArrowLeft', 'ArrowRight']);
|
|
508
482
|
|
|
509
|
-
const KEYS_ALL: Set<string> = new Set([
|
|
510
|
-
...KEYS_ABSOLUTE,
|
|
511
|
-
...KEYS_HORIZONTAL,
|
|
512
|
-
...KEYS_VERTICAL,
|
|
513
|
-
]);
|
|
483
|
+
const KEYS_ALL: Set<string> = new Set([...KEYS_ABSOLUTE, ...KEYS_HORIZONTAL, ...KEYS_VERTICAL]);
|
|
514
484
|
|
|
515
485
|
const MAPPED_ELEMENTS: WeakMap<HTMLElement, Splitter> = new WeakMap();
|
|
516
486
|
|
package/src/js/tooltip.ts
CHANGED
|
@@ -79,9 +79,7 @@ function closeTooltips(next: Tooltip | undefined): void {
|
|
|
79
79
|
clearTimeout(active.timer);
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
-
active.floatable.options.content.removeAttribute(
|
|
83
|
-
'oui-tooltip-content-active',
|
|
84
|
-
);
|
|
82
|
+
active.floatable.options.content.removeAttribute('oui-tooltip-content-active');
|
|
85
83
|
|
|
86
84
|
requestAnimationFrame(() => {
|
|
87
85
|
active.timer = setTimeout(() => {
|
|
@@ -211,10 +209,7 @@ function onToggle(event: Event, activate: boolean): void {
|
|
|
211
209
|
toggle = requestAnimationFrame(() => {
|
|
212
210
|
toggle = undefined;
|
|
213
211
|
|
|
214
|
-
const element = findAncestor(
|
|
215
|
-
event.target as HTMLElement,
|
|
216
|
-
SELECTOR_FULL,
|
|
217
|
-
) as HTMLElement;
|
|
212
|
+
const element = findAncestor(event.target as HTMLElement, SELECTOR_FULL) as HTMLElement;
|
|
218
213
|
|
|
219
214
|
const tooltip = TOOLTIPS_ALL.get(element);
|
|
220
215
|
|
|
@@ -224,9 +219,7 @@ function onToggle(event: Event, activate: boolean): void {
|
|
|
224
219
|
|
|
225
220
|
if (
|
|
226
221
|
tooltip == null ||
|
|
227
|
-
tooltip.floatable.options.content.hasAttribute(
|
|
228
|
-
'oui-tooltip-content-active',
|
|
229
|
-
) === activate
|
|
222
|
+
tooltip.floatable.options.content.hasAttribute('oui-tooltip-content-active') === activate
|
|
230
223
|
) {
|
|
231
224
|
return;
|
|
232
225
|
}
|
|
@@ -240,18 +233,13 @@ function onToggle(event: Event, activate: boolean): void {
|
|
|
240
233
|
tooltip.floatable.toggle(true);
|
|
241
234
|
|
|
242
235
|
requestAnimationFrame(() => {
|
|
243
|
-
tooltip.floatable.options.content.setAttribute(
|
|
244
|
-
'oui-tooltip-content-active',
|
|
245
|
-
'',
|
|
246
|
-
);
|
|
236
|
+
tooltip.floatable.options.content.setAttribute('oui-tooltip-content-active', '');
|
|
247
237
|
});
|
|
248
238
|
|
|
249
239
|
return;
|
|
250
240
|
}
|
|
251
241
|
|
|
252
|
-
tooltip.floatable.options.content.removeAttribute(
|
|
253
|
-
'oui-tooltip-content-active',
|
|
254
|
-
);
|
|
242
|
+
tooltip.floatable.options.content.removeAttribute('oui-tooltip-content-active');
|
|
255
243
|
|
|
256
244
|
tooltip.timer ??= setTimeout(() => {
|
|
257
245
|
TOOLTIPS_ACTIVE.delete(tooltip);
|
package/dist/css/value.css
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
|