@knowark/componarkjs 1.13.3 → 1.14.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.
Files changed (177) hide show
  1. package/lib/base/component/component.js +17 -1
  2. package/lib/base/component/component.test.js +475 -389
  3. package/lib/base/utils/define.js +28 -6
  4. package/lib/base/utils/define.test.js +129 -42
  5. package/lib/base/utils/format.test.js +16 -16
  6. package/lib/base/utils/helpers.js +11 -4
  7. package/lib/base/utils/helpers.test.js +134 -115
  8. package/lib/base/utils/slots.test.js +38 -38
  9. package/lib/base/utils/uuid.test.js +13 -13
  10. package/lib/components/audio/components/audio.js +22 -3
  11. package/lib/components/audio/components/audio.test.js +120 -90
  12. package/lib/components/camera/components/camera.js +8 -3
  13. package/lib/components/camera/components/camera.test.js +96 -91
  14. package/lib/components/capture/components/capture.js +33 -5
  15. package/lib/components/capture/components/capture.test.js +165 -97
  16. package/lib/components/droparea/components/droparea-preview.js +66 -15
  17. package/lib/components/droparea/components/droparea-preview.test.js +262 -78
  18. package/lib/components/droparea/components/droparea.js +47 -8
  19. package/lib/components/droparea/components/droparea.test.js +309 -298
  20. package/lib/components/emit/components/emit.js +24 -4
  21. package/lib/components/emit/components/emit.test.js +192 -134
  22. package/lib/components/index.js +1 -1
  23. package/lib/components/list/components/{list.item.js → item.js} +1 -1
  24. package/lib/components/list/components/item.test.js +70 -69
  25. package/lib/components/list/components/list.js +35 -5
  26. package/lib/components/list/components/list.test.js +358 -227
  27. package/lib/components/list/index.js +1 -1
  28. package/lib/components/paginator/components/paginator.js +3 -2
  29. package/lib/components/paginator/components/paginator.test.js +146 -143
  30. package/lib/components/spinner/components/spinner.js +1 -1
  31. package/lib/components/spinner/components/spinner.test.js +36 -41
  32. package/lib/components/splitview/components/splitview.detail.js +1 -1
  33. package/lib/components/splitview/components/splitview.detail.test.js +78 -74
  34. package/lib/components/splitview/components/splitview.js +40 -10
  35. package/lib/components/splitview/components/splitview.master.js +29 -3
  36. package/lib/components/splitview/components/splitview.master.test.js +52 -52
  37. package/lib/components/splitview/components/splitview.test.js +136 -32
  38. package/lib/components/translate/components/translate.js +32 -10
  39. package/lib/components/translate/components/translate.test.js +492 -133
  40. package/package.json +7 -27
  41. package/scripts/node-test-setup.js +94 -0
  42. package/showcase/components/index.html +1 -1
  43. package/{jsconfig.json → tsconfig.json} +6 -4
  44. package/types/base/component/component.d.ts +48 -0
  45. package/types/base/component/component.d.ts.map +1 -0
  46. package/types/base/component/component.test.d.ts +2 -0
  47. package/types/base/component/component.test.d.ts.map +1 -0
  48. package/types/base/component/index.d.ts +8 -0
  49. package/types/base/component/index.d.ts.map +1 -0
  50. package/types/base/index.d.ts +2 -0
  51. package/types/base/index.d.ts.map +1 -0
  52. package/types/base/styles/index.d.ts +3 -0
  53. package/types/base/styles/index.d.ts.map +1 -0
  54. package/types/base/styles/styles.d.ts +3 -0
  55. package/types/base/styles/styles.d.ts.map +1 -0
  56. package/types/base/utils/define.d.ts +5 -0
  57. package/types/base/utils/define.d.ts.map +1 -0
  58. package/types/base/utils/define.test.d.ts +2 -0
  59. package/types/base/utils/define.test.d.ts.map +1 -0
  60. package/types/base/utils/format.d.ts +13 -0
  61. package/types/base/utils/format.d.ts.map +1 -0
  62. package/types/base/utils/format.test.d.ts +2 -0
  63. package/types/base/utils/format.test.d.ts.map +1 -0
  64. package/types/base/utils/helpers.d.ts +11 -0
  65. package/types/base/utils/helpers.d.ts.map +1 -0
  66. package/types/base/utils/helpers.test.d.ts +2 -0
  67. package/types/base/utils/helpers.test.d.ts.map +1 -0
  68. package/types/base/utils/index.d.ts +6 -0
  69. package/types/base/utils/index.d.ts.map +1 -0
  70. package/types/base/utils/slots.d.ts +15 -0
  71. package/types/base/utils/slots.d.ts.map +1 -0
  72. package/types/base/utils/slots.test.d.ts +2 -0
  73. package/types/base/utils/slots.test.d.ts.map +1 -0
  74. package/types/base/utils/uuid.d.ts +3 -0
  75. package/types/base/utils/uuid.d.ts.map +1 -0
  76. package/types/base/utils/uuid.test.d.ts +2 -0
  77. package/types/base/utils/uuid.test.d.ts.map +1 -0
  78. package/types/components/audio/components/audio.d.ts +18 -0
  79. package/types/components/audio/components/audio.d.ts.map +1 -0
  80. package/types/components/audio/components/audio.test.d.ts +2 -0
  81. package/types/components/audio/components/audio.test.d.ts.map +1 -0
  82. package/types/components/audio/index.d.ts +2 -0
  83. package/types/components/audio/index.d.ts.map +1 -0
  84. package/types/components/audio/styles/ark.css.d.ts +3 -0
  85. package/types/components/audio/styles/ark.css.d.ts.map +1 -0
  86. package/types/components/audio/styles/index.d.ts +3 -0
  87. package/types/components/audio/styles/index.d.ts.map +1 -0
  88. package/types/components/camera/components/camera.d.ts +18 -0
  89. package/types/components/camera/components/camera.d.ts.map +1 -0
  90. package/types/components/camera/components/camera.test.d.ts +2 -0
  91. package/types/components/camera/components/camera.test.d.ts.map +1 -0
  92. package/types/components/camera/index.d.ts +2 -0
  93. package/types/components/camera/index.d.ts.map +1 -0
  94. package/types/components/camera/styles/ark.css.d.ts +3 -0
  95. package/types/components/camera/styles/ark.css.d.ts.map +1 -0
  96. package/types/components/camera/styles/index.d.ts +3 -0
  97. package/types/components/camera/styles/index.d.ts.map +1 -0
  98. package/types/components/capture/components/capture.d.ts +10 -0
  99. package/types/components/capture/components/capture.d.ts.map +1 -0
  100. package/types/components/capture/components/capture.test.d.ts +2 -0
  101. package/types/components/capture/components/capture.test.d.ts.map +1 -0
  102. package/types/components/capture/index.d.ts +2 -0
  103. package/types/components/capture/index.d.ts.map +1 -0
  104. package/types/components/droparea/components/droparea-preview.d.ts +21 -0
  105. package/types/components/droparea/components/droparea-preview.d.ts.map +1 -0
  106. package/types/components/droparea/components/droparea-preview.test.d.ts +2 -0
  107. package/types/components/droparea/components/droparea-preview.test.d.ts.map +1 -0
  108. package/types/components/droparea/components/droparea.d.ts +32 -0
  109. package/types/components/droparea/components/droparea.d.ts.map +1 -0
  110. package/types/components/droparea/components/droparea.test.d.ts +2 -0
  111. package/types/components/droparea/components/droparea.test.d.ts.map +1 -0
  112. package/types/components/droparea/index.d.ts +2 -0
  113. package/types/components/droparea/index.d.ts.map +1 -0
  114. package/types/components/droparea/styles/ark.css.d.ts +3 -0
  115. package/types/components/droparea/styles/ark.css.d.ts.map +1 -0
  116. package/types/components/droparea/styles/index.d.ts +3 -0
  117. package/types/components/droparea/styles/index.d.ts.map +1 -0
  118. package/types/components/emit/components/emit.d.ts +10 -0
  119. package/types/components/emit/components/emit.d.ts.map +1 -0
  120. package/types/components/emit/components/emit.test.d.ts +2 -0
  121. package/types/components/emit/components/emit.test.d.ts.map +1 -0
  122. package/types/components/emit/index.d.ts +2 -0
  123. package/types/components/emit/index.d.ts.map +1 -0
  124. package/types/components/index.d.ts +10 -0
  125. package/types/components/index.d.ts.map +1 -0
  126. package/types/components/list/components/item.d.ts +8 -0
  127. package/types/components/list/components/item.d.ts.map +1 -0
  128. package/types/components/list/components/item.test.d.ts +2 -0
  129. package/types/components/list/components/item.test.d.ts.map +1 -0
  130. package/types/components/list/components/list.d.ts +13 -0
  131. package/types/components/list/components/list.d.ts.map +1 -0
  132. package/types/components/list/components/list.test.d.ts +2 -0
  133. package/types/components/list/components/list.test.d.ts.map +1 -0
  134. package/types/components/list/index.d.ts +3 -0
  135. package/types/components/list/index.d.ts.map +1 -0
  136. package/types/components/paginator/components/paginator.d.ts +32 -0
  137. package/types/components/paginator/components/paginator.d.ts.map +1 -0
  138. package/types/components/paginator/components/paginator.test.d.ts +2 -0
  139. package/types/components/paginator/components/paginator.test.d.ts.map +1 -0
  140. package/types/components/paginator/index.d.ts +2 -0
  141. package/types/components/paginator/index.d.ts.map +1 -0
  142. package/types/components/paginator/styles/ark.css.d.ts +3 -0
  143. package/types/components/paginator/styles/ark.css.d.ts.map +1 -0
  144. package/types/components/paginator/styles/index.d.ts +3 -0
  145. package/types/components/paginator/styles/index.d.ts.map +1 -0
  146. package/types/components/spinner/components/spinner.d.ts +11 -0
  147. package/types/components/spinner/components/spinner.d.ts.map +1 -0
  148. package/types/components/spinner/components/spinner.test.d.ts +2 -0
  149. package/types/components/spinner/components/spinner.test.d.ts.map +1 -0
  150. package/types/components/spinner/index.d.ts +2 -0
  151. package/types/components/spinner/index.d.ts.map +1 -0
  152. package/types/components/spinner/styles/ark.css.d.ts +3 -0
  153. package/types/components/spinner/styles/ark.css.d.ts.map +1 -0
  154. package/types/components/spinner/styles/index.d.ts +3 -0
  155. package/types/components/spinner/styles/index.d.ts.map +1 -0
  156. package/types/components/splitview/components/splitview.d.ts +12 -0
  157. package/types/components/splitview/components/splitview.d.ts.map +1 -0
  158. package/types/components/splitview/components/splitview.detail.d.ts +10 -0
  159. package/types/components/splitview/components/splitview.detail.d.ts.map +1 -0
  160. package/types/components/splitview/components/splitview.detail.test.d.ts +2 -0
  161. package/types/components/splitview/components/splitview.detail.test.d.ts.map +1 -0
  162. package/types/components/splitview/components/splitview.master.d.ts +8 -0
  163. package/types/components/splitview/components/splitview.master.d.ts.map +1 -0
  164. package/types/components/splitview/components/splitview.master.test.d.ts +2 -0
  165. package/types/components/splitview/components/splitview.master.test.d.ts.map +1 -0
  166. package/types/components/splitview/components/splitview.test.d.ts +2 -0
  167. package/types/components/splitview/components/splitview.test.d.ts.map +1 -0
  168. package/types/components/splitview/index.d.ts +4 -0
  169. package/types/components/splitview/index.d.ts.map +1 -0
  170. package/types/components/translate/components/translate.d.ts +18 -0
  171. package/types/components/translate/components/translate.d.ts.map +1 -0
  172. package/types/components/translate/components/translate.test.d.ts +2 -0
  173. package/types/components/translate/components/translate.test.d.ts.map +1 -0
  174. package/types/components/translate/index.d.ts +2 -0
  175. package/types/components/translate/index.d.ts.map +1 -0
  176. package/types/index.d.ts +3 -0
  177. package/types/index.d.ts.map +1 -0
