@nectary/components 0.44.0 → 0.45.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/accordion-item/index.js +1 -1
- package/action-menu/index.js +3 -11
- package/alert/index.js +3 -1
- package/avatar/index.js +12 -13
- package/avatar/types.d.ts +4 -4
- package/avatar/utils.d.ts +1 -4
- package/avatar/utils.js +4 -7
- package/badge/index.js +9 -7
- package/badge/types.d.ts +4 -4
- package/badge/utils.d.ts +1 -4
- package/badge/utils.js +0 -6
- package/button/index.js +88 -23
- package/button/types.d.ts +12 -11
- package/button/utils.d.ts +4 -1
- package/button/utils.js +9 -1
- package/card-container/index.js +1 -1
- package/chat-block/index.js +1 -1
- package/chat-bubble/index.js +1 -1
- package/checkbox/index.js +4 -2
- package/chip/index.js +7 -6
- package/color-menu/index.js +9 -18
- package/color-swatch/index.js +5 -7
- package/date-picker/index.js +1 -1
- package/dialog/index.js +4 -7
- package/emoji/index.js +2 -6
- package/emoji-picker/data.json +1 -0
- package/emoji-picker/index.js +6 -14
- package/field/index.js +1 -1
- package/file-status/index.js +4 -2
- package/flag/index.d.ts +11 -0
- package/flag/index.js +43 -0
- package/flag/types.d.ts +11 -0
- package/flag/types.js +1 -0
- package/flag/utils.d.ts +1 -0
- package/flag/utils.js +19 -0
- package/icon/index.js +1 -1
- package/icon-button/index.js +77 -9
- package/icon-button/types.d.ts +14 -6
- package/icon-button/utils.d.ts +5 -0
- package/icon-button/utils.js +9 -0
- package/icons/create-icon-class.js +1 -1
- package/inline-alert/index.js +3 -1
- package/input/index.d.ts +3 -0
- package/input/index.js +148 -71
- package/input/types.d.ts +7 -0
- package/link/index.js +1 -1
- package/package.json +4 -6
- package/pagination/index.js +1 -1
- package/pop/index.js +15 -37
- package/popover/index.js +7 -9
- package/radio-option/index.js +1 -1
- package/segment/index.js +10 -6
- package/segment/types.d.ts +4 -4
- package/segment/utils.d.ts +3 -5
- package/segment/utils.js +14 -4
- package/segment-collapse/index.js +1 -1
- package/segmented-control-option/index.js +1 -1
- package/segmented-icon-control-option/index.js +1 -1
- package/select-button/index.js +93 -28
- package/select-button/types.d.ts +8 -1
- package/select-menu/index.d.ts +5 -0
- package/select-menu/index.js +46 -17
- package/select-menu-option/index.d.ts +1 -0
- package/select-menu-option/index.js +3 -0
- package/select-menu-option/types.d.ts +1 -0
- package/spinner/index.js +52 -7
- package/spinner/types.d.ts +4 -5
- package/stop-events/index.js +9 -5
- package/table/index.js +1 -1
- package/tag/index.js +2 -6
- package/text/index.js +3 -1
- package/textarea/index.js +1 -1
- package/theme/button.css +146 -0
- package/{theme.css → theme/contextual.css} +3 -25
- package/theme/elevation.css +1 -1
- package/theme/flag.css +4 -0
- package/theme/fonts.css +0 -33
- package/theme/fonts.json +0 -33
- package/theme/icon-button.css +68 -0
- package/theme/index.css +4 -0
- package/theme/index.d.ts +21 -0
- package/theme/index.js +21 -0
- package/theme/input.css +7 -0
- package/theme/select-button.css +7 -0
- package/theme/shapes.css +4 -3
- package/theme/size.css +9 -0
- package/theme/spinner.css +7 -0
- package/theme/typography.css +7 -7
- package/tile-control-option/index.js +1 -1
- package/time-picker/index.js +1 -1
- package/title/index.js +7 -3
- package/toast/index.js +3 -1
- package/toggle/index.js +1 -1
- package/tooltip/index.js +8 -6
- package/utils/context.d.ts +14 -9
- package/utils/context.js +60 -26
- package/utils/countries.d.ts +5 -0
- package/utils/countries.js +2 -0
- package/utils/countries.json +998 -0
- package/utils/debounce.d.ts +4 -0
- package/utils/debounce.js +21 -0
- package/utils/element.d.ts +4 -0
- package/utils/element.js +10 -0
- package/utils/index.d.ts +1 -0
- package/utils/index.js +1 -0
- package/utils/size.d.ts +10 -0
- package/utils/size.js +19 -0
- package/utils/throttle.d.ts +2 -2
- package/utils/throttle.js +4 -9
- package/spinner/utils.d.ts +0 -2
- package/spinner/utils.js +0 -1
package/tooltip/index.js
CHANGED
|
@@ -21,7 +21,6 @@ defineCustomElement('sinch-tooltip', class extends NectaryElement {
|
|
|
21
21
|
#tooltipState;
|
|
22
22
|
#animation = null;
|
|
23
23
|
#shouldReduceMotion = false;
|
|
24
|
-
#isConnected = false;
|
|
25
24
|
#isSubscribed = false;
|
|
26
25
|
constructor() {
|
|
27
26
|
super();
|
|
@@ -44,7 +43,7 @@ defineCustomElement('sinch-tooltip', class extends NectaryElement {
|
|
|
44
43
|
});
|
|
45
44
|
}
|
|
46
45
|
connectedCallback() {
|
|
47
|
-
|
|
46
|
+
super.connectedCallback();
|
|
48
47
|
this.#controller = new AbortController();
|
|
49
48
|
const options = {
|
|
50
49
|
signal: this.#controller.signal
|
|
@@ -54,6 +53,7 @@ defineCustomElement('sinch-tooltip', class extends NectaryElement {
|
|
|
54
53
|
this.#updateText();
|
|
55
54
|
}
|
|
56
55
|
disconnectedCallback() {
|
|
56
|
+
super.disconnectedCallback();
|
|
57
57
|
this.#controller.abort();
|
|
58
58
|
this.#tooltipState.destroy();
|
|
59
59
|
}
|
|
@@ -93,8 +93,10 @@ defineCustomElement('sinch-tooltip', class extends NectaryElement {
|
|
|
93
93
|
}
|
|
94
94
|
case 'orientation':
|
|
95
95
|
{
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
if ('production' !== 'production') {
|
|
97
|
+
assertOrientation(newVal);
|
|
98
|
+
}
|
|
99
|
+
updateAttribute(this.#$pop, 'orientation', getPopOrientation(this.orientation));
|
|
98
100
|
if (this.#isOpen()) {
|
|
99
101
|
this.#resetTipOrientation();
|
|
100
102
|
this.#updateTipOrientation();
|
|
@@ -178,7 +180,7 @@ defineCustomElement('sinch-tooltip', class extends NectaryElement {
|
|
|
178
180
|
setClass(this.#$tip, 'hidden', rectOverlap(targetRect, contentRect));
|
|
179
181
|
};
|
|
180
182
|
#updateText() {
|
|
181
|
-
if (!this
|
|
183
|
+
if (!this.isConnected) {
|
|
182
184
|
return;
|
|
183
185
|
}
|
|
184
186
|
const value = this.text;
|
|
@@ -194,7 +196,7 @@ defineCustomElement('sinch-tooltip', class extends NectaryElement {
|
|
|
194
196
|
this.#subscribeMouseEnterEvent();
|
|
195
197
|
}
|
|
196
198
|
#subscribeMouseEnterEvent() {
|
|
197
|
-
if (!this
|
|
199
|
+
if (!this.isConnected || this.#isSubscribed) {
|
|
198
200
|
return;
|
|
199
201
|
}
|
|
200
202
|
this.#$target.addEventListener('mouseenter', this.#onMouseEnter, {
|
package/utils/context.d.ts
CHANGED
|
@@ -1,15 +1,20 @@
|
|
|
1
|
-
export declare type TContextName = 'visibility' | 'keydown';
|
|
2
|
-
export declare type
|
|
1
|
+
export declare type TContextName = 'visibility' | 'keydown' | 'size';
|
|
2
|
+
export declare type TContextKeydown = {
|
|
3
3
|
code: string;
|
|
4
4
|
preventDefault: () => void;
|
|
5
5
|
};
|
|
6
6
|
export declare type TContextVisibility = boolean;
|
|
7
|
-
export declare
|
|
7
|
+
export declare type TContextSize = string;
|
|
8
|
+
declare type TContextDataType = {
|
|
9
|
+
visibility: TContextVisibility;
|
|
10
|
+
keydown: TContextKeydown;
|
|
11
|
+
size: TContextSize;
|
|
12
|
+
};
|
|
13
|
+
export declare class Context<T extends TContextName> {
|
|
8
14
|
#private;
|
|
9
|
-
constructor($element: Element, name:
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
unsubscribe(): void;
|
|
15
|
+
constructor($element: Element, name: T);
|
|
16
|
+
listen(signal: AbortSignal): void;
|
|
17
|
+
dispatch(contextValue: TContextDataType[T]): void;
|
|
13
18
|
}
|
|
14
|
-
export declare const
|
|
15
|
-
export
|
|
19
|
+
export declare const subscribeContext: <T extends TContextName>($el: Element, name: T, cb: (e: CustomEvent<TContextDataType[T]>) => void, signal: AbortSignal) => void;
|
|
20
|
+
export {};
|
package/utils/context.js
CHANGED
|
@@ -1,51 +1,85 @@
|
|
|
1
|
+
const contextNameToEventMap = {
|
|
2
|
+
keydown: '-keydown',
|
|
3
|
+
visibility: '-visibility',
|
|
4
|
+
size: '-size'
|
|
5
|
+
};
|
|
6
|
+
const shouldPersistContextValue = {
|
|
7
|
+
keydown: false,
|
|
8
|
+
visibility: true,
|
|
9
|
+
size: true
|
|
10
|
+
};
|
|
1
11
|
export class Context {
|
|
2
12
|
#$root;
|
|
3
13
|
#listeners = new Set();
|
|
4
14
|
#name;
|
|
5
|
-
#
|
|
15
|
+
#isListening = false;
|
|
16
|
+
#lastContextValue = null;
|
|
6
17
|
constructor($element, name) {
|
|
7
18
|
this.#$root = $element;
|
|
8
19
|
this.#name = name;
|
|
9
20
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
subscribe() {
|
|
14
|
-
if (this.#isSubscribed) {
|
|
21
|
+
listen(signal) {
|
|
22
|
+
if (this.#isListening) {
|
|
15
23
|
return;
|
|
16
24
|
}
|
|
17
|
-
this.#$root.addEventListener(`-context-connect-${this.#name}`, this.#
|
|
18
|
-
|
|
19
|
-
|
|
25
|
+
this.#$root.addEventListener(`-context-connect-${this.#name}`, this.#onListenerConnect, {
|
|
26
|
+
signal
|
|
27
|
+
});
|
|
28
|
+
this.#$root.addEventListener(`-context-disconnect-${this.#name}`, this.#onListenerDisconnect, {
|
|
29
|
+
signal
|
|
30
|
+
});
|
|
31
|
+
this.#isListening = true;
|
|
32
|
+
signal.addEventListener('abort', () => {
|
|
33
|
+
this.#listeners.clear();
|
|
34
|
+
this.#isListening = false;
|
|
35
|
+
this.#lastContextValue = null;
|
|
36
|
+
}, {
|
|
37
|
+
once: true
|
|
38
|
+
});
|
|
20
39
|
}
|
|
21
|
-
|
|
22
|
-
this.#listeners
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
40
|
+
dispatch(contextValue) {
|
|
41
|
+
for (const el of this.#listeners) {
|
|
42
|
+
el.dispatchEvent(new CustomEvent(contextNameToEventMap[this.#name], {
|
|
43
|
+
detail: contextValue
|
|
44
|
+
}));
|
|
45
|
+
}
|
|
46
|
+
if (shouldPersistContextValue[this.#name]) {
|
|
47
|
+
this.#lastContextValue = contextValue;
|
|
48
|
+
}
|
|
26
49
|
}
|
|
27
|
-
#
|
|
50
|
+
#onListenerConnect = e => {
|
|
28
51
|
e.stopPropagation();
|
|
29
52
|
this.#listeners.add(e.detail);
|
|
53
|
+
if (this.#lastContextValue !== null) {
|
|
54
|
+
e.detail.dispatchEvent(new CustomEvent(contextNameToEventMap[this.#name], {
|
|
55
|
+
detail: this.#lastContextValue
|
|
56
|
+
}));
|
|
57
|
+
}
|
|
30
58
|
};
|
|
31
|
-
#
|
|
59
|
+
#onListenerDisconnect = e => {
|
|
32
60
|
e.stopPropagation();
|
|
33
61
|
this.#listeners.delete(e.detail);
|
|
34
62
|
};
|
|
35
63
|
}
|
|
36
|
-
export const
|
|
64
|
+
export const subscribeContext = ($el, name, cb, signal) => {
|
|
37
65
|
requestAnimationFrame(() => {
|
|
38
|
-
el.dispatchEvent(new CustomEvent(`-context-connect-${name}`, {
|
|
66
|
+
$el.dispatchEvent(new CustomEvent(`-context-connect-${name}`, {
|
|
39
67
|
bubbles: true,
|
|
40
68
|
composed: true,
|
|
41
|
-
detail: el
|
|
69
|
+
detail: $el
|
|
42
70
|
}));
|
|
43
71
|
});
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
72
|
+
|
|
73
|
+
$el.addEventListener(contextNameToEventMap[name], cb, {
|
|
74
|
+
signal
|
|
75
|
+
});
|
|
76
|
+
signal.addEventListener('abort', () => {
|
|
77
|
+
$el.dispatchEvent(new CustomEvent(`-context-disconnect-${name}`, {
|
|
78
|
+
bubbles: true,
|
|
79
|
+
composed: true,
|
|
80
|
+
detail: $el
|
|
81
|
+
}));
|
|
82
|
+
}, {
|
|
83
|
+
once: true
|
|
84
|
+
});
|
|
51
85
|
};
|