@studiometa/js-toolkit 1.7.2 → 2.0.0-alpha.10

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.
Files changed (237) hide show
  1. package/Base/index.d.ts +217 -0
  2. package/Base/index.js +237 -0
  3. package/Base/managers/ChildrenManager.d.ts +108 -0
  4. package/Base/managers/ChildrenManager.js +124 -0
  5. package/Base/managers/EventsManager.d.ts +190 -0
  6. package/Base/managers/EventsManager.js +195 -0
  7. package/Base/managers/OptionsManager.d.ts +120 -0
  8. package/Base/managers/OptionsManager.js +180 -0
  9. package/Base/managers/RefsManager.d.ts +84 -0
  10. package/Base/managers/RefsManager.js +83 -0
  11. package/{abstracts/Base/classes/Services.d.ts → Base/managers/ServicesManager.d.ts} +22 -7
  12. package/Base/managers/ServicesManager.js +115 -0
  13. package/{abstracts/Base → Base}/utils.d.ts +0 -30
  14. package/Base/utils.js +43 -0
  15. package/README.md +12 -70
  16. package/decorators/index.js +1 -2
  17. package/decorators/withBreakpointManager.d.ts +5 -5
  18. package/decorators/withBreakpointManager.js +41 -79
  19. package/decorators/withBreakpointObserver.d.ts +4 -4
  20. package/decorators/withBreakpointObserver.js +54 -77
  21. package/decorators/withDrag.d.ts +6 -6
  22. package/decorators/withDrag.js +17 -41
  23. package/decorators/withExtraConfig.d.ts +6 -6
  24. package/decorators/withExtraConfig.js +2 -24
  25. package/decorators/withIntersectionObserver.d.ts +4 -4
  26. package/decorators/withIntersectionObserver.js +17 -60
  27. package/decorators/withMountWhenInView.d.ts +8 -8
  28. package/decorators/withMountWhenInView.js +23 -51
  29. package/helpers/createApp.d.ts +4 -4
  30. package/helpers/createApp.js +10 -12
  31. package/helpers/importOnInteraction.d.ts +6 -6
  32. package/helpers/importOnInteraction.js +7 -8
  33. package/helpers/importWhenIdle.d.ts +4 -4
  34. package/helpers/importWhenIdle.js +7 -8
  35. package/helpers/importWhenVisible.d.ts +6 -6
  36. package/helpers/importWhenVisible.js +9 -16
  37. package/helpers/index.d.ts +1 -3
  38. package/helpers/index.js +1 -4
  39. package/helpers/utils.js +2 -3
  40. package/index.d.ts +19 -5
  41. package/index.js +5 -6
  42. package/index.modern.js +1 -3230
  43. package/index.umd.js +1 -3586
  44. package/package.json +3 -6
  45. package/{abstracts → services}/Service.d.ts +0 -0
  46. package/services/Service.js +63 -0
  47. package/services/drag.js +144 -180
  48. package/services/index.js +1 -2
  49. package/services/key.js +56 -98
  50. package/services/load.d.ts +1 -1
  51. package/services/load.js +22 -51
  52. package/services/pointer.js +118 -157
  53. package/services/raf.js +37 -65
  54. package/services/resize.js +46 -98
  55. package/services/scroll.js +81 -120
  56. package/utils/collide/boundingRectToCircle.js +7 -6
  57. package/utils/collide/collideCircleCircle.js +1 -2
  58. package/utils/collide/collideCircleRect.js +1 -2
  59. package/utils/collide/collidePointCircle.js +1 -2
  60. package/utils/collide/collidePointRect.js +1 -2
  61. package/utils/collide/collideRectRect.js +1 -2
  62. package/utils/collide/index.js +1 -2
  63. package/utils/css/classes.js +2 -3
  64. package/utils/css/index.js +1 -2
  65. package/utils/css/matrix.js +1 -2
  66. package/utils/css/styles.js +3 -8
  67. package/utils/css/transition.js +67 -140
  68. package/utils/debounce.js +3 -4
  69. package/utils/focusTrap.js +4 -5
  70. package/utils/history.js +12 -19
  71. package/utils/index.d.ts +2 -1
  72. package/utils/index.js +2 -2
  73. package/utils/keyCodes.js +1 -2
  74. package/utils/math/clamp.js +1 -2
  75. package/utils/math/clamp01.js +1 -2
  76. package/utils/math/damp.js +1 -2
  77. package/utils/math/index.js +1 -2
  78. package/utils/math/inertiaFinalValue.js +1 -2
  79. package/utils/math/lerp.js +1 -2
  80. package/utils/math/map.js +1 -2
  81. package/utils/math/round.js +1 -2
  82. package/utils/memoize.d.ts +30 -0
  83. package/utils/memoize.js +30 -0
  84. package/utils/nextFrame.js +4 -9
  85. package/utils/object/autoBind.js +11 -19
  86. package/utils/object/getAllProperties.d.ts +6 -3
  87. package/utils/object/getAllProperties.js +10 -8
  88. package/utils/object/index.js +1 -2
  89. package/utils/object/isObject.js +2 -4
  90. package/utils/string/index.js +1 -2
  91. package/utils/string/withLeadingCharacters.js +1 -2
  92. package/utils/string/withLeadingSlash.js +1 -2
  93. package/utils/string/withTrailingCharacters.js +1 -2
  94. package/utils/string/withTrailingSlash.js +1 -2
  95. package/utils/string/withoutLeadingCharacters.js +1 -2
  96. package/utils/string/withoutLeadingCharactersRecursive.js +1 -2
  97. package/utils/string/withoutLeadingSlash.js +1 -2
  98. package/utils/string/withoutTrailingCharacters.js +1 -2
  99. package/utils/string/withoutTrailingCharactersRecursive.js +1 -2
  100. package/utils/string/withoutTrailingSlash.js +1 -2
  101. package/utils/throttle.js +2 -3
  102. package/abstracts/Base/children.d.ts +0 -16
  103. package/abstracts/Base/children.js +0 -66
  104. package/abstracts/Base/children.js.map +0 -1
  105. package/abstracts/Base/classes/Options.d.ts +0 -37
  106. package/abstracts/Base/classes/Options.js +0 -182
  107. package/abstracts/Base/classes/Options.js.map +0 -1
  108. package/abstracts/Base/classes/Services.js +0 -120
  109. package/abstracts/Base/classes/Services.js.map +0 -1
  110. package/abstracts/Base/components.d.ts +0 -22
  111. package/abstracts/Base/components.js +0 -67
  112. package/abstracts/Base/components.js.map +0 -1
  113. package/abstracts/Base/events.d.ts +0 -8
  114. package/abstracts/Base/events.js +0 -185
  115. package/abstracts/Base/events.js.map +0 -1
  116. package/abstracts/Base/index.d.ts +0 -176
  117. package/abstracts/Base/index.js +0 -215
  118. package/abstracts/Base/index.js.map +0 -1
  119. package/abstracts/Base/options.d.ts +0 -17
  120. package/abstracts/Base/options.js +0 -112
  121. package/abstracts/Base/options.js.map +0 -1
  122. package/abstracts/Base/refs.d.ts +0 -30
  123. package/abstracts/Base/refs.js +0 -60
  124. package/abstracts/Base/refs.js.map +0 -1
  125. package/abstracts/Base/utils.js +0 -102
  126. package/abstracts/Base/utils.js.map +0 -1
  127. package/abstracts/EventManager.d.ts +0 -41
  128. package/abstracts/EventManager.js +0 -88
  129. package/abstracts/EventManager.js.map +0 -1
  130. package/abstracts/Service.js +0 -82
  131. package/abstracts/Service.js.map +0 -1
  132. package/abstracts/index.d.ts +0 -4
  133. package/abstracts/index.js +0 -5
  134. package/abstracts/index.js.map +0 -1
  135. package/components/Accordion/Accordion.d.ts +0 -83
  136. package/components/Accordion/Accordion.js +0 -121
  137. package/components/Accordion/Accordion.js.map +0 -1
  138. package/components/Accordion/AccordionItem.d.ts +0 -122
  139. package/components/Accordion/AccordionItem.js +0 -327
  140. package/components/Accordion/AccordionItem.js.map +0 -1
  141. package/components/Accordion/index.d.ts +0 -27
  142. package/components/Accordion/index.js +0 -39
  143. package/components/Accordion/index.js.map +0 -1
  144. package/components/Cursor.d.ts +0 -138
  145. package/components/Cursor.js +0 -167
  146. package/components/Cursor.js.map +0 -1
  147. package/components/Draggable.d.ts +0 -49
  148. package/components/Draggable.js +0 -77
  149. package/components/Draggable.js.map +0 -1
  150. package/components/Modal.d.ts +0 -158
  151. package/components/Modal.js +0 -270
  152. package/components/Modal.js.map +0 -1
  153. package/components/Tabs.d.ts +0 -108
  154. package/components/Tabs.js +0 -195
  155. package/components/Tabs.js.map +0 -1
  156. package/components/index.d.ts +0 -6
  157. package/components/index.js +0 -7
  158. package/components/index.js.map +0 -1
  159. package/decorators/index.js.map +0 -1
  160. package/decorators/withBreakpointManager.js.map +0 -1
  161. package/decorators/withBreakpointObserver.js.map +0 -1
  162. package/decorators/withDrag.js.map +0 -1
  163. package/decorators/withExtraConfig.js.map +0 -1
  164. package/decorators/withIntersectionObserver.js.map +0 -1
  165. package/decorators/withMountWhenInView.js.map +0 -1
  166. package/full.d.ts +0 -10
  167. package/full.js +0 -12
  168. package/full.js.map +0 -1
  169. package/full.modern.js +0 -7523
  170. package/full.modern.js.map +0 -1
  171. package/full.umd.js +0 -8277
  172. package/full.umd.js.map +0 -1
  173. package/helpers/createApp.js.map +0 -1
  174. package/helpers/createBase.d.ts +0 -7
  175. package/helpers/createBase.js +0 -7
  176. package/helpers/createBase.js.map +0 -1
  177. package/helpers/defineComponent.d.ts +0 -11
  178. package/helpers/defineComponent.js +0 -68
  179. package/helpers/defineComponent.js.map +0 -1
  180. package/helpers/importOnInteraction.js.map +0 -1
  181. package/helpers/importWhenIdle.js.map +0 -1
  182. package/helpers/importWhenVisible.js.map +0 -1
  183. package/helpers/index.js.map +0 -1
  184. package/helpers/utils.js.map +0 -1
  185. package/index.js.map +0 -1
  186. package/index.modern.js.map +0 -1
  187. package/index.umd.js.map +0 -1
  188. package/services/drag.js.map +0 -1
  189. package/services/index.js.map +0 -1
  190. package/services/key.js.map +0 -1
  191. package/services/load.js.map +0 -1
  192. package/services/pointer.js.map +0 -1
  193. package/services/raf.js.map +0 -1
  194. package/services/resize.js.map +0 -1
  195. package/services/scroll.js.map +0 -1
  196. package/utils/collide/boundingRectToCircle.js.map +0 -1
  197. package/utils/collide/collideCircleCircle.js.map +0 -1
  198. package/utils/collide/collideCircleRect.js.map +0 -1
  199. package/utils/collide/collidePointCircle.js.map +0 -1
  200. package/utils/collide/collidePointRect.js.map +0 -1
  201. package/utils/collide/collideRectRect.js.map +0 -1
  202. package/utils/collide/index.js.map +0 -1
  203. package/utils/css/classes.js.map +0 -1
  204. package/utils/css/index.js.map +0 -1
  205. package/utils/css/matrix.js.map +0 -1
  206. package/utils/css/styles.js.map +0 -1
  207. package/utils/css/transition.js.map +0 -1
  208. package/utils/debounce.js.map +0 -1
  209. package/utils/focusTrap.js.map +0 -1
  210. package/utils/history.js.map +0 -1
  211. package/utils/index.js.map +0 -1
  212. package/utils/keyCodes.js.map +0 -1
  213. package/utils/math/clamp.js.map +0 -1
  214. package/utils/math/clamp01.js.map +0 -1
  215. package/utils/math/damp.js.map +0 -1
  216. package/utils/math/index.js.map +0 -1
  217. package/utils/math/inertiaFinalValue.js.map +0 -1
  218. package/utils/math/lerp.js.map +0 -1
  219. package/utils/math/map.js.map +0 -1
  220. package/utils/math/round.js.map +0 -1
  221. package/utils/nextFrame.js.map +0 -1
  222. package/utils/object/autoBind.js.map +0 -1
  223. package/utils/object/getAllProperties.js.map +0 -1
  224. package/utils/object/index.js.map +0 -1
  225. package/utils/object/isObject.js.map +0 -1
  226. package/utils/string/index.js.map +0 -1
  227. package/utils/string/withLeadingCharacters.js.map +0 -1
  228. package/utils/string/withLeadingSlash.js.map +0 -1
  229. package/utils/string/withTrailingCharacters.js.map +0 -1
  230. package/utils/string/withTrailingSlash.js.map +0 -1
  231. package/utils/string/withoutLeadingCharacters.js.map +0 -1
  232. package/utils/string/withoutLeadingCharactersRecursive.js.map +0 -1
  233. package/utils/string/withoutLeadingSlash.js.map +0 -1
  234. package/utils/string/withoutTrailingCharacters.js.map +0 -1
  235. package/utils/string/withoutTrailingCharactersRecursive.js.map +0 -1
  236. package/utils/string/withoutTrailingSlash.js.map +0 -1
  237. package/utils/throttle.js.map +0 -1