@@ -1,152 +1,155 @@
1
+ import { it } from 'node:test';
2
+ import assert from 'node:assert/strict';
1
3
  import './paginator.js'
2
4
 
3
- describe('Paginator', () => {
4
- let container = null
5
-
6
- beforeEach(() => {
7
- container = document.createElement('div')
8
- document.body.appendChild(container)
9
- })
5
+ let container = null
10
6
 
11
- afterEach(() => {
12
- container.remove()
13
- container = null
14
- })
7
+ const setup = () => {
8
+ document.body.innerHTML = '';
9
+ container = document.createElement('div')
10
+ document.body.appendChild(container)
11
+ };
15
12
 
16
- it('can be instantiated', () => {
17
- container.innerHTML = /* html */ `
18
- <ark-paginator></ark-paginator>
19
- `
20
- const paginator = container.querySelector('ark-paginator')
13
+ it('can be instantiated', () => {
14
+ setup();
15
+ container.innerHTML = /* html */ `
16
+ <ark-paginator></ark-paginator>
17
+ `
18
+ const paginator = container.querySelector('ark-paginator')
21
19
 
22
- expect(paginator).toBe(paginator.init())
23
- })
20
+ assert.strictEqual(paginator, paginator.init())
21
+ })
22
+
23
+ it('can be instantiated with parameters', () => {
24
+ setup();
25
+ container.innerHTML = /* html */ `
26
+ <ark-paginator page-size="12" displayed-pages="5"></ark-paginator>
27
+ `
28
+ const paginator = container.querySelector('ark-paginator')
29
+ paginator.init({ collectionSize: 120, currentPage: 4 })
30
+
31
+ assert.strictEqual(paginator.pageSize, '12')
32
+ assert.strictEqual(paginator.collectionSize, '120')
33
+ assert.strictEqual(paginator.currentPage, '4')
34
+ assert.strictEqual(paginator.displayedPages, '5')
35
+ assert.strictEqual(paginator.totalPages, 10)
36
+
37
+ paginator.init({ collectionSize: 120, pageSize: 10 })
38
+ assert.strictEqual(paginator.totalPages, 12)
39
+ })
40
+
41
+ it('computes the current shown pages', () => {
42
+ setup();
43
+ container.innerHTML = /* html */ `
44
+ <ark-paginator collection-size="120" page-size="12"
45
+ displayed-pages="5" current-page="1"></ark-paginator>
46
+ `
47
+ const paginator = container.querySelector('ark-paginator')
48
+
49
+ assert.deepStrictEqual(paginator.currentPages, [1, 2, 3, 4, 5])
50
+ assert.deepStrictEqual(paginator.totalPages, 10)
51
+
52
+ paginator.init({ currentPage: 3 })
53
+ assert.deepStrictEqual(paginator.currentPages, [1, 2, 3, 4, 5])
54
+
55
+ paginator.init({ currentPage: 4 })
56
+ assert.deepStrictEqual(paginator.currentPages, [2, 3, 4, 5, 6])
57
+
58
+ paginator.init({ currentPage: 5 })
59
+ assert.deepStrictEqual(paginator.currentPages, [3, 4, 5, 6, 7])
60
+
61
+ paginator.init({ currentPage: 7 })
62
+ assert.deepStrictEqual(paginator.currentPages, [5, 6, 7, 8, 9])
63
+
64
+ paginator.init({ currentPage: 8 })
65
+ assert.deepStrictEqual(paginator.currentPages, [6, 7, 8, 9, 10])
66
+
67
+ paginator.init({ currentPage: 9 })
68
+ assert.deepStrictEqual(paginator.currentPages, [6, 7, 8, 9, 10])
69
+
70
+ paginator.init({ currentPage: 10 })
71
+ assert.deepStrictEqual(paginator.currentPages, [6, 7, 8, 9, 10])
72
+
73
+ paginator.init({ displayedPages: 6, currentPage: 5 })
74
+ assert.deepStrictEqual(paginator.currentPages, [2, 3, 4, 5, 6, 7])
75
+
76
+ paginator.init({ displayedPages: 6, currentPage: 7 })
77
+ assert.deepStrictEqual(paginator.currentPages, [4, 5, 6, 7, 8, 9])
24
78
 
25
- it('can be instantiated with parameters', () => {
26
- container.innerHTML = /* html */ `
27
- <ark-paginator page-size="12" displayed-pages="5"></ark-paginator>
28
- `
29
- const paginator = container.querySelector('ark-paginator')
30
- paginator.init({ collectionSize: 120, currentPage: 4 })
79
+ paginator.init({ displayedPages: 6, currentPage: 9 })
80
+ assert.deepStrictEqual(paginator.currentPages, [5, 6, 7, 8, 9, 10])
81
+ })
82
+
83
+ it('enables and notifies page changes', () => {
84
+ setup();
85
+ container.innerHTML = /* html */ `
86
+ <ark-paginator collection-size="100" page-size="10"
87
+ displayed-pages="5" current-page="1"></ark-paginator>
88
+ `
89
+ const paginator = container.querySelector('ark-paginator')
90
+
91
+ let pageChangedEvent = null
92
+ paginator.addEventListener(
93
+ 'page-changed', (event) => pageChangedEvent = event)
94
+
95
+ paginator._setCurrentPage(4)
96
+
97
+ assert.deepStrictEqual(paginator.currentPage, '4')
98
+ assert.ok(pageChangedEvent)
99
+ })
100
+
101
+ it('moves to the different pages', () => {
102
+ setup();
103
+ container.innerHTML = /* html */ `
104
+ <ark-paginator collection-size="100" page-size="10"
105
+ displayed-pages="5" current-page="1"></ark-paginator>
106
+ `
107
+ const paginator = container.querySelector('ark-paginator')
31
108
 
32
- expect(paginator.pageSize).toBe('12')
33
- expect(paginator.collectionSize).toBe('120')
34
- expect(paginator.currentPage).toBe('4')
35
- expect(paginator.displayedPages).toBe('5')
36
- expect(paginator.totalPages).toBe(10)
37
-
38
- paginator.init({ collectionSize: 120, pageSize: 10 })
39
- expect(paginator.totalPages).toBe(12)
40
- })
41
-
42
- it('computes the current shown pages', () => {
43
- container.innerHTML = /* html */ `
44
- <ark-paginator collection-size="120" page-size="12"
45
- displayed-pages="5" current-page="1"></ark-paginator>
46
- `
47
- const paginator = container.querySelector('ark-paginator')
48
-
49
- expect(paginator.currentPages).toEqual([1, 2, 3, 4, 5])
50
- expect(paginator.totalPages).toEqual(10)
51
-
52
- paginator.init({ currentPage: 3 })
53
- expect(paginator.currentPages).toEqual([1, 2, 3, 4, 5])
54
-
55
- paginator.init({ currentPage: 4 })
56
- expect(paginator.currentPages).toEqual([2, 3, 4, 5, 6])
57
-
58
- paginator.init({ currentPage: 5 })
59
- expect(paginator.currentPages).toEqual([3, 4, 5, 6, 7])
60
-
61
- paginator.init({ currentPage: 7 })
62
- expect(paginator.currentPages).toEqual([5, 6, 7, 8, 9])
63
-
64
- paginator.init({ currentPage: 8 })
65
- expect(paginator.currentPages).toEqual([6, 7, 8, 9, 10])
66
-
67
- paginator.init({ currentPage: 9 })
68
- expect(paginator.currentPages).toEqual([6, 7, 8, 9, 10])
69
-
70
- paginator.init({ currentPage: 10 })
71
- expect(paginator.currentPages).toEqual([6, 7, 8, 9, 10])
72
-
73
- paginator.init({ displayedPages: 6, currentPage: 5 })
74
- expect(paginator.currentPages).toEqual([2, 3, 4, 5, 6, 7])
75
-
76
- paginator.init({ displayedPages: 6, currentPage: 7 })
77
- expect(paginator.currentPages).toEqual([4, 5, 6, 7, 8, 9])
78
-
79
- paginator.init({ displayedPages: 6, currentPage: 9 })
80
- expect(paginator.currentPages).toEqual([5, 6, 7, 8, 9, 10])
81
- })
82
-
83
- it('enables and notifies page changes', () => {
84
- container.innerHTML = /* html */ `
85
- <ark-paginator collection-size="100" page-size="10"
86
- displayed-pages="5" current-page="1"></ark-paginator>
87
- `
88
- const paginator = container.querySelector('ark-paginator')
89
-
90
- let pageChangedEvent = null
91
- paginator.addEventListener(
92
- 'page-changed', (event) => pageChangedEvent = event)
93
-
94
- paginator._setCurrentPage(4)
95
-
96
- expect(paginator.currentPage).toEqual('4')
97
- expect(pageChangedEvent).toBeTruthy()
98
- })
99
-
100
- it('moves to the different pages', () => {
101
- container.innerHTML = /* html */ `
102
- <ark-paginator collection-size="100" page-size="10"
103
- displayed-pages="5" current-page="1"></ark-paginator>
104
- `
105
- const paginator = container.querySelector('ark-paginator')
106
-
107
- paginator.select('[data-page="4"]').click()
108
- expect(paginator.currentPage).toEqual('4')
109
-
110
- paginator.select('[data-page="6"]').click()
111
- expect(paginator.currentPage).toEqual('6')
112
-
113
- paginator.select('[on-click="_prev"]').click()
114
- expect(paginator.currentPage).toEqual('5')
115
-
116
- paginator.select('[on-click="_next"]').click()
117
- expect(paginator.currentPage).toEqual('6')
118
-
119
- paginator.select('[on-click="_first"]').click()
120
- expect(paginator.currentPage).toEqual('1')
121
-
122
- paginator.select('[on-click="_last"]').click()
123
- expect(paginator.currentPage).toEqual('10')
124
-
125
- paginator.select('[on-click="_next"]').click()
126
- expect(paginator.currentPage).toEqual('10')
127
- })
128
-
129
- it('can be provided with custom styleable elements', () => {
130
- container.innerHTML = /* html */ `
131
- <ark-paginator page-size="12" displayed-pages="5">
132
- <button data-first slot="first">
133
- <span style="pointer-events: none">FIRST</span>
134
- </button>
135
- <button data-previous slot="previous">BACK</button>
136
- <button data-page-general slot="page"></button>
137
- <button data-next slot="next"></button>
138
- <button data-last slot="last"></button>
139
- </ark-paginator>
140
- `
109
+ paginator.select('[data-page="4"]').click()
110
+ assert.deepStrictEqual(paginator.currentPage, '4')
111
+
112
+ paginator.select('[data-page="6"]').click()
113
+ assert.deepStrictEqual(paginator.currentPage, '6')
114
+
115
+ paginator.select('[on-click="_prev"]').click()
116
+ assert.deepStrictEqual(paginator.currentPage, '5')
117
+
118
+ paginator.select('[on-click="_next"]').click()
119
+ assert.deepStrictEqual(paginator.currentPage, '6')
120
+
121
+ paginator.select('[on-click="_first"]').click()
122
+ assert.deepStrictEqual(paginator.currentPage, '1')
123
+
124
+ paginator.select('[on-click="_last"]').click()
125
+ assert.deepStrictEqual(paginator.currentPage, '10')
126
+
127
+ paginator.select('[on-click="_next"]').click()
128
+ assert.deepStrictEqual(paginator.currentPage, '10')
129
+ })
141
130
 
142
- const paginator = container.querySelector('ark-paginator')
143
-
144
- expect(paginator.querySelector('[data-first]').innerHTML.trim()).toEqual(
145
- '<span style="pointer-events: none">FIRST</span>')
146
- expect(paginator.querySelector('[data-previous]').innerHTML.trim()).toEqual(
147
- 'BACK')
148
- expect(paginator.querySelector('[data-page-general]')).toBeTruthy()
149
- expect(paginator.querySelector('[data-next]')).toBeTruthy()
150
- expect(paginator.querySelector('[data-last]')).toBeTruthy()
151
- })
131
+ it('can be provided with custom styleable elements', () => {
132
+ setup();
133
+ container.innerHTML = /* html */ `
134
+ <ark-paginator page-size="12" displayed-pages="5">
135
+ <button data-first slot="first">
136
+ <span style="pointer-events: none">FIRST</span>
137
+ </button>
138
+ <button data-previous slot="previous">BACK</button>
139
+ <button data-page-general slot="page"></button>
140
+ <button data-next slot="next"></button>
141
+ <button data-last slot="last"></button>
142
+ </ark-paginator>
143
+ `
144
+
145
+ const paginator = container.querySelector('ark-paginator')
146
+
147
+ assert.deepStrictEqual(
148
+ paginator.querySelector('[data-first]').innerHTML.trim(),
149
+ '<span style="pointer-events: none">FIRST</span>'
150
+ )
151
+ assert.deepStrictEqual(paginator.querySelector('[data-previous]').innerHTML.trim(), 'BACK')
152
+ assert.ok(paginator.querySelector('[data-page-general]'))
153
+ assert.ok(paginator.querySelector('[data-next]'))
154
+ assert.ok(paginator.querySelector('[data-last]'))
152
155
  })
@@ -1,4 +1,4 @@
1
- import { Component } from '../../../base/component/index.js'
1
+ import { Component } from '#base/index.js'
2
2
  import styles from '../styles/index.js'
3
3
 
4
4
  const tag = 'ark-spinner'
@@ -1,50 +1,45 @@
1
+ import { it } from 'node:test'
2
+ import assert from 'node:assert/strict'
1
3
  import './spinner.js'
2
4
 
3
- describe('Spinner', () => {
4
- let container = null
5
+ let container = null
5
6
 
6
- beforeEach(() => {
7
- container = document.createElement('div')
8
- document.body.appendChild(container)
9
- })
7
+ const setup = () => {
8
+ document.body.innerHTML = ''
9
+ container = document.createElement('div')
10
+ document.body.appendChild(container)
11
+ }
10
12
 
11
- afterEach(() => {
12
- container.remove()
13
- container = null
14
- })
13
+ it('can be instantiated', () => {
14
+ setup()
15
+ container.innerHTML = /* html */ `
16
+ <ark-spinner></ark-spinner>
17
+ `
18
+ const spinner = container.querySelector('ark-spinner')
15
19
 
16
- it('can be instantiated', () => {
17
- container.innerHTML = /* html */ `
18
- <ark-spinner></ark-spinner>
19
- `
20
- const spinner = container.querySelector('ark-spinner')
21
-
22
- expect(spinner).toBeTruthy
23
- expect(spinner).toBe(spinner.init())
24
- })
25
-
26
- it('Different types of spinner can be used', () => {
27
- container.innerHTML = /* html */ `
28
- <ark-spinner type="chase"></ark-spinner>
29
- <ark-spinner type="rect"></ark-spinner>
30
- <ark-spinner type="loader"></ark-spinner>
31
- <ark-spinner type="bounce"></ark-spinner>
32
- `
33
- const spinner = container.querySelector('ark-spinner')
34
- const loader = spinner.loader
20
+ assert.ok(spinner)
21
+ assert.strictEqual(spinner, spinner.init())
22
+ })
35
23
 
36
- expect(spinner.loader).toBeCalled
37
- })
24
+ it('Different types of spinner can be used', () => {
25
+ setup()
26
+ container.innerHTML = /* html */ `
27
+ <ark-spinner type="chase"></ark-spinner>
28
+ <ark-spinner type="rect"></ark-spinner>
29
+ <ark-spinner type="loader"></ark-spinner>
30
+ <ark-spinner type="bounce"></ark-spinner>
31
+ `
32
+ const spinner = container.querySelector('ark-spinner')
33
+ assert.ok(spinner.loader)
34
+ })
38
35
 
39
- it('Can set the scale of the spinner', () => {
40
- container.innerHTML = /* html */ `
41
- <ark-spinner scale="2.5" type="chase"></ark-spinner>
42
- `
43
- const spinner = container.querySelector('ark-spinner')
36
+ it('Can set the scale of the spinner', () => {
37
+ setup()
38
+ container.innerHTML = /* html */ `
39
+ <ark-spinner scale="2.5" type="chase"></ark-spinner>
40
+ `
41
+ const spinner = container.querySelector('ark-spinner')
44
42
 
45
- expect(spinner.loader).toBeCalled
46
- expect(spinner.style.transform.split(')')[0].split('(')[1]).toBe(
47
- spinner.scale
48
- )
49
- })
43
+ assert.ok(spinner.loader)
44
+ assert.strictEqual(spinner.style.transform.split(')')[0].split('(')[1], spinner.scale)
50
45
  })
@@ -1,4 +1,4 @@
1
- import { Component } from '../../../base/component/index.js'
1
+ import { Component } from "#base/index.js"
2
2
 
3
3
  const tag = 'ark-splitview-detail'
4
4
  export class SplitViewDetail extends Component {
@@ -1,6 +1,10 @@
1
- import { Component } from 'base/component'
1
+ import { it } from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { Component } from '#base/index.js'
2
4
  import './splitview.detail.js'
3
5
 
6
+ /** @import {SplitViewDetail} from './splitview.detail.js' */
7
+
4
8
  class MockMain extends Component {
5
9
  init (context = {}) {
6
10
  this.name = this.name || context.name || null
@@ -16,77 +20,77 @@ class MockMain extends Component {
16
20
  }
17
21
  Component.define('mock-main', MockMain)
18
22
 
19
- describe('SplitViewDetail', () => {
20
- let container = null
21
- beforeEach(() => {
22
- container = document.createElement('div')
23
- document.body.appendChild(container)
24
- })
25
-
26
- afterEach(() => {
27
- container.remove()
28
- container = null
29
- })
30
-
31
- it('can be instantiated', () => {
32
- container.innerHTML = `
33
- <ark-splitview-detail>
34
- </ark-splitview-detail>
35
- `
36
- const detail = container.querySelector('ark-splitview-detail')
37
- expect(detail).toBeTruthy()
38
-
39
- expect(detail).toBe(detail.init())
40
- })
41
-
42
- it('can be instantiated with an inner main Component', () => {
43
- container.innerHTML = /* html */`
44
- <ark-splitview-detail>
45
- <mock-main>MAIN CONTENT</mock-main>
46
- </ark-splitview-detail>
47
- `
48
- const detail = container.querySelector('ark-splitview-detail')
49
-
50
- expect(detail.firstElementChild.textContent).toEqual('MAIN CONTENT')
51
- })
52
-
53
- it('can initialize its main Component', () => {
54
- container.innerHTML = /* html */`
55
- <ark-splitview-detail>
56
- <mock-main></mock-main>
57
- </ark-splitview-detail>
58
- `
59
- const detail = container.querySelector('ark-splitview-detail')
60
-
61
- detail.init({ name: 'Servagro' }).render()
62
-
63
- expect(detail.firstElementChild.textContent).toEqual('Servagro')
64
- })
65
-
66
- it('can manipulate its hidden attribute', () => {
67
- container.innerHTML = /* html */`
68
- <ark-splitview-detail>
69
- <mock-main></mock-main>
70
- </ark-splitview-detail>
71
- `
72
- const detail = container.querySelector('ark-splitview-detail')
73
-
74
- detail.show()
75
- expect(detail.hasAttribute('hidden')).toBeFalsy()
76
-
77
- detail.hide()
78
- expect(detail.hasAttribute('hidden')).toBeTruthy()
79
- })
80
-
81
- it('listens to close events to hide itself', () => {
82
- container.innerHTML = /* html */`
83
- <ark-splitview-detail>
84
- <mock-main></mock-main>
85
- </ark-splitview-detail>
86
- `
87
- const detail = container.querySelector('ark-splitview-detail')
88
- detail.dispatchEvent(new Event('close'))
89
-
90
- expect(detail.hasAttribute('hidden')).toBeTruthy()
91
- })
23
+ let container = null
24
+
25
+ const setup = () => {
26
+ document.body.innerHTML = '';
27
+ container = document.createElement('div')
28
+ document.body.appendChild(container)
29
+ };
30
+
31
+ it('can be instantiated', () => {
32
+ setup();
33
+ container.innerHTML = `
34
+ <ark-splitview-detail>
35
+ </ark-splitview-detail>
36
+ `
37
+ const detail = container.querySelector('ark-splitview-detail')
38
+ assert.ok(detail)
39
+
40
+ assert.strictEqual(detail, detail.init())
41
+ })
42
+
43
+ it('can be instantiated with an inner main Component', () => {
44
+ setup();
45
+ container.innerHTML = /* html */`
46
+ <ark-splitview-detail>
47
+ <mock-main>MAIN CONTENT</mock-main>
48
+ </ark-splitview-detail>
49
+ `
50
+ const detail = container.querySelector('ark-splitview-detail')
51
+
52
+ assert.deepStrictEqual(detail.firstElementChild.textContent, 'MAIN CONTENT')
53
+ })
54
+
55
+ it('can initialize its main Component', () => {
56
+ setup();
57
+ container.innerHTML = /* html */`
58
+ <ark-splitview-detail>
59
+ <mock-main></mock-main>
60
+ </ark-splitview-detail>
61
+ `
62
+ const detail = container.querySelector('ark-splitview-detail')
63
+
64
+ detail.init({ name: 'Servagro' }).render()
65
+
66
+ assert.deepStrictEqual(detail.firstElementChild.textContent, 'Servagro')
67
+ })
68
+
69
+ it('can manipulate its hidden attribute', () => {
70
+ setup();
71
+ container.innerHTML = /* html */`
72
+ <ark-splitview-detail>
73
+ <mock-main></mock-main>
74
+ </ark-splitview-detail>
75
+ `
76
+ const detail = container.querySelector('ark-splitview-detail')
77
+
78
+ detail.show()
79
+ assert.ok(!detail.hasAttribute('hidden'))
80
+
81
+ detail.hide()
82
+ assert.ok(detail.hasAttribute('hidden'))
83
+ })
84
+
85
+ it('listens to close events to hide itself', () => {
86
+ setup();
87
+ container.innerHTML = /* html */`
88
+ <ark-splitview-detail>
89
+ <mock-main></mock-main>
90
+ </ark-splitview-detail>
91
+ `
92
+ const detail = container.querySelector('ark-splitview-detail')
93
+ detail.dispatchEvent(new Event('close'))
94
+
95
+ assert.ok(detail.hasAttribute('hidden'))
92
96
  })
@@ -1,17 +1,50 @@
1
- import { Component, css } from '../../../base/component/index.js'
1
+ import { Component, css } from "#base/index.js"
2
+
3
+ /** @import {SplitViewDetail} from './splitview.detail.js' */
2
4
 
3
5
  const tag = 'ark-splitview'
4
6
  export class SplitView extends Component {
5
7
  constructor () {
6
8
  super()
7
9
  this.binding = 'splitview-listen'
8
- this.setDimensions()
9
- globalThis.addEventListener('resize', this.setDimensions.bind(this))
10
+ this._onResize = this.setDimensions.bind(this)
11
+ this._onMasterChange = this.onMasterChange.bind(this)
12
+ this._master = null
10
13
  }
11
14
 
12
15
  setDimensions () {
13
- this.style.setProperty('--inner-height', `${innerHeight}px`)
14
- this.style.setProperty('--inner-width', `${innerWidth}px`)
16
+ if (typeof globalThis.innerHeight !== 'number') return
17
+ if (typeof globalThis.innerWidth !== 'number') return
18
+
19
+ this.style.setProperty('--inner-height', `${globalThis.innerHeight}px`)
20
+ this.style.setProperty('--inner-width', `${globalThis.innerWidth}px`)
21
+ }
22
+
23
+ connectedCallback () {
24
+ this.setDimensions()
25
+ globalThis.addEventListener('resize', this._onResize)
26
+ super.connectedCallback()
27
+ }
28
+
29
+ disconnectedCallback () {
30
+ globalThis.removeEventListener('resize', this._onResize)
31
+ this._removeMasterListener()
32
+ super.disconnectedCallback()
33
+ }
34
+
35
+ _setMasterListener () {
36
+ const master = this.master
37
+ if (master === this._master) return
38
+
39
+ this._removeMasterListener()
40
+ this._master = master
41
+ this._master?.addEventListener('master-change', this._onMasterChange)
42
+ }
43
+
44
+ _removeMasterListener () {
45
+ if (!this._master) return
46
+ this._master.removeEventListener('master-change', this._onMasterChange)
47
+ this._master = null
15
48
  }
16
49
 
17
50
  get master () {
@@ -19,15 +52,12 @@ export class SplitView extends Component {
19
52
  }
20
53
 
21
54
  get detail () {
22
- return this.select('ark-splitview-detail')
55
+ return /** @type {SplitViewDetail} */ (this.select('ark-splitview-detail'))
23
56
  }
24
57
 
25
58
  render () {
26
59
  this.renderDetail()
27
- if (this.master) {
28
- this.master.addEventListener(
29
- 'master-change', this.onMasterChange.bind(this))
30
- }
60
+ this._setMasterListener()
31
61
  return super.render()
32
62
  }
33
63