@studiometa/js-toolkit 2.0.0-alpha.4 → 2.0.0-alpha.8
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/Base/index.d.ts +29 -47
- package/Base/index.js +19 -14
- package/Base/managers/ChildrenManager.d.ts +6 -6
- package/Base/managers/ChildrenManager.js +1 -2
- package/Base/managers/EventsManager.d.ts +9 -9
- package/Base/managers/EventsManager.js +18 -33
- package/Base/managers/OptionsManager.d.ts +0 -8
- package/Base/managers/OptionsManager.js +1 -6
- package/Base/managers/RefsManager.js +1 -2
- package/Base/managers/ServicesManager.d.ts +14 -3
- package/Base/managers/ServicesManager.js +30 -12
- package/Base/utils.js +1 -2
- package/README.md +12 -70
- package/decorators/index.js +1 -2
- package/decorators/withBreakpointManager.d.ts +4 -4
- package/decorators/withBreakpointManager.js +1 -2
- package/decorators/withBreakpointObserver.d.ts +2 -2
- package/decorators/withBreakpointObserver.js +1 -2
- package/decorators/withDrag.d.ts +3 -3
- package/decorators/withDrag.js +1 -2
- package/decorators/withExtraConfig.d.ts +3 -3
- package/decorators/withExtraConfig.js +1 -2
- package/decorators/withIntersectionObserver.d.ts +2 -2
- package/decorators/withIntersectionObserver.js +1 -11
- package/decorators/withMountWhenInView.d.ts +3 -3
- package/decorators/withMountWhenInView.js +1 -2
- package/helpers/createApp.d.ts +3 -3
- package/helpers/createApp.js +9 -9
- package/helpers/importOnInteraction.d.ts +3 -3
- package/helpers/importOnInteraction.js +1 -2
- package/helpers/importWhenIdle.d.ts +3 -3
- package/helpers/importWhenIdle.js +1 -2
- package/helpers/importWhenVisible.d.ts +3 -3
- package/helpers/importWhenVisible.js +1 -2
- package/helpers/index.js +1 -2
- package/helpers/utils.js +1 -2
- package/index.d.ts +2 -2
- package/index.js +1 -2
- package/index.modern.js +1 -2
- package/index.umd.js +1 -2
- package/package.json +3 -4
- package/services/Service.js +1 -2
- package/services/drag.js +1 -2
- package/services/index.js +1 -2
- package/services/key.js +1 -2
- package/services/load.d.ts +1 -1
- package/services/load.js +2 -3
- package/services/pointer.js +1 -2
- package/services/raf.js +1 -2
- package/services/resize.js +1 -6
- package/services/scroll.js +1 -2
- package/utils/collide/boundingRectToCircle.js +1 -2
- package/utils/collide/collideCircleCircle.js +1 -2
- package/utils/collide/collideCircleRect.js +1 -2
- package/utils/collide/collidePointCircle.js +1 -2
- package/utils/collide/collidePointRect.js +1 -2
- package/utils/collide/collideRectRect.js +1 -2
- package/utils/collide/index.js +1 -2
- package/utils/css/classes.js +1 -2
- package/utils/css/index.js +1 -2
- package/utils/css/matrix.js +1 -2
- package/utils/css/styles.js +1 -2
- package/utils/css/transition.js +1 -2
- package/utils/debounce.js +1 -2
- package/utils/focusTrap.js +1 -2
- package/utils/history.js +2 -3
- package/utils/index.d.ts +2 -1
- package/utils/index.js +2 -2
- package/utils/keyCodes.js +1 -2
- package/utils/math/clamp.js +1 -2
- package/utils/math/clamp01.js +1 -2
- package/utils/math/damp.js +1 -2
- package/utils/math/index.js +1 -2
- package/utils/math/inertiaFinalValue.js +1 -2
- package/utils/math/lerp.js +1 -2
- package/utils/math/map.js +1 -2
- package/utils/math/round.js +1 -2
- package/utils/memoize.d.ts +30 -0
- package/utils/memoize.js +30 -0
- package/utils/nextFrame.js +1 -2
- package/utils/object/autoBind.js +1 -2
- package/utils/object/getAllProperties.js +1 -2
- package/utils/object/index.js +1 -2
- package/utils/object/isObject.js +1 -2
- package/utils/string/index.js +1 -2
- package/utils/string/withLeadingCharacters.js +1 -2
- package/utils/string/withLeadingSlash.js +1 -2
- package/utils/string/withTrailingCharacters.js +1 -2
- package/utils/string/withTrailingSlash.js +1 -2
- package/utils/string/withoutLeadingCharacters.js +1 -2
- package/utils/string/withoutLeadingCharactersRecursive.js +1 -2
- package/utils/string/withoutLeadingSlash.js +1 -2
- package/utils/string/withoutTrailingCharacters.js +1 -2
- package/utils/string/withoutTrailingCharactersRecursive.js +1 -2
- package/utils/string/withoutTrailingSlash.js +1 -2
- package/utils/throttle.js +1 -2
- package/Base/index.js.map +0 -1
- package/Base/managers/ChildrenManager.js.map +0 -1
- package/Base/managers/EventsManager.js.map +0 -1
- package/Base/managers/OptionsManager.js.map +0 -1
- package/Base/managers/RefsManager.js.map +0 -1
- package/Base/managers/ServicesManager.js.map +0 -1
- package/Base/utils.js.map +0 -1
- package/components/Accordion/Accordion.d.ts +0 -83
- package/components/Accordion/Accordion.js +0 -58
- package/components/Accordion/Accordion.js.map +0 -1
- package/components/Accordion/AccordionItem.d.ts +0 -122
- package/components/Accordion/AccordionItem.js +0 -244
- package/components/Accordion/AccordionItem.js.map +0 -1
- package/components/Accordion/index.d.ts +0 -27
- package/components/Accordion/index.js +0 -19
- package/components/Accordion/index.js.map +0 -1
- package/components/Cursor.d.ts +0 -138
- package/components/Cursor.js +0 -136
- package/components/Cursor.js.map +0 -1
- package/components/Draggable.d.ts +0 -49
- package/components/Draggable.js +0 -43
- package/components/Draggable.js.map +0 -1
- package/components/Modal.d.ts +0 -158
- package/components/Modal.js +0 -186
- package/components/Modal.js.map +0 -1
- package/components/Tabs.d.ts +0 -108
- package/components/Tabs.js +0 -120
- package/components/Tabs.js.map +0 -1
- package/components/index.d.ts +0 -6
- package/components/index.js +0 -7
- package/components/index.js.map +0 -1
- package/decorators/index.js.map +0 -1
- package/decorators/withBreakpointManager.js.map +0 -1
- package/decorators/withBreakpointObserver.js.map +0 -1
- package/decorators/withDrag.js.map +0 -1
- package/decorators/withExtraConfig.js.map +0 -1
- package/decorators/withIntersectionObserver.js.map +0 -1
- package/decorators/withMountWhenInView.js.map +0 -1
- package/helpers/createApp.js.map +0 -1
- package/helpers/importOnInteraction.js.map +0 -1
- package/helpers/importWhenIdle.js.map +0 -1
- package/helpers/importWhenVisible.js.map +0 -1
- package/helpers/index.js.map +0 -1
- package/helpers/utils.js.map +0 -1
- package/index.js.map +0 -1
- package/index.modern.js.map +0 -1
- package/index.umd.js.map +0 -1
- package/services/Service.js.map +0 -1
- package/services/drag.js.map +0 -1
- package/services/index.js.map +0 -1
- package/services/key.js.map +0 -1
- package/services/load.js.map +0 -1
- package/services/pointer.js.map +0 -1
- package/services/raf.js.map +0 -1
- package/services/resize.js.map +0 -1
- package/services/scroll.js.map +0 -1
- package/utils/collide/boundingRectToCircle.js.map +0 -1
- package/utils/collide/collideCircleCircle.js.map +0 -1
- package/utils/collide/collideCircleRect.js.map +0 -1
- package/utils/collide/collidePointCircle.js.map +0 -1
- package/utils/collide/collidePointRect.js.map +0 -1
- package/utils/collide/collideRectRect.js.map +0 -1
- package/utils/collide/index.js.map +0 -1
- package/utils/css/classes.js.map +0 -1
- package/utils/css/index.js.map +0 -1
- package/utils/css/matrix.js.map +0 -1
- package/utils/css/styles.js.map +0 -1
- package/utils/css/transition.js.map +0 -1
- package/utils/debounce.js.map +0 -1
- package/utils/focusTrap.js.map +0 -1
- package/utils/history.js.map +0 -1
- package/utils/index.js.map +0 -1
- package/utils/keyCodes.js.map +0 -1
- package/utils/math/clamp.js.map +0 -1
- package/utils/math/clamp01.js.map +0 -1
- package/utils/math/damp.js.map +0 -1
- package/utils/math/index.js.map +0 -1
- package/utils/math/inertiaFinalValue.js.map +0 -1
- package/utils/math/lerp.js.map +0 -1
- package/utils/math/map.js.map +0 -1
- package/utils/math/round.js.map +0 -1
- package/utils/nextFrame.js.map +0 -1
- package/utils/object/autoBind.js.map +0 -1
- package/utils/object/getAllProperties.js.map +0 -1
- package/utils/object/index.js.map +0 -1
- package/utils/object/isObject.js.map +0 -1
- package/utils/string/index.js.map +0 -1
- package/utils/string/withLeadingCharacters.js.map +0 -1
- package/utils/string/withLeadingSlash.js.map +0 -1
- package/utils/string/withTrailingCharacters.js.map +0 -1
- package/utils/string/withTrailingSlash.js.map +0 -1
- package/utils/string/withoutLeadingCharacters.js.map +0 -1
- package/utils/string/withoutLeadingCharactersRecursive.js.map +0 -1
- package/utils/string/withoutLeadingSlash.js.map +0 -1
- package/utils/string/withoutTrailingCharacters.js.map +0 -1
- package/utils/string/withoutTrailingCharactersRecursive.js.map +0 -1
- package/utils/string/withoutTrailingSlash.js.map +0 -1
- package/utils/throttle.js.map +0 -1
package/components/Cursor.js
DELETED
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
import Base from '../Base/index.js';
|
|
3
|
-
import damp from '../utils/math/damp.js';
|
|
4
|
-
import matrix from '../utils/css/matrix.js';
|
|
5
|
-
export default class Cursor extends Base {
|
|
6
|
-
constructor() {
|
|
7
|
-
super(...arguments);
|
|
8
|
-
|
|
9
|
-
_defineProperty(this, "x", 0);
|
|
10
|
-
|
|
11
|
-
_defineProperty(this, "y", 0);
|
|
12
|
-
|
|
13
|
-
_defineProperty(this, "scale", 0);
|
|
14
|
-
|
|
15
|
-
_defineProperty(this, "pointerX", 0);
|
|
16
|
-
|
|
17
|
-
_defineProperty(this, "pointerY", 0);
|
|
18
|
-
|
|
19
|
-
_defineProperty(this, "pointerScale", 0);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
mounted() {
|
|
23
|
-
this.x = 0;
|
|
24
|
-
this.y = 0;
|
|
25
|
-
this.scale = 0;
|
|
26
|
-
this.pointerX = 0;
|
|
27
|
-
this.pointerY = 0;
|
|
28
|
-
this.pointerScale = 0;
|
|
29
|
-
this.render({
|
|
30
|
-
x: this.x,
|
|
31
|
-
y: this.y,
|
|
32
|
-
scale: this.scale
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
moved(_ref) {
|
|
37
|
-
var {
|
|
38
|
-
event,
|
|
39
|
-
x,
|
|
40
|
-
y,
|
|
41
|
-
isDown
|
|
42
|
-
} = _ref;
|
|
43
|
-
|
|
44
|
-
if (!this.$services.has('ticked')) {
|
|
45
|
-
this.$services.enable('ticked');
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
this.pointerX = x;
|
|
49
|
-
this.pointerY = y;
|
|
50
|
-
var scale = 1;
|
|
51
|
-
|
|
52
|
-
if (!event) {
|
|
53
|
-
this.pointerScale = scale;
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
var shouldGrow = event.target instanceof Element && event.target.matches(this.$options.growSelectors) || false;
|
|
58
|
-
var shouldReduce = isDown || event.target instanceof Element && event.target.matches(this.$options.shrinkSelectors) || false;
|
|
59
|
-
|
|
60
|
-
if (shouldGrow) {
|
|
61
|
-
scale = this.$options.growTo;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
if (shouldReduce) {
|
|
65
|
-
scale = this.$options.shrinkTo;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
this.pointerScale = scale;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
ticked() {
|
|
72
|
-
this.x = damp(this.pointerX, this.x, this.$options.translateDampFactor);
|
|
73
|
-
this.y = damp(this.pointerY, this.y, this.$options.translateDampFactor);
|
|
74
|
-
this.scale = damp(this.pointerScale, this.scale, this.pointerScale < this.scale ? this.$options.shrinkDampFactor : this.$options.growDampFactor);
|
|
75
|
-
this.render({
|
|
76
|
-
x: this.x,
|
|
77
|
-
y: this.y,
|
|
78
|
-
scale: this.scale
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
if (this.x === this.pointerX && this.y === this.pointerY && this.scale === this.pointerScale) {
|
|
82
|
-
this.$services.disable('ticked');
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
render(_ref2) {
|
|
87
|
-
var {
|
|
88
|
-
x,
|
|
89
|
-
y,
|
|
90
|
-
scale
|
|
91
|
-
} = _ref2;
|
|
92
|
-
var transform = matrix({
|
|
93
|
-
translateX: x,
|
|
94
|
-
translateY: y,
|
|
95
|
-
scaleX: scale,
|
|
96
|
-
scaleY: scale
|
|
97
|
-
});
|
|
98
|
-
this.$el.style.transform = "translateZ(0) ".concat(transform);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
_defineProperty(Cursor, "config", {
|
|
104
|
-
name: 'Cursor',
|
|
105
|
-
options: {
|
|
106
|
-
growSelectors: {
|
|
107
|
-
type: String,
|
|
108
|
-
default: 'a, a *, button, button *, [data-cursor-grow], [data-cursor-grow] *'
|
|
109
|
-
},
|
|
110
|
-
shrinkSelectors: {
|
|
111
|
-
type: String,
|
|
112
|
-
default: '[data-cursor-shrink], [data-cursor-shrink] *'
|
|
113
|
-
},
|
|
114
|
-
growTo: {
|
|
115
|
-
type: Number,
|
|
116
|
-
default: 2
|
|
117
|
-
},
|
|
118
|
-
shrinkTo: {
|
|
119
|
-
type: Number,
|
|
120
|
-
default: 0.5
|
|
121
|
-
},
|
|
122
|
-
translateDampFactor: {
|
|
123
|
-
type: Number,
|
|
124
|
-
default: 0.25
|
|
125
|
-
},
|
|
126
|
-
growDampFactor: {
|
|
127
|
-
type: Number,
|
|
128
|
-
default: 0.25
|
|
129
|
-
},
|
|
130
|
-
shrinkDampFactor: {
|
|
131
|
-
type: Number,
|
|
132
|
-
default: 0.25
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
});
|
|
136
|
-
//# sourceMappingURL=Cursor.js.map
|
package/components/Cursor.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../packages/js-toolkit/components/Cursor.js"],"names":["Base","damp","matrix","Cursor","mounted","x","y","scale","pointerX","pointerY","pointerScale","render","moved","event","isDown","$services","has","enable","shouldGrow","target","Element","matches","$options","growSelectors","shouldReduce","shrinkSelectors","growTo","shrinkTo","ticked","translateDampFactor","shrinkDampFactor","growDampFactor","disable","transform","translateX","translateY","scaleX","scaleY","$el","style","name","options","type","String","default","Number"],"mappings":"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","sourcesContent":["import Base from '../Base/index.js';\nimport damp from '../utils/math/damp.js';\nimport matrix from '../utils/css/matrix.js';\n\n/**\n * @typedef {import('../services/pointer').PointerServiceProps} PointerServiceProps\n * @typedef {import('../Base').BaseOptions} BaseOptions\n */\n\n/**\n * @typedef {Object} CursorOptions\n * @property {string} growSelectors\n * @property {string} shrinkSelectors\n * @property {number} growTo\n * @property {number} shrinkTo\n * @property {number} translateDampFactor\n * @property {number} growDampFactor\n * @property {number} shrinkDampFactor\n */\n\n/**\n * @typedef {Object} CursorPrivateInterface\n * @property {BaseOptions & CursorOptions} $options\n */\n\n/**\n * @typedef {Cursor & CursorPrivateInterface} CursorInterface\n */\n\n/**\n * Custom cursor component.\n */\nexport default class Cursor extends Base {\n /**\n * Class config.\n */\n static config = {\n name: 'Cursor',\n options: {\n growSelectors: {\n type: String,\n default: 'a, a *, button, button *, [data-cursor-grow], [data-cursor-grow] *',\n },\n shrinkSelectors: {\n type: String,\n default: '[data-cursor-shrink], [data-cursor-shrink] *',\n },\n growTo: {\n type: Number,\n default: 2,\n },\n shrinkTo: {\n type: Number,\n default: 0.5,\n },\n translateDampFactor: {\n type: Number,\n default: 0.25,\n },\n growDampFactor: {\n type: Number,\n default: 0.25,\n },\n shrinkDampFactor: {\n type: Number,\n default: 0.25,\n },\n },\n };\n\n /**\n * @type {Number}\n */\n x = 0;\n\n /**\n * @type {Number}\n */\n y = 0;\n\n /**\n * @type {Number}\n */\n scale = 0;\n\n /**\n * @type {Number}\n */\n pointerX = 0;\n\n /**\n * @type {Number}\n */\n pointerY = 0;\n\n /**\n * @type {Number}\n */\n pointerScale = 0;\n\n /**\n * Mounted hook.\n * @return {void}\n */\n mounted() {\n this.x = 0;\n this.y = 0;\n this.scale = 0;\n this.pointerX = 0;\n this.pointerY = 0;\n this.pointerScale = 0;\n this.render({ x: this.x, y: this.y, scale: this.scale });\n }\n\n /**\n * Moved hook.\n *\n * @this {CursorInterface}\n *\n * @param {PointerServiceProps} options\n * @return {void}\n */\n moved({ event, x, y, isDown }) {\n if (!this.$services.has('ticked')) {\n this.$services.enable('ticked');\n }\n\n this.pointerX = x;\n this.pointerY = y;\n\n let scale = 1;\n\n if (!event) {\n this.pointerScale = scale;\n return;\n }\n\n const shouldGrow =\n (event.target instanceof Element && event.target.matches(this.$options.growSelectors)) ||\n false;\n const shouldReduce =\n isDown ||\n (event.target instanceof Element && event.target.matches(this.$options.shrinkSelectors)) ||\n false;\n\n if (shouldGrow) {\n scale = this.$options.growTo;\n }\n\n if (shouldReduce) {\n scale = this.$options.shrinkTo;\n }\n\n this.pointerScale = scale;\n }\n\n /**\n * RequestAnimationFrame hook.\n *\n * @this {CursorInterface}\n *\n * @return {void}\n */\n ticked() {\n this.x = damp(this.pointerX, this.x, this.$options.translateDampFactor);\n this.y = damp(this.pointerY, this.y, this.$options.translateDampFactor);\n this.scale = damp(\n this.pointerScale,\n this.scale,\n this.pointerScale < this.scale ? this.$options.shrinkDampFactor : this.$options.growDampFactor\n );\n\n this.render({ x: this.x, y: this.y, scale: this.scale });\n\n if (this.x === this.pointerX && this.y === this.pointerY && this.scale === this.pointerScale) {\n this.$services.disable('ticked');\n }\n }\n\n /**\n * Render the cursor.\n *\n * @param {Object} options\n * @param {Number} options.x\n * @param {Number} options.y\n * @param {Number} options.scale\n * @return {void}\n */\n render({ x, y, scale }) {\n const transform = matrix({\n translateX: x,\n translateY: y,\n scaleX: scale,\n scaleY: scale,\n });\n this.$el.style.transform = `translateZ(0) ${transform}`;\n }\n}\n"],"file":"Cursor.js"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @typedef {import('stylefire').Styler} Styler
|
|
3
|
-
* @typedef {import('../services/drag.js').DragServiceProps} DragServiceProps
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* @typedef {Draggable} DraggableInterface
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* Draggable class.
|
|
10
|
-
*
|
|
11
|
-
* @link https://jsfiddle.net/soulwire/znj683b9/
|
|
12
|
-
*/
|
|
13
|
-
export default class Draggable extends Base {
|
|
14
|
-
static config: {
|
|
15
|
-
name: string;
|
|
16
|
-
};
|
|
17
|
-
/**
|
|
18
|
-
* The origin of the element.
|
|
19
|
-
* @type {{ x: number, y: number }}
|
|
20
|
-
*/
|
|
21
|
-
elementOrigin: {
|
|
22
|
-
x: number;
|
|
23
|
-
y: number;
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* The element styler for performant style update.
|
|
27
|
-
* @type {Styler}
|
|
28
|
-
*/
|
|
29
|
-
styler: Styler;
|
|
30
|
-
/**
|
|
31
|
-
* Mounted hook.
|
|
32
|
-
* @return {void}
|
|
33
|
-
*/
|
|
34
|
-
mounted(): void;
|
|
35
|
-
/**
|
|
36
|
-
* Destroyed hook.
|
|
37
|
-
* @return {void}
|
|
38
|
-
*/
|
|
39
|
-
destroyed(): void;
|
|
40
|
-
/**
|
|
41
|
-
* Drag service hook.
|
|
42
|
-
* @param {DragServiceProps} props
|
|
43
|
-
*/
|
|
44
|
-
dragged(props: DragServiceProps): void;
|
|
45
|
-
}
|
|
46
|
-
export type Styler = import('stylefire').Styler;
|
|
47
|
-
export type DragServiceProps = import('../services/drag.js').DragServiceProps;
|
|
48
|
-
export type DraggableInterface = Draggable;
|
|
49
|
-
import Base from "../Base/index.js";
|
package/components/Draggable.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
import styler from 'stylefire';
|
|
3
|
-
import Base from '../Base/index.js';
|
|
4
|
-
import withDrag from '../decorators/withDrag.js';
|
|
5
|
-
export default class Draggable extends withDrag(Base) {
|
|
6
|
-
constructor() {
|
|
7
|
-
super(...arguments);
|
|
8
|
-
|
|
9
|
-
_defineProperty(this, "elementOrigin", {
|
|
10
|
-
x: 0,
|
|
11
|
-
y: 0
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
_defineProperty(this, "styler", void 0);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
mounted() {
|
|
18
|
-
this.styler = styler(this.$el);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
destroyed() {
|
|
22
|
-
this.styler = undefined;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
dragged(props) {
|
|
26
|
-
if (props.mode === 'start') {
|
|
27
|
-
this.elementOrigin.x = this.styler.get('x');
|
|
28
|
-
this.elementOrigin.y = this.styler.get('y');
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
this.styler.set({
|
|
33
|
-
x: this.elementOrigin.x + props.x - props.origin.x,
|
|
34
|
-
y: this.elementOrigin.y + props.y - props.origin.y
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
_defineProperty(Draggable, "config", {
|
|
41
|
-
name: 'DraggableElement'
|
|
42
|
-
});
|
|
43
|
-
//# sourceMappingURL=Draggable.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../packages/js-toolkit/components/Draggable.js"],"names":["styler","Base","withDrag","Draggable","x","y","mounted","$el","destroyed","undefined","dragged","props","mode","elementOrigin","get","set","origin","name"],"mappings":";AAAA,OAAOA,MAAP,MAAmB,WAAnB;AACA,OAAOC,IAAP,MAAiB,kBAAjB;AACA,OAAOC,QAAP,MAAqB,2BAArB;AAgBA,eAAe,MAAMC,SAAN,SAAwBD,QAAQ,CAACD,IAAD,CAAhC,CAAuC;AAAA;AAAA;;AAAA,2CASpC;AACdG,MAAAA,CAAC,EAAE,CADW;AAEdC,MAAAA,CAAC,EAAE;AAFW,KAToC;;AAAA;AAAA;;AAwBpDC,EAAAA,OAAO,GAAG;AACR,SAAKN,MAAL,GAAcA,MAAM,CAAC,KAAKO,GAAN,CAApB;AACD;;AAMDC,EAAAA,SAAS,GAAG;AACV,SAAKR,MAAL,GAAcS,SAAd;AACD;;AAMDC,EAAAA,OAAO,CAACC,KAAD,EAAQ;AACb,QAAIA,KAAK,CAACC,IAAN,KAAe,OAAnB,EAA4B;AAC1B,WAAKC,aAAL,CAAmBT,CAAnB,GAAuB,KAAKJ,MAAL,CAAYc,GAAZ,CAAgB,GAAhB,CAAvB;AACA,WAAKD,aAAL,CAAmBR,CAAnB,GAAuB,KAAKL,MAAL,CAAYc,GAAZ,CAAgB,GAAhB,CAAvB;AACA;AACD;;AAED,SAAKd,MAAL,CAAYe,GAAZ,CAAgB;AACdX,MAAAA,CAAC,EAAE,KAAKS,aAAL,CAAmBT,CAAnB,GAAuBO,KAAK,CAACP,CAA7B,GAAiCO,KAAK,CAACK,MAAN,CAAaZ,CADnC;AAEdC,MAAAA,CAAC,EAAE,KAAKQ,aAAL,CAAmBR,CAAnB,GAAuBM,KAAK,CAACN,CAA7B,GAAiCM,KAAK,CAACK,MAAN,CAAaX;AAFnC,KAAhB;AAID;;AAnDmD;;gBAAjCF,S,YACH;AACdc,EAAAA,IAAI,EAAE;AADQ,C","sourcesContent":["import styler from 'stylefire';\nimport Base from '../Base/index.js';\nimport withDrag from '../decorators/withDrag.js';\n\n/**\n * @typedef {import('stylefire').Styler} Styler\n * @typedef {import('../services/drag.js').DragServiceProps} DragServiceProps\n */\n\n/**\n * @typedef {Draggable} DraggableInterface\n */\n\n/**\n * Draggable class.\n *\n * @link https://jsfiddle.net/soulwire/znj683b9/\n */\nexport default class Draggable extends withDrag(Base) {\n static config = {\n name: 'DraggableElement',\n };\n\n /**\n * The origin of the element.\n * @type {{ x: number, y: number }}\n */\n elementOrigin = {\n x: 0,\n y: 0,\n };\n\n /**\n * The element styler for performant style update.\n * @type {Styler}\n */\n styler;\n\n /**\n * Mounted hook.\n * @return {void}\n */\n mounted() {\n this.styler = styler(this.$el);\n }\n\n /**\n * Destroyed hook.\n * @return {void}\n */\n destroyed() {\n this.styler = undefined;\n }\n\n /**\n * Drag service hook.\n * @param {DragServiceProps} props\n */\n dragged(props) {\n if (props.mode === 'start') {\n this.elementOrigin.x = this.styler.get('x');\n this.elementOrigin.y = this.styler.get('y');\n return;\n }\n\n this.styler.set({\n x: this.elementOrigin.x + props.x - props.origin.x,\n y: this.elementOrigin.y + props.y - props.origin.y,\n });\n }\n}\n"],"file":"Draggable.js"}
|
package/components/Modal.d.ts
DELETED
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @typedef {Object} ModalRefs
|
|
3
|
-
* @property {HTMLElement} close
|
|
4
|
-
* @property {HTMLElement} container
|
|
5
|
-
* @property {HTMLElement} content
|
|
6
|
-
* @property {HTMLElement} modal
|
|
7
|
-
* @property {HTMLElement} open
|
|
8
|
-
* @property {HTMLElement} overlay
|
|
9
|
-
*/
|
|
10
|
-
/**
|
|
11
|
-
* @typedef {import('../utils/css/styles.js').CssStyleObject} CssStyleObject
|
|
12
|
-
* @typedef {Partial<Record<'open'|'active'|'closed', string|CssStyleObject>>} ModalStates
|
|
13
|
-
* @typedef {Partial<Record<keyof ModalRefs, ModalStates>>} ModalStylesOption
|
|
14
|
-
*/
|
|
15
|
-
/**
|
|
16
|
-
* @typedef {Object} ModalOptions
|
|
17
|
-
* @property {String} move A selector where to move the modal to.
|
|
18
|
-
* @property {String} autofocus A selector for the element to set the focus to when the modal opens.
|
|
19
|
-
* @property {ModalStylesOption} styles The styles for the different state of the modal.
|
|
20
|
-
*/
|
|
21
|
-
/**
|
|
22
|
-
* @typedef {Object} ModalPrivateInterface
|
|
23
|
-
* @property {ModalRefs} $refs
|
|
24
|
-
* @property {ModalOptions} $options
|
|
25
|
-
* @property {Boolean} isOpen
|
|
26
|
-
* @property {Comment} refModalPlaceholder
|
|
27
|
-
* @property {HTMLElement} refModalParentBackup
|
|
28
|
-
* @property {Function} refModalUnbindGetRefFilter
|
|
29
|
-
*/
|
|
30
|
-
/**
|
|
31
|
-
* @typedef {Modal & ModalPrivateInterface} ModalInterface
|
|
32
|
-
*/
|
|
33
|
-
/**
|
|
34
|
-
* Modal class.
|
|
35
|
-
*/
|
|
36
|
-
export default class Modal extends Base {
|
|
37
|
-
/**
|
|
38
|
-
* Modal options.
|
|
39
|
-
*/
|
|
40
|
-
static config: {
|
|
41
|
-
name: string;
|
|
42
|
-
refs: string[];
|
|
43
|
-
options: {
|
|
44
|
-
move: StringConstructor;
|
|
45
|
-
autofocus: {
|
|
46
|
-
type: StringConstructor;
|
|
47
|
-
default: string;
|
|
48
|
-
};
|
|
49
|
-
styles: {
|
|
50
|
-
type: ObjectConstructor;
|
|
51
|
-
/**
|
|
52
|
-
* @return {ModalStylesOption}
|
|
53
|
-
*/
|
|
54
|
-
default: () => ModalStylesOption;
|
|
55
|
-
};
|
|
56
|
-
};
|
|
57
|
-
};
|
|
58
|
-
/**
|
|
59
|
-
* Open the modal on click on the `open` ref.
|
|
60
|
-
*
|
|
61
|
-
* @return {Function} The component's `open` method.
|
|
62
|
-
*/
|
|
63
|
-
get onOpenClick(): Function;
|
|
64
|
-
/**
|
|
65
|
-
* Close the modal on click on the `close` ref.
|
|
66
|
-
*
|
|
67
|
-
* @return {Function} The component's `close` method.
|
|
68
|
-
*/
|
|
69
|
-
get onCloseClick(): Function;
|
|
70
|
-
/**
|
|
71
|
-
* Close the modal on click on the `overlay` ref.
|
|
72
|
-
*
|
|
73
|
-
* @return {Function} The component's `close` method.
|
|
74
|
-
*/
|
|
75
|
-
get onOverlayClick(): Function;
|
|
76
|
-
/**
|
|
77
|
-
* Initialize the component's behaviours.
|
|
78
|
-
*
|
|
79
|
-
* @this {ModalInterface}
|
|
80
|
-
*/
|
|
81
|
-
mounted(): ModalInterface;
|
|
82
|
-
isOpen: boolean;
|
|
83
|
-
refModalPlaceholder: Comment;
|
|
84
|
-
refModalParentBackup: any;
|
|
85
|
-
refModalUnbindGetRefFilter: any;
|
|
86
|
-
/**
|
|
87
|
-
* Unbind all events on destroy.
|
|
88
|
-
*
|
|
89
|
-
* @this {ModalInterface}
|
|
90
|
-
* @return {Modal} The Modal instance.
|
|
91
|
-
*/
|
|
92
|
-
destroyed(): Modal;
|
|
93
|
-
/**
|
|
94
|
-
* Close the modal on `ESC` and trap the tabulation.
|
|
95
|
-
*
|
|
96
|
-
* @this {ModalInterface}
|
|
97
|
-
* @param {Object} options
|
|
98
|
-
* @param {KeyboardEvent} options.event The original keyboard event
|
|
99
|
-
* @param {Boolean} options.isUp Is it a keyup event?
|
|
100
|
-
* @param {Boolean} options.isDown Is it a keydown event?
|
|
101
|
-
* @param {Boolean} options.ESC Is it the ESC key?
|
|
102
|
-
*/
|
|
103
|
-
keyed({ event, isUp, isDown, ESC }: {
|
|
104
|
-
event: KeyboardEvent;
|
|
105
|
-
isUp: boolean;
|
|
106
|
-
isDown: boolean;
|
|
107
|
-
ESC: boolean;
|
|
108
|
-
}): void;
|
|
109
|
-
/**
|
|
110
|
-
* Open the modal.
|
|
111
|
-
*
|
|
112
|
-
* @this {ModalInterface}
|
|
113
|
-
* @return {Promise<ModalInterface>} The Modal instance.
|
|
114
|
-
*/
|
|
115
|
-
open(): Promise<ModalInterface>;
|
|
116
|
-
/**
|
|
117
|
-
* Close the modal.
|
|
118
|
-
*
|
|
119
|
-
* @this {ModalInterface}
|
|
120
|
-
* @return {Promise<ModalInterface>} The Modal instance.
|
|
121
|
-
*/
|
|
122
|
-
close(): Promise<ModalInterface>;
|
|
123
|
-
}
|
|
124
|
-
export type ModalRefs = {
|
|
125
|
-
close: HTMLElement;
|
|
126
|
-
container: HTMLElement;
|
|
127
|
-
content: HTMLElement;
|
|
128
|
-
modal: HTMLElement;
|
|
129
|
-
open: HTMLElement;
|
|
130
|
-
overlay: HTMLElement;
|
|
131
|
-
};
|
|
132
|
-
export type CssStyleObject = import('../utils/css/styles.js').CssStyleObject;
|
|
133
|
-
export type ModalStates = Partial<Record<'open' | 'active' | 'closed', string | CssStyleObject>>;
|
|
134
|
-
export type ModalStylesOption = Partial<Record<keyof ModalRefs, ModalStates>>;
|
|
135
|
-
export type ModalOptions = {
|
|
136
|
-
/**
|
|
137
|
-
* A selector where to move the modal to.
|
|
138
|
-
*/
|
|
139
|
-
move: string;
|
|
140
|
-
/**
|
|
141
|
-
* A selector for the element to set the focus to when the modal opens.
|
|
142
|
-
*/
|
|
143
|
-
autofocus: string;
|
|
144
|
-
/**
|
|
145
|
-
* The styles for the different state of the modal.
|
|
146
|
-
*/
|
|
147
|
-
styles: ModalStylesOption;
|
|
148
|
-
};
|
|
149
|
-
export type ModalPrivateInterface = {
|
|
150
|
-
$refs: ModalRefs;
|
|
151
|
-
$options: ModalOptions;
|
|
152
|
-
isOpen: boolean;
|
|
153
|
-
refModalPlaceholder: Comment;
|
|
154
|
-
refModalParentBackup: HTMLElement;
|
|
155
|
-
refModalUnbindGetRefFilter: Function;
|
|
156
|
-
};
|
|
157
|
-
export type ModalInterface = Modal & ModalPrivateInterface;
|
|
158
|
-
import Base from "../Base/index.js";
|
package/components/Modal.js
DELETED
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
-
import Base from '../Base/index.js';
|
|
4
|
-
import transition from '../utils/css/transition.js';
|
|
5
|
-
import { trap, untrap, saveActiveElement } from '../utils/focusTrap.js';
|
|
6
|
-
export default class Modal extends Base {
|
|
7
|
-
get onOpenClick() {
|
|
8
|
-
return this.open;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
get onCloseClick() {
|
|
12
|
-
return this.close;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
get onOverlayClick() {
|
|
16
|
-
return this.close;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
mounted() {
|
|
20
|
-
this.isOpen = false;
|
|
21
|
-
this.close();
|
|
22
|
-
|
|
23
|
-
if (this.$options.move) {
|
|
24
|
-
var target = document.querySelector(this.$options.move) || document.body;
|
|
25
|
-
var refsBackup = this.$refs;
|
|
26
|
-
this.refModalPlaceholder = document.createComment('');
|
|
27
|
-
this.refModalParentBackup = this.$refs.modal.parentElement || this.$el;
|
|
28
|
-
this.refModalParentBackup.insertBefore(this.refModalPlaceholder, this.$refs.modal);
|
|
29
|
-
this.refModalUnbindGetRefFilter = this.$on('get:refs', refs => {
|
|
30
|
-
Object.entries(refsBackup).forEach(_ref => {
|
|
31
|
-
var [key, ref] = _ref;
|
|
32
|
-
|
|
33
|
-
if (!refs[key]) {
|
|
34
|
-
refs[key] = ref;
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
target.appendChild(this.$refs.modal);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
return this;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
destroyed() {
|
|
45
|
-
this.close();
|
|
46
|
-
|
|
47
|
-
if (this.$options.move && this.refModalParentBackup) {
|
|
48
|
-
this.refModalParentBackup.insertBefore(this.$refs.modal, this.refModalPlaceholder);
|
|
49
|
-
this.refModalUnbindGetRefFilter();
|
|
50
|
-
this.refModalPlaceholder.remove();
|
|
51
|
-
delete this.refModalPlaceholder;
|
|
52
|
-
delete this.refModalParentBackup;
|
|
53
|
-
delete this.refModalUnbindGetRefFilter;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
return this;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
keyed(_ref2) {
|
|
60
|
-
var {
|
|
61
|
-
event,
|
|
62
|
-
isUp,
|
|
63
|
-
isDown,
|
|
64
|
-
ESC
|
|
65
|
-
} = _ref2;
|
|
66
|
-
|
|
67
|
-
if (!this.isOpen) {
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
if (isDown) {
|
|
72
|
-
trap(this.$refs.modal, event);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
if (ESC && isUp) {
|
|
76
|
-
this.close();
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
open() {
|
|
81
|
-
var _this = this;
|
|
82
|
-
|
|
83
|
-
return _asyncToGenerator(function* () {
|
|
84
|
-
if (_this.isOpen) {
|
|
85
|
-
return Promise.resolve(_this);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
_this.$refs.modal.setAttribute('aria-hidden', 'false');
|
|
89
|
-
|
|
90
|
-
document.documentElement.style.overflow = 'hidden';
|
|
91
|
-
_this.isOpen = true;
|
|
92
|
-
|
|
93
|
-
_this.$emit('open');
|
|
94
|
-
|
|
95
|
-
var refs = _this.$refs;
|
|
96
|
-
return Promise.all(Object.entries(_this.$options.styles).map(_ref3 => {
|
|
97
|
-
var [refName, {
|
|
98
|
-
open,
|
|
99
|
-
active,
|
|
100
|
-
closed
|
|
101
|
-
} = {
|
|
102
|
-
open: '',
|
|
103
|
-
active: '',
|
|
104
|
-
closed: ''
|
|
105
|
-
}] = _ref3;
|
|
106
|
-
return transition(refs[refName], {
|
|
107
|
-
from: closed,
|
|
108
|
-
active,
|
|
109
|
-
to: open
|
|
110
|
-
}, 'keep');
|
|
111
|
-
})).then(() => {
|
|
112
|
-
if (_this.$options.autofocus && _this.$refs.modal.querySelector(_this.$options.autofocus)) {
|
|
113
|
-
saveActiveElement();
|
|
114
|
-
|
|
115
|
-
var autofocusElement = _this.$refs.modal.querySelector(_this.$options.autofocus);
|
|
116
|
-
|
|
117
|
-
autofocusElement.focus();
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
return Promise.resolve(_this);
|
|
121
|
-
});
|
|
122
|
-
})();
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
close() {
|
|
126
|
-
var _this2 = this;
|
|
127
|
-
|
|
128
|
-
return _asyncToGenerator(function* () {
|
|
129
|
-
if (!_this2.isOpen) {
|
|
130
|
-
return Promise.resolve(_this2);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
_this2.$refs.modal.setAttribute('aria-hidden', 'true');
|
|
134
|
-
|
|
135
|
-
document.documentElement.style.overflow = '';
|
|
136
|
-
_this2.isOpen = false;
|
|
137
|
-
untrap();
|
|
138
|
-
|
|
139
|
-
_this2.$emit('close');
|
|
140
|
-
|
|
141
|
-
var refs = _this2.$refs;
|
|
142
|
-
return Promise.all(Object.entries(_this2.$options.styles).map(_ref4 => {
|
|
143
|
-
var [refName, {
|
|
144
|
-
open,
|
|
145
|
-
active,
|
|
146
|
-
closed
|
|
147
|
-
} = {
|
|
148
|
-
open: '',
|
|
149
|
-
active: '',
|
|
150
|
-
closed: ''
|
|
151
|
-
}] = _ref4;
|
|
152
|
-
return transition(refs[refName], {
|
|
153
|
-
from: open,
|
|
154
|
-
active,
|
|
155
|
-
to: closed
|
|
156
|
-
}, 'keep');
|
|
157
|
-
})).then(() => Promise.resolve(_this2));
|
|
158
|
-
})();
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
_defineProperty(Modal, "config", {
|
|
164
|
-
name: 'Modal',
|
|
165
|
-
refs: ['close', 'container', 'content', 'modal', 'open', 'overlay'],
|
|
166
|
-
options: {
|
|
167
|
-
move: String,
|
|
168
|
-
autofocus: {
|
|
169
|
-
type: String,
|
|
170
|
-
default: '[autofocus]'
|
|
171
|
-
},
|
|
172
|
-
styles: {
|
|
173
|
-
type: Object,
|
|
174
|
-
default: () => ({
|
|
175
|
-
modal: {
|
|
176
|
-
closed: {
|
|
177
|
-
opacity: '0',
|
|
178
|
-
pointerEvents: 'none',
|
|
179
|
-
visibility: 'hidden'
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
})
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
});
|
|
186
|
-
//# sourceMappingURL=Modal.js.map
|
package/components/Modal.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../packages/js-toolkit/components/Modal.js"],"names":["Base","transition","trap","untrap","saveActiveElement","Modal","onOpenClick","open","onCloseClick","close","onOverlayClick","mounted","isOpen","$options","move","target","document","querySelector","body","refsBackup","$refs","refModalPlaceholder","createComment","refModalParentBackup","modal","parentElement","$el","insertBefore","refModalUnbindGetRefFilter","$on","refs","Object","entries","forEach","key","ref","appendChild","destroyed","remove","keyed","event","isUp","isDown","ESC","Promise","resolve","setAttribute","documentElement","style","overflow","$emit","all","styles","map","refName","active","closed","from","to","then","autofocus","autofocusElement","focus","name","options","String","type","default","opacity","pointerEvents","visibility"],"mappings":";;AAAA,OAAOA,IAAP,MAAiB,kBAAjB;AACA,OAAOC,UAAP,MAAuB,4BAAvB;AACA,SAASC,IAAT,EAAeC,MAAf,EAAuBC,iBAAvB,QAAgD,uBAAhD;AA0CA,eAAe,MAAMC,KAAN,SAAoBL,IAApB,CAAyB;AAiCvB,MAAXM,WAAW,GAAG;AAChB,WAAO,KAAKC,IAAZ;AACD;;AAOe,MAAZC,YAAY,GAAG;AACjB,WAAO,KAAKC,KAAZ;AACD;;AAOiB,MAAdC,cAAc,GAAG;AACnB,WAAO,KAAKD,KAAZ;AACD;;AAODE,EAAAA,OAAO,GAAG;AACR,SAAKC,MAAL,GAAc,KAAd;AACA,SAAKH,KAAL;;AAEA,QAAI,KAAKI,QAAL,CAAcC,IAAlB,EAAwB;AACtB,UAAMC,MAAM,GAAGC,QAAQ,CAACC,aAAT,CAAuB,KAAKJ,QAAL,CAAcC,IAArC,KAA8CE,QAAQ,CAACE,IAAtE;AACA,UAAMC,UAAU,GAAG,KAAKC,KAAxB;AAEA,WAAKC,mBAAL,GAA2BL,QAAQ,CAACM,aAAT,CAAuB,EAAvB,CAA3B;AACA,WAAKC,oBAAL,GAA4B,KAAKH,KAAL,CAAWI,KAAX,CAAiBC,aAAjB,IAAkC,KAAKC,GAAnE;AACA,WAAKH,oBAAL,CAA0BI,YAA1B,CAAuC,KAAKN,mBAA5C,EAAiE,KAAKD,KAAL,CAAWI,KAA5E;AAEA,WAAKI,0BAAL,GAAkC,KAAKC,GAAL,CAChC,UADgC,EAM/BC,IAAD,IAAU;AACRC,QAAAA,MAAM,CAACC,OAAP,CAAeb,UAAf,EAA2Bc,OAA3B,CAAmC,QAAgB;AAAA,cAAf,CAACC,GAAD,EAAMC,GAAN,CAAe;;AACjD,cAAI,CAACL,IAAI,CAACI,GAAD,CAAT,EAAgB;AACdJ,YAAAA,IAAI,CAACI,GAAD,CAAJ,GAAYC,GAAZ;AACD;AACF,SAJD;AAKD,OAZ+B,CAAlC;AAcApB,MAAAA,MAAM,CAACqB,WAAP,CAAmB,KAAKhB,KAAL,CAAWI,KAA9B;AACD;;AAED,WAAO,IAAP;AACD;;AAQDa,EAAAA,SAAS,GAAG;AACV,SAAK5B,KAAL;;AAEA,QAAI,KAAKI,QAAL,CAAcC,IAAd,IAAsB,KAAKS,oBAA/B,EAAqD;AACnD,WAAKA,oBAAL,CAA0BI,YAA1B,CAAuC,KAAKP,KAAL,CAAWI,KAAlD,EAAyD,KAAKH,mBAA9D;AACA,WAAKO,0BAAL;AACA,WAAKP,mBAAL,CAAyBiB,MAAzB;AACA,aAAO,KAAKjB,mBAAZ;AACA,aAAO,KAAKE,oBAAZ;AACA,aAAO,KAAKK,0BAAZ;AACD;;AAED,WAAO,IAAP;AACD;;AAYDW,EAAAA,KAAK,QAA+B;AAAA,QAA9B;AAAEC,MAAAA,KAAF;AAASC,MAAAA,IAAT;AAAeC,MAAAA,MAAf;AAAuBC,MAAAA;AAAvB,KAA8B;;AAClC,QAAI,CAAC,KAAK/B,MAAV,EAAkB;AAChB;AACD;;AAED,QAAI8B,MAAJ,EAAY;AACVxC,MAAAA,IAAI,CAAC,KAAKkB,KAAL,CAAWI,KAAZ,EAAmBgB,KAAnB,CAAJ;AACD;;AAED,QAAIG,GAAG,IAAIF,IAAX,EAAiB;AACf,WAAKhC,KAAL;AACD;AACF;;AAQKF,EAAAA,IAAI,GAAG;AAAA;;AAAA;AACX,UAAI,KAAI,CAACK,MAAT,EAAiB;AACf,eAAOgC,OAAO,CAACC,OAAR,CAAgB,KAAhB,CAAP;AACD;;AAED,MAAA,KAAI,CAACzB,KAAL,CAAWI,KAAX,CAAiBsB,YAAjB,CAA8B,aAA9B,EAA6C,OAA7C;;AACA9B,MAAAA,QAAQ,CAAC+B,eAAT,CAAyBC,KAAzB,CAA+BC,QAA/B,GAA0C,QAA1C;AAEA,MAAA,KAAI,CAACrC,MAAL,GAAc,IAAd;;AACA,MAAA,KAAI,CAACsC,KAAL,CAAW,MAAX;;AAGA,UAAMpB,IAAI,GAAG,KAAI,CAACV,KAAlB;AAEA,aAAOwB,OAAO,CAACO,GAAR,CACLpB,MAAM,CAACC,OAAP,CAAe,KAAI,CAACnB,QAAL,CAAcuC,MAA7B,EAAqCC,GAArC,CACE;AAAA,YAAC,CAACC,OAAD,EAAU;AAAE/C,UAAAA,IAAF;AAAQgD,UAAAA,MAAR;AAAgBC,UAAAA;AAAhB,YAA2B;AAAEjD,UAAAA,IAAI,EAAE,EAAR;AAAYgD,UAAAA,MAAM,EAAE,EAApB;AAAwBC,UAAAA,MAAM,EAAE;AAAhC,SAArC,CAAD;AAAA,eACEvD,UAAU,CACR6B,IAAI,CAACwB,OAAD,CADI,EAER;AACEG,UAAAA,IAAI,EAAED,MADR;AAEED,UAAAA,MAFF;AAGEG,UAAAA,EAAE,EAAEnD;AAHN,SAFQ,EAOR,MAPQ,CADZ;AAAA,OADF,CADK,EAaLoD,IAbK,CAaA,MAAM;AACX,YAAI,KAAI,CAAC9C,QAAL,CAAc+C,SAAd,IAA2B,KAAI,CAACxC,KAAL,CAAWI,KAAX,CAAiBP,aAAjB,CAA+B,KAAI,CAACJ,QAAL,CAAc+C,SAA7C,CAA/B,EAAwF;AACtFxD,UAAAA,iBAAiB;;AAEjB,cAAMyD,gBAAgB,GAAG,KAAI,CAACzC,KAAL,CAAWI,KAAX,CAAiBP,aAAjB,CAA+B,KAAI,CAACJ,QAAL,CAAc+C,SAA7C,CAAzB;;AACAC,UAAAA,gBAAgB,CAACC,KAAjB;AACD;;AACD,eAAOlB,OAAO,CAACC,OAAR,CAAgB,KAAhB,CAAP;AACD,OArBM,CAAP;AAdW;AAoCZ;;AAQKpC,EAAAA,KAAK,GAAG;AAAA;;AAAA;AACZ,UAAI,CAAC,MAAI,CAACG,MAAV,EAAkB;AAChB,eAAOgC,OAAO,CAACC,OAAR,CAAgB,MAAhB,CAAP;AACD;;AAED,MAAA,MAAI,CAACzB,KAAL,CAAWI,KAAX,CAAiBsB,YAAjB,CAA8B,aAA9B,EAA6C,MAA7C;;AACA9B,MAAAA,QAAQ,CAAC+B,eAAT,CAAyBC,KAAzB,CAA+BC,QAA/B,GAA0C,EAA1C;AAEA,MAAA,MAAI,CAACrC,MAAL,GAAc,KAAd;AACAT,MAAAA,MAAM;;AACN,MAAA,MAAI,CAAC+C,KAAL,CAAW,OAAX;;AAGA,UAAMpB,IAAI,GAAG,MAAI,CAACV,KAAlB;AAEA,aAAOwB,OAAO,CAACO,GAAR,CACLpB,MAAM,CAACC,OAAP,CAAe,MAAI,CAACnB,QAAL,CAAcuC,MAA7B,EAAqCC,GAArC,CACE;AAAA,YAAC,CAACC,OAAD,EAAU;AAAE/C,UAAAA,IAAF;AAAQgD,UAAAA,MAAR;AAAgBC,UAAAA;AAAhB,YAA2B;AAAEjD,UAAAA,IAAI,EAAE,EAAR;AAAYgD,UAAAA,MAAM,EAAE,EAApB;AAAwBC,UAAAA,MAAM,EAAE;AAAhC,SAArC,CAAD;AAAA,eACEvD,UAAU,CACR6B,IAAI,CAACwB,OAAD,CADI,EAER;AACEG,UAAAA,IAAI,EAAElD,IADR;AAEEgD,UAAAA,MAFF;AAGEG,UAAAA,EAAE,EAAEF;AAHN,SAFQ,EAOR,MAPQ,CADZ;AAAA,OADF,CADK,EAaLG,IAbK,CAaA,MAAMf,OAAO,CAACC,OAAR,CAAgB,MAAhB,CAbN,CAAP;AAfY;AA6Bb;;AAxNqC;;gBAAnBxC,K,YAIH;AACd0D,EAAAA,IAAI,EAAE,OADQ;AAEdjC,EAAAA,IAAI,EAAE,CAAC,OAAD,EAAU,WAAV,EAAuB,SAAvB,EAAkC,OAAlC,EAA2C,MAA3C,EAAmD,SAAnD,CAFQ;AAGdkC,EAAAA,OAAO,EAAE;AACPlD,IAAAA,IAAI,EAAEmD,MADC;AAEPL,IAAAA,SAAS,EAAE;AAAEM,MAAAA,IAAI,EAAED,MAAR;AAAgBE,MAAAA,OAAO,EAAE;AAAzB,KAFJ;AAGPf,IAAAA,MAAM,EAAE;AACNc,MAAAA,IAAI,EAAEnC,MADA;AAKNoC,MAAAA,OAAO,EAAE,OAAO;AACd3C,QAAAA,KAAK,EAAE;AACLgC,UAAAA,MAAM,EAAE;AACNY,YAAAA,OAAO,EAAE,GADH;AAENC,YAAAA,aAAa,EAAE,MAFT;AAGNC,YAAAA,UAAU,EAAE;AAHN;AADH;AADO,OAAP;AALH;AAHD;AAHK,C","sourcesContent":["import Base from '../Base/index.js';\nimport transition from '../utils/css/transition.js';\nimport { trap, untrap, saveActiveElement } from '../utils/focusTrap.js';\n\n/**\n * @typedef {Object} ModalRefs\n * @property {HTMLElement} close\n * @property {HTMLElement} container\n * @property {HTMLElement} content\n * @property {HTMLElement} modal\n * @property {HTMLElement} open\n * @property {HTMLElement} overlay\n */\n\n/**\n * @typedef {import('../utils/css/styles.js').CssStyleObject} CssStyleObject\n * @typedef {Partial<Record<'open'|'active'|'closed', string|CssStyleObject>>} ModalStates\n * @typedef {Partial<Record<keyof ModalRefs, ModalStates>>} ModalStylesOption\n */\n\n/**\n * @typedef {Object} ModalOptions\n * @property {String} move A selector where to move the modal to.\n * @property {String} autofocus A selector for the element to set the focus to when the modal opens.\n * @property {ModalStylesOption} styles The styles for the different state of the modal.\n */\n\n/**\n * @typedef {Object} ModalPrivateInterface\n * @property {ModalRefs} $refs\n * @property {ModalOptions} $options\n * @property {Boolean} isOpen\n * @property {Comment} refModalPlaceholder\n * @property {HTMLElement} refModalParentBackup\n * @property {Function} refModalUnbindGetRefFilter\n */\n\n/**\n * @typedef {Modal & ModalPrivateInterface} ModalInterface\n */\n\n/**\n * Modal class.\n */\nexport default class Modal extends Base {\n /**\n * Modal options.\n */\n static config = {\n name: 'Modal',\n refs: ['close', 'container', 'content', 'modal', 'open', 'overlay'],\n options: {\n move: String,\n autofocus: { type: String, default: '[autofocus]' },\n styles: {\n type: Object,\n /**\n * @return {ModalStylesOption}\n */\n default: () => ({\n modal: {\n closed: {\n opacity: '0',\n pointerEvents: 'none',\n visibility: 'hidden',\n },\n },\n }),\n },\n },\n };\n\n /**\n * Open the modal on click on the `open` ref.\n *\n * @return {Function} The component's `open` method.\n */\n get onOpenClick() {\n return this.open;\n }\n\n /**\n * Close the modal on click on the `close` ref.\n *\n * @return {Function} The component's `close` method.\n */\n get onCloseClick() {\n return this.close;\n }\n\n /**\n * Close the modal on click on the `overlay` ref.\n *\n * @return {Function} The component's `close` method.\n */\n get onOverlayClick() {\n return this.close;\n }\n\n /**\n * Initialize the component's behaviours.\n *\n * @this {ModalInterface}\n */\n mounted() {\n this.isOpen = false;\n this.close();\n\n if (this.$options.move) {\n const target = document.querySelector(this.$options.move) || document.body;\n const refsBackup = this.$refs;\n\n this.refModalPlaceholder = document.createComment('');\n this.refModalParentBackup = this.$refs.modal.parentElement || this.$el;\n this.refModalParentBackup.insertBefore(this.refModalPlaceholder, this.$refs.modal);\n\n this.refModalUnbindGetRefFilter = this.$on(\n 'get:refs',\n /**\n * @param {ModalRefs} refs\n */\n // @ts-ignore\n (refs) => {\n Object.entries(refsBackup).forEach(([key, ref]) => {\n if (!refs[key]) {\n refs[key] = ref;\n }\n });\n }\n );\n target.appendChild(this.$refs.modal);\n }\n\n return this;\n }\n\n /**\n * Unbind all events on destroy.\n *\n * @this {ModalInterface}\n * @return {Modal} The Modal instance.\n */\n destroyed() {\n this.close();\n\n if (this.$options.move && this.refModalParentBackup) {\n this.refModalParentBackup.insertBefore(this.$refs.modal, this.refModalPlaceholder);\n this.refModalUnbindGetRefFilter();\n this.refModalPlaceholder.remove();\n delete this.refModalPlaceholder;\n delete this.refModalParentBackup;\n delete this.refModalUnbindGetRefFilter;\n }\n\n return this;\n }\n\n /**\n * Close the modal on `ESC` and trap the tabulation.\n *\n * @this {ModalInterface}\n * @param {Object} options\n * @param {KeyboardEvent} options.event The original keyboard event\n * @param {Boolean} options.isUp Is it a keyup event?\n * @param {Boolean} options.isDown Is it a keydown event?\n * @param {Boolean} options.ESC Is it the ESC key?\n */\n keyed({ event, isUp, isDown, ESC }) {\n if (!this.isOpen) {\n return;\n }\n\n if (isDown) {\n trap(this.$refs.modal, event);\n }\n\n if (ESC && isUp) {\n this.close();\n }\n }\n\n /**\n * Open the modal.\n *\n * @this {ModalInterface}\n * @return {Promise<ModalInterface>} The Modal instance.\n */\n async open() {\n if (this.isOpen) {\n return Promise.resolve(this);\n }\n\n this.$refs.modal.setAttribute('aria-hidden', 'false');\n document.documentElement.style.overflow = 'hidden';\n\n this.isOpen = true;\n this.$emit('open');\n\n /** @type {ModalRefs} */\n const refs = this.$refs;\n\n return Promise.all(\n Object.entries(this.$options.styles).map(\n ([refName, { open, active, closed } = { open: '', active: '', closed: '' }]) =>\n transition(\n refs[refName],\n {\n from: closed,\n active,\n to: open,\n },\n 'keep'\n )\n )\n ).then(() => {\n if (this.$options.autofocus && this.$refs.modal.querySelector(this.$options.autofocus)) {\n saveActiveElement();\n /** @type {HTMLElement} */\n const autofocusElement = this.$refs.modal.querySelector(this.$options.autofocus);\n autofocusElement.focus();\n }\n return Promise.resolve(this);\n });\n }\n\n /**\n * Close the modal.\n *\n * @this {ModalInterface}\n * @return {Promise<ModalInterface>} The Modal instance.\n */\n async close() {\n if (!this.isOpen) {\n return Promise.resolve(this);\n }\n\n this.$refs.modal.setAttribute('aria-hidden', 'true');\n document.documentElement.style.overflow = '';\n\n this.isOpen = false;\n untrap();\n this.$emit('close');\n\n /** @type {ModalRefs} */\n const refs = this.$refs;\n\n return Promise.all(\n Object.entries(this.$options.styles).map(\n ([refName, { open, active, closed } = { open: '', active: '', closed: '' }]) =>\n transition(\n refs[refName],\n {\n from: open,\n active,\n to: closed,\n },\n 'keep'\n )\n )\n ).then(() => Promise.resolve(this));\n }\n}\n"],"file":"Modal.js"}
|