@@ -1,83 +0,0 @@
1
- /**
2
- * @typedef {import('./AccordionItem').default} AccordionItem
3
- * @typedef {import('./AccordionItem').AccordionItemOptions} AccordionItemOptions
4
- */
5
- /**
6
- * @typedef {Object} AccordionRefs
7
- * @property {HTMLElement[]} btn
8
- * @property {HTMLElement[]} content
9
- */
10
- /**
11
- * @typedef {Object} AccordionOptions
12
- * @property {Boolean} autoclose
13
- * @property {AccordionItemOptions} item
14
- */
15
- /**
16
- * @typedef {Object} AccordionChildren
17
- * @property {AccordionItem[]} AccordionItem
18
- */
19
- /**
20
- * @typedef {Object} AccordionPrivateInterface
21
- * @property {AccordionOptions} $options
22
- * @property {AccordionRefs} $refs
23
- * @property {AccordionChildren} $children
24
- */
25
- /**
26
- * @typedef {Accordion & AccordionPrivateInterface} AccordionInterface
27
- */
28
- /**
29
- * Accordion class.
30
- */
31
- export default class Accordion extends Base {
32
- /**
33
- * Accordion config.
34
- */
35
- static config: {
36
- name: string;
37
- options: {
38
- autoclose: BooleanConstructor;
39
- item: {
40
- type: ObjectConstructor;
41
- /**
42
- * @return {Partial<AccordionItemOptions>}
43
- */
44
- default: () => Partial<AccordionItemOptions>;
45
- };
46
- };
47
- };
48
- /**
49
- * @type {Array<Function>}
50
- */
51
- unbindMethods: Array<Function>;
52
- /**
53
- * Init autoclose behavior on mounted.
54
- * @this {AccordionInterface}
55
- * @return {Promise<void>}
56
- */
57
- mounted(): Promise<void>;
58
- /**
59
- * Destroy autoclose behavior on destroyed.
60
- * @return {void}
61
- */
62
- destroyed(): void;
63
- }
64
- export type AccordionItem = import('./AccordionItem').default;
65
- export type AccordionItemOptions = import('./AccordionItem').AccordionItemOptions;
66
- export type AccordionRefs = {
67
- btn: HTMLElement[];
68
- content: HTMLElement[];
69
- };
70
- export type AccordionOptions = {
71
- autoclose: boolean;
72
- item: AccordionItemOptions;
73
- };
74
- export type AccordionChildren = {
75
- AccordionItem: AccordionItem[];
76
- };
77
- export type AccordionPrivateInterface = {
78
- $options: AccordionOptions;
79
- $refs: AccordionRefs;
80
- $children: AccordionChildren;
81
- };
82
- export type AccordionInterface = Accordion & AccordionPrivateInterface;
83
- import Base from "../../abstracts/Base/index.js";
@@ -1,121 +0,0 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
- import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
3
- import _createClass from "@babel/runtime/helpers/createClass";
4
- import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
5
- import _inherits from "@babel/runtime/helpers/inherits";
6
- import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
7
- import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
8
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
9
- import _regeneratorRuntime from "@babel/runtime/regenerator";
10
-
11
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
12
-
13
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
14
-
15
- import Base from '../../abstracts/Base/index.js';
16
-
17
- var Accordion = function (_Base) {
18
- _inherits(Accordion, _Base);
19
-
20
- var _super = _createSuper(Accordion);
21
-
22
- function Accordion() {
23
- var _this;
24
-
25
- _classCallCheck(this, Accordion);
26
-
27
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
28
- args[_key] = arguments[_key];
29
- }
30
-
31
- _this = _super.call.apply(_super, [this].concat(args));
32
-
33
- _defineProperty(_assertThisInitialized(_this), "unbindMethods", []);
34
-
35
- return _this;
36
- }
37
-
38
- _createClass(Accordion, [{
39
- key: "mounted",
40
- value: function () {
41
- var _mounted = _asyncToGenerator(_regeneratorRuntime.mark(function _callee() {
42
- var _this2 = this;
43
-
44
- return _regeneratorRuntime.wrap(function _callee$(_context) {
45
- while (1) {
46
- switch (_context.prev = _context.next) {
47
- case 0:
48
- if (Array.isArray(this.$children.AccordionItem)) {
49
- _context.next = 2;
50
- break;
51
- }
52
-
53
- throw new Error('The Accordion component must be used with the AccordionItem component.');
54
-
55
- case 2:
56
- this.unbindMethods = this.$children.AccordionItem.map(function (item, index) {
57
- if (item instanceof Promise) {
58
- throw new Error('The AccordionItem component can not be used asynchronously.');
59
- }
60
-
61
- var unbindOpen = item.$on('open', function () {
62
- _this2.$emit('open', item, index);
63
-
64
- if (_this2.$options.autoclose) {
65
- _this2.$children.AccordionItem.filter(function (el, i) {
66
- return index !== i;
67
- }).forEach(function (it) {
68
- return it.close();
69
- });
70
- }
71
- });
72
- var unbindClose = item.$on('close', function () {
73
- _this2.$emit('close', item, index);
74
- });
75
- return function () {
76
- unbindOpen();
77
- unbindClose();
78
- };
79
- });
80
-
81
- case 3:
82
- case "end":
83
- return _context.stop();
84
- }
85
- }
86
- }, _callee, this);
87
- }));
88
-
89
- function mounted() {
90
- return _mounted.apply(this, arguments);
91
- }
92
-
93
- return mounted;
94
- }()
95
- }, {
96
- key: "destroyed",
97
- value: function destroyed() {
98
- this.unbindMethods.forEach(function (unbind) {
99
- return unbind();
100
- });
101
- }
102
- }]);
103
-
104
- return Accordion;
105
- }(Base);
106
-
107
- _defineProperty(Accordion, "config", {
108
- name: 'Accordion',
109
- options: {
110
- autoclose: Boolean,
111
- item: {
112
- type: Object,
113
- default: function _default() {
114
- return {};
115
- }
116
- }
117
- }
118
- });
119
-
120
- export { Accordion as default };
121
- //# sourceMappingURL=Accordion.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../packages/js-toolkit/components/Accordion/Accordion.js"],"names":["Base","Accordion","Array","isArray","$children","AccordionItem","Error","unbindMethods","map","item","index","Promise","unbindOpen","$on","$emit","$options","autoclose","filter","el","i","forEach","it","close","unbindClose","unbind","name","options","Boolean","type","Object","default"],"mappings":";;;;;;;;;;;;;;AAAA,OAAOA,IAAP,MAAiB,+BAAjB;;IAsCqBC,S;;;;;;;;;;;;;;;;oEAqBH,E;;;;;;;;gEAOhB;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,oBACOC,KAAK,CAACC,OAAN,CAAc,KAAKC,SAAL,CAAeC,aAA7B,CADP;AAAA;AAAA;AAAA;;AAAA,sBAEU,IAAIC,KAAJ,CAAU,wEAAV,CAFV;;AAAA;AAKE,qBAAKC,aAAL,GAAqB,KAAKH,SAAL,CAAeC,aAAf,CAA6BG,GAA7B,CAAiC,UAACC,IAAD,EAAOC,KAAP,EAAiB;AACrE,sBAAID,IAAI,YAAYE,OAApB,EAA6B;AAC3B,0BAAM,IAAIL,KAAJ,CAAU,6DAAV,CAAN;AACD;;AAED,sBAAMM,UAAU,GAAGH,IAAI,CAACI,GAAL,CAAS,MAAT,EAAiB,YAAM;AACxC,oBAAA,MAAI,CAACC,KAAL,CAAW,MAAX,EAAmBL,IAAnB,EAAyBC,KAAzB;;AACA,wBAAI,MAAI,CAACK,QAAL,CAAcC,SAAlB,EAA6B;AAC3B,sBAAA,MAAI,CAACZ,SAAL,CAAeC,aAAf,CAA6BY,MAA7B,CAAoC,UAACC,EAAD,EAAKC,CAAL;AAAA,+BAAWT,KAAK,KAAKS,CAArB;AAAA,uBAApC,EAA4DC,OAA5D,CAAoE,UAACC,EAAD;AAAA,+BAAQA,EAAE,CAACC,KAAH,EAAR;AAAA,uBAApE;AACD;AACF,mBALkB,CAAnB;AAMA,sBAAMC,WAAW,GAAGd,IAAI,CAACI,GAAL,CAAS,OAAT,EAAkB,YAAM;AAC1C,oBAAA,MAAI,CAACC,KAAL,CAAW,OAAX,EAAoBL,IAApB,EAA0BC,KAA1B;AACD,mBAFmB,CAApB;AAIA,yBAAO,YAAM;AACXE,oBAAAA,UAAU;AACVW,oBAAAA,WAAW;AACZ,mBAHD;AAID,iBAnBoB,CAArB;;AALF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WA+BA,qBAAY;AACV,WAAKhB,aAAL,CAAmBa,OAAnB,CAA2B,UAACI,MAAD;AAAA,eAAYA,MAAM,EAAlB;AAAA,OAA3B;AACD;;;;EA7DoCxB,I;;gBAAlBC,S,YAIH;AACdwB,EAAAA,IAAI,EAAE,WADQ;AAEdC,EAAAA,OAAO,EAAE;AACPV,IAAAA,SAAS,EAAEW,OADJ;AAEPlB,IAAAA,IAAI,EAAE;AACJmB,MAAAA,IAAI,EAAEC,MADF;AAKJC,MAAAA,OAAO,EAAE;AAAA,eAAO,EAAP;AAAA;AALL;AAFC;AAFK,C;;SAJG7B,S","sourcesContent":["import Base from '../../abstracts/Base/index.js';\n\n/**\n * @typedef {import('./AccordionItem').default} AccordionItem\n * @typedef {import('./AccordionItem').AccordionItemOptions} AccordionItemOptions\n */\n\n/**\n * @typedef {Object} AccordionRefs\n * @property {HTMLElement[]} btn\n * @property {HTMLElement[]} content\n */\n\n/**\n * @typedef {Object} AccordionOptions\n * @property {Boolean} autoclose\n * @property {AccordionItemOptions} item\n */\n\n/**\n * @typedef {Object} AccordionChildren\n * @property {AccordionItem[]} AccordionItem\n */\n\n/**\n * @typedef {Object} AccordionPrivateInterface\n * @property {AccordionOptions} $options\n * @property {AccordionRefs} $refs\n * @property {AccordionChildren} $children\n */\n\n/**\n * @typedef {Accordion & AccordionPrivateInterface} AccordionInterface\n */\n\n/**\n * Accordion class.\n */\nexport default class Accordion extends Base {\n /**\n * Accordion config.\n */\n static config = {\n name: 'Accordion',\n options: {\n autoclose: Boolean,\n item: {\n type: Object,\n /**\n * @return {Partial<AccordionItemOptions>}\n */\n default: () => ({}),\n },\n },\n };\n\n /**\n * @type {Array<Function>}\n */\n unbindMethods = [];\n\n /**\n * Init autoclose behavior on mounted.\n * @this {AccordionInterface}\n * @return {Promise<void>}\n */\n async mounted() {\n if (!Array.isArray(this.$children.AccordionItem)) {\n throw new Error('The Accordion component must be used with the AccordionItem component.');\n }\n\n this.unbindMethods = this.$children.AccordionItem.map((item, index) => {\n if (item instanceof Promise) {\n throw new Error('The AccordionItem component can not be used asynchronously.');\n }\n\n const unbindOpen = item.$on('open', () => {\n this.$emit('open', item, index);\n if (this.$options.autoclose) {\n this.$children.AccordionItem.filter((el, i) => index !== i).forEach((it) => it.close());\n }\n });\n const unbindClose = item.$on('close', () => {\n this.$emit('close', item, index);\n });\n\n return () => {\n unbindOpen();\n unbindClose();\n };\n });\n }\n\n /**\n * Destroy autoclose behavior on destroyed.\n * @return {void}\n */\n destroyed() {\n this.unbindMethods.forEach((unbind) => unbind());\n }\n}\n"],"file":"Accordion.js"}
@@ -1,122 +0,0 @@
1
- /**
2
- * @typedef {import('../../abstracts/Base').BaseOptions} BaseOptions
3
- * @typedef {import('./Accordion.js').AccordionInterface} AccordionInterface
4
- */
5
- /**
6
- * @typedef {Object} AccordionItemRefs
7
- * @property {HTMLElement} btn
8
- * @property {HTMLElement} content
9
- * @property {HTMLElement} container
10
- */
11
- /**
12
- * @typedef {Object} StylesOption
13
- * @property {String|CssStyleObject} open
14
- * @property {String|CssStyleObject} active
15
- * @property {String|CssStyleObject} closed
16
- */
17
- /**
18
- * @typedef {import('../../utils/css/styles.js').CssStyleObject} CssStyleObject
19
- * @typedef {Partial<Record<'open'|'active'|'closed', string|CssStyleObject>>} AccordionItemStates
20
- * @typedef {Partial<Record<keyof AccordionItemRefs, AccordionItemStates>>} AccordionItemStylesOption
21
- */
22
- /**
23
- * @typedef {Object} AccordionItemOptions
24
- * @property {Boolean} isOpen
25
- * @property {AccordionItemStylesOption} styles
26
- */
27
- /**
28
- * @typedef {Object} AccordionItemPrivateInterface
29
- * @property {AccordionItemOptions} $options
30
- * @property {AccordionItemRefs} $refs
31
- * @property {Accordion & AccordionInterface} $parent
32
- */
33
- /**
34
- * @typedef {AccordionItem & AccordionItemPrivateInterface} AccordionItemInterface
35
- */
36
- /**
37
- * AccordionItem class.
38
- */
39
- export default class AccordionItem extends Base {
40
- /**
41
- * AccordionItem config
42
- * @return {Object}
43
- */
44
- static config: {
45
- name: string;
46
- refs: string[];
47
- options: {
48
- isOpen: BooleanConstructor;
49
- styles: {
50
- type: ObjectConstructor;
51
- /**
52
- * @return {AccordionItemStylesOption}
53
- */
54
- default: () => AccordionItemStylesOption;
55
- };
56
- };
57
- };
58
- /**
59
- * Add aria-attributes on mounted.
60
- * @this {AccordionItemInterface}
61
- */
62
- mounted(): void;
63
- /**
64
- * Remove styles on destroy.
65
- * @this {AccordionItemInterface}
66
- */
67
- destroyed(): void;
68
- /**
69
- * Handler for the click event on the `btn` ref.
70
- * @this {AccordionItemInterface}
71
- */
72
- onBtnClick(): void;
73
- /**
74
- * Get the content ID.
75
- * @return {String}
76
- */
77
- get contentId(): string;
78
- /**
79
- * Update the refs' attributes according to the given type.
80
- *
81
- * @this {AccordionItemInterface}
82
- * @param {Boolean} isOpen The state of the item.
83
- */
84
- updateAttributes(isOpen: boolean): void;
85
- /**
86
- * Open an item.
87
- * @this {AccordionItemInterface}
88
- */
89
- open(): Promise<void>;
90
- /**
91
- * Close an item.
92
- * @this {AccordionItemInterface}
93
- */
94
- close(): Promise<void>;
95
- }
96
- export type BaseOptions = import('../../abstracts/Base').BaseOptions;
97
- export type AccordionInterface = import('./Accordion.js').AccordionInterface;
98
- export type AccordionItemRefs = {
99
- btn: HTMLElement;
100
- content: HTMLElement;
101
- container: HTMLElement;
102
- };
103
- export type StylesOption = {
104
- open: string | CssStyleObject;
105
- active: string | CssStyleObject;
106
- closed: string | CssStyleObject;
107
- };
108
- export type CssStyleObject = import('../../utils/css/styles.js').CssStyleObject;
109
- export type AccordionItemStates = Partial<Record<'open' | 'active' | 'closed', string | CssStyleObject>>;
110
- export type AccordionItemStylesOption = Partial<Record<keyof AccordionItemRefs, AccordionItemStates>>;
111
- export type AccordionItemOptions = {
112
- isOpen: boolean;
113
- styles: AccordionItemStylesOption;
114
- };
115
- export type AccordionItemPrivateInterface = {
116
- $options: AccordionItemOptions;
117
- $refs: AccordionItemRefs;
118
- $parent: Accordion & AccordionInterface;
119
- };
120
- export type AccordionItemInterface = AccordionItem & AccordionItemPrivateInterface;
121
- import Base from "../../abstracts/Base/index.js";
122
- import Accordion from "./Accordion.js";
@@ -1,327 +0,0 @@
1
- import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
3
- import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
5
- import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
6
- import _createClass from "@babel/runtime/helpers/createClass";
7
- import _inherits from "@babel/runtime/helpers/inherits";
8
- import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
9
- import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
10
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
11
- var _excluded = ["container"],
12
- _excluded2 = ["container"],
13
- _excluded3 = ["container"];
14
- import _regeneratorRuntime from "@babel/runtime/regenerator";
15
-
16
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
17
-
18
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
19
-
20
- import deepmerge from 'deepmerge';
21
- import Base from '../../abstracts/Base/index.js';
22
- import Accordion from './Accordion.js';
23
- import * as styles from '../../utils/css/styles.js';
24
- import transition from '../../utils/css/transition.js';
25
-
26
- var AccordionItem = function (_Base) {
27
- _inherits(AccordionItem, _Base);
28
-
29
- var _super = _createSuper(AccordionItem);
30
-
31
- function AccordionItem() {
32
- _classCallCheck(this, AccordionItem);
33
-
34
- return _super.apply(this, arguments);
35
- }
36
-
37
- _createClass(AccordionItem, [{
38
- key: "mounted",
39
- value: function mounted() {
40
- var _this = this;
41
-
42
- if (this.$parent && this.$parent instanceof Accordion && this.$parent.$options.item) {
43
- Object.entries(this.$parent.$options.item).forEach(function (_ref) {
44
- var _ref2 = _slicedToArray(_ref, 2),
45
- key = _ref2[0],
46
- value = _ref2[1];
47
-
48
- if (key in _this.$options) {
49
- var type = AccordionItem.config.options[key].type || AccordionItem.config.options[key];
50
-
51
- if (type === Array || type === Object) {
52
- _this.$options[key] = deepmerge(_this.$options[key], value);
53
- } else {
54
- _this.$options[key] = value;
55
- }
56
- }
57
- });
58
- }
59
-
60
- this.$refs.btn.setAttribute('id', this.$id);
61
- this.$refs.btn.setAttribute('aria-controls', this.contentId);
62
- this.$refs.content.setAttribute('aria-labelledby', this.$id);
63
- this.$refs.content.setAttribute('id', this.contentId);
64
- var isOpen = this.$options.isOpen;
65
- this.updateAttributes(isOpen);
66
-
67
- if (!isOpen) {
68
- styles.add(this.$refs.container, {
69
- visibility: 'invisible',
70
- height: '0'
71
- });
72
- }
73
-
74
- var _this$$options$styles = this.$options.styles,
75
- container = _this$$options$styles.container,
76
- otherStyles = _objectWithoutProperties(_this$$options$styles, _excluded);
77
-
78
- var refs = this.$refs;
79
- Object.entries(otherStyles).filter(function (_ref3) {
80
- var _ref4 = _slicedToArray(_ref3, 1),
81
- refName = _ref4[0];
82
-
83
- return refs[refName];
84
- }).forEach(function (_ref5) {
85
- var _ref6 = _slicedToArray(_ref5, 2),
86
- refName = _ref6[0],
87
- _ref6$ = _ref6[1];
88
-
89
- _ref6$ = _ref6$ === void 0 ? {
90
- open: '',
91
- closed: ''
92
- } : _ref6$;
93
- var open = _ref6$.open,
94
- closed = _ref6$.closed;
95
- transition(refs[refName], {
96
- to: isOpen ? open : closed
97
- }, 'keep');
98
- });
99
- }
100
- }, {
101
- key: "destroyed",
102
- value: function destroyed() {
103
- styles.remove(this.$refs.container, {
104
- visibility: '',
105
- height: ''
106
- });
107
- }
108
- }, {
109
- key: "onBtnClick",
110
- value: function onBtnClick() {
111
- if (this.$options.isOpen) {
112
- this.close();
113
- } else {
114
- this.open();
115
- }
116
- }
117
- }, {
118
- key: "contentId",
119
- get: function get() {
120
- return "content-".concat(this.$id);
121
- }
122
- }, {
123
- key: "updateAttributes",
124
- value: function updateAttributes(isOpen) {
125
- this.$refs.content.setAttribute('aria-hidden', isOpen ? 'false' : 'true');
126
- this.$refs.btn.setAttribute('aria-expanded', isOpen ? 'true' : 'false');
127
- }
128
- }, {
129
- key: "open",
130
- value: function () {
131
- var _open = _asyncToGenerator(_regeneratorRuntime.mark(function _callee() {
132
- var _this2 = this;
133
-
134
- var _this$$options$styles2, container, otherStyles, refs;
135
-
136
- return _regeneratorRuntime.wrap(function _callee$(_context) {
137
- while (1) {
138
- switch (_context.prev = _context.next) {
139
- case 0:
140
- if (!this.$options.isOpen) {
141
- _context.next = 2;
142
- break;
143
- }
144
-
145
- return _context.abrupt("return");
146
-
147
- case 2:
148
- this.$log('open');
149
- this.$emit('open');
150
- this.$options.isOpen = true;
151
- this.updateAttributes(this.$options.isOpen);
152
- styles.remove(this.$refs.container, {
153
- visibility: 'invisible'
154
- });
155
- _this$$options$styles2 = this.$options.styles, container = _this$$options$styles2.container, otherStyles = _objectWithoutProperties(_this$$options$styles2, _excluded2);
156
- refs = this.$refs;
157
- _context.next = 11;
158
- return Promise.all([transition(refs.container, {
159
- from: {
160
- height: 0
161
- },
162
- active: container.active,
163
- to: {
164
- height: "".concat(refs.content.offsetHeight, "px")
165
- }
166
- }).then(function () {
167
- if (_this2.$options.isOpen) {
168
- styles.remove(refs.content, {
169
- position: 'absolute'
170
- });
171
- }
172
-
173
- return Promise.resolve();
174
- })].concat(_toConsumableArray(Object.entries(otherStyles).filter(function (_ref7) {
175
- var _ref8 = _slicedToArray(_ref7, 1),
176
- refName = _ref8[0];
177
-
178
- return refs[refName];
179
- }).map(function (_ref9) {
180
- var _ref10 = _slicedToArray(_ref9, 2),
181
- refName = _ref10[0],
182
- _ref10$ = _ref10[1];
183
-
184
- _ref10$ = _ref10$ === void 0 ? {
185
- open: '',
186
- active: '',
187
- closed: ''
188
- } : _ref10$;
189
- var open = _ref10$.open,
190
- active = _ref10$.active,
191
- closed = _ref10$.closed;
192
- return transition(refs[refName], {
193
- from: closed,
194
- active: active,
195
- to: open
196
- }, 'keep');
197
- }))));
198
-
199
- case 11:
200
- case "end":
201
- return _context.stop();
202
- }
203
- }
204
- }, _callee, this);
205
- }));
206
-
207
- function open() {
208
- return _open.apply(this, arguments);
209
- }
210
-
211
- return open;
212
- }()
213
- }, {
214
- key: "close",
215
- value: function () {
216
- var _close = _asyncToGenerator(_regeneratorRuntime.mark(function _callee2() {
217
- var _this3 = this;
218
-
219
- var height, _this$$options$styles3, container, otherStyles, refs;
220
-
221
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
222
- while (1) {
223
- switch (_context2.prev = _context2.next) {
224
- case 0:
225
- if (this.$options.isOpen) {
226
- _context2.next = 2;
227
- break;
228
- }
229
-
230
- return _context2.abrupt("return");
231
-
232
- case 2:
233
- this.$log('close');
234
- this.$emit('close');
235
- this.$options.isOpen = false;
236
- height = this.$refs.container.offsetHeight;
237
- styles.add(this.$refs.content, {
238
- position: 'absolute'
239
- });
240
- _this$$options$styles3 = this.$options.styles, container = _this$$options$styles3.container, otherStyles = _objectWithoutProperties(_this$$options$styles3, _excluded3);
241
- refs = this.$refs;
242
- _context2.next = 11;
243
- return Promise.all([transition(refs.container, {
244
- from: {
245
- height: "".concat(height, "px")
246
- },
247
- active: container.active,
248
- to: {
249
- height: '0'
250
- }
251
- }).then(function () {
252
- if (!_this3.$options.isOpen) {
253
- styles.add(refs.container, {
254
- height: '0',
255
- visibility: 'invisible'
256
- });
257
-
258
- _this3.updateAttributes(_this3.$options.isOpen);
259
- }
260
-
261
- return Promise.resolve();
262
- })].concat(_toConsumableArray(Object.entries(otherStyles).filter(function (_ref11) {
263
- var _ref12 = _slicedToArray(_ref11, 1),
264
- refName = _ref12[0];
265
-
266
- return refs[refName];
267
- }).map(function (_ref13) {
268
- var _ref14 = _slicedToArray(_ref13, 2),
269
- refName = _ref14[0],
270
- _ref14$ = _ref14[1];
271
-
272
- _ref14$ = _ref14$ === void 0 ? {
273
- open: '',
274
- active: '',
275
- closed: ''
276
- } : _ref14$;
277
- var open = _ref14$.open,
278
- active = _ref14$.active,
279
- closed = _ref14$.closed;
280
- return transition(refs[refName], {
281
- from: open,
282
- active: active,
283
- to: closed
284
- }, 'keep');
285
- }))));
286
-
287
- case 11:
288
- case "end":
289
- return _context2.stop();
290
- }
291
- }
292
- }, _callee2, this);
293
- }));
294
-
295
- function close() {
296
- return _close.apply(this, arguments);
297
- }
298
-
299
- return close;
300
- }()
301
- }]);
302
-
303
- return AccordionItem;
304
- }(Base);
305
-
306
- _defineProperty(AccordionItem, "config", {
307
- name: 'AccordionItem',
308
- refs: ['btn', 'content', 'container'],
309
- options: {
310
- isOpen: Boolean,
311
- styles: {
312
- type: Object,
313
- default: function _default() {
314
- return {
315
- container: {
316
- open: '',
317
- active: '',
318
- closed: ''
319
- }
320
- };
321
- }
322
- }
323
- }
324
- });
325
-
326
- export { AccordionItem as default };
327
- //# sourceMappingURL=AccordionItem.js.map