@coreui/data-grid 0.1.0-rc.0 → 0.2.0-rc.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 (137) hide show
  1. package/README.md +5 -4
  2. package/dist/css/data-grid.css +149 -31
  3. package/dist/css/data-grid.css.map +1 -1
  4. package/dist/css/data-grid.min.css +2 -2
  5. package/dist/css/data-grid.min.css.map +1 -1
  6. package/dist/js/clipboard.cjs +56 -0
  7. package/dist/js/clipboard.cjs.map +1 -0
  8. package/dist/js/clipboard.mjs +54 -0
  9. package/dist/js/clipboard.mjs.map +1 -0
  10. package/dist/js/csv.cjs +36 -59
  11. package/dist/js/csv.cjs.map +1 -1
  12. package/dist/js/csv.mjs +35 -55
  13. package/dist/js/csv.mjs.map +1 -1
  14. package/dist/js/data-grid.esm.js +14078 -9332
  15. package/dist/js/data-grid.esm.js.map +1 -1
  16. package/dist/js/data-grid.esm.min.js +6 -6
  17. package/dist/js/data-grid.esm.min.js.map +1 -1
  18. package/dist/js/data-grid.js +14377 -9634
  19. package/dist/js/data-grid.js.map +1 -1
  20. package/dist/js/data-grid.lite.esm.js +10476 -0
  21. package/dist/js/data-grid.lite.esm.js.map +1 -0
  22. package/dist/js/data-grid.lite.esm.min.js +8 -0
  23. package/dist/js/data-grid.lite.esm.min.js.map +1 -0
  24. package/dist/js/data-grid.lite.js +10489 -0
  25. package/dist/js/data-grid.lite.js.map +1 -0
  26. package/dist/js/data-grid.lite.min.js +8 -0
  27. package/dist/js/data-grid.lite.min.js.map +1 -0
  28. package/dist/js/data-grid.lite.mjs +10476 -0
  29. package/dist/js/data-grid.lite.mjs.map +1 -0
  30. package/dist/js/data-grid.min.js +6 -6
  31. package/dist/js/data-grid.min.js.map +1 -1
  32. package/dist/js/data-grid.mjs +14078 -9332
  33. package/dist/js/data-grid.mjs.map +1 -1
  34. package/dist/js/drag.cjs +459 -0
  35. package/dist/js/drag.cjs.map +1 -0
  36. package/dist/js/drag.mjs +456 -0
  37. package/dist/js/drag.mjs.map +1 -0
  38. package/dist/js/export-table-CNAKStzj.mjs +26 -0
  39. package/dist/js/export-table-CNAKStzj.mjs.map +1 -0
  40. package/dist/js/export-table-doIwvE5U.cjs +55 -0
  41. package/dist/js/export-table-doIwvE5U.cjs.map +1 -0
  42. package/dist/js/filters.cjs +89 -132
  43. package/dist/js/filters.cjs.map +1 -1
  44. package/dist/js/filters.mjs +88 -128
  45. package/dist/js/filters.mjs.map +1 -1
  46. package/dist/js/labels.cjs +65 -70
  47. package/dist/js/labels.cjs.map +1 -1
  48. package/dist/js/labels.mjs +64 -66
  49. package/dist/js/labels.mjs.map +1 -1
  50. package/dist/js/print.cjs +66 -0
  51. package/dist/js/print.cjs.map +1 -0
  52. package/dist/js/print.mjs +64 -0
  53. package/dist/js/print.mjs.map +1 -0
  54. package/dist/js/validate.cjs +43 -0
  55. package/dist/js/validate.cjs.map +1 -0
  56. package/dist/js/validate.mjs +42 -0
  57. package/dist/js/validate.mjs.map +1 -0
  58. package/dist/js/xlsx.cjs +240 -0
  59. package/dist/js/xlsx.cjs.map +1 -0
  60. package/dist/js/xlsx.mjs +238 -0
  61. package/dist/js/xlsx.mjs.map +1 -0
  62. package/dist/types/base-component.d.ts +28 -18
  63. package/dist/types/data-grid.d.ts +26 -13
  64. package/dist/types/dom/data.d.ts +15 -0
  65. package/dist/types/dom/event-handler.d.ts +21 -10
  66. package/dist/types/dom/manipulator.d.ts +15 -8
  67. package/dist/types/engine/data-source.d.ts +1 -1
  68. package/dist/types/engine/features-lite.d.ts +25 -0
  69. package/dist/types/engine/features.d.ts +35 -0
  70. package/dist/types/engine/table.d.ts +3 -3
  71. package/dist/types/engine/validate.d.mts +1 -0
  72. package/dist/types/engine/validate.d.ts +20 -0
  73. package/dist/types/engine/virtualizer.d.ts +2 -0
  74. package/dist/types/icons.d.ts +6 -4
  75. package/dist/types/index-lite.d.mts +1 -0
  76. package/dist/types/index-lite.d.ts +19 -0
  77. package/dist/types/index.d.ts +11 -2
  78. package/dist/types/types.d.ts +53 -31
  79. package/dist/types/ui/body.d.ts +6 -3
  80. package/dist/types/ui/header.d.ts +3 -2
  81. package/dist/types/ui/loading.d.ts +1 -1
  82. package/dist/types/ui/pinning.d.ts +1 -1
  83. package/dist/types/ui/toolbar.d.ts +10 -2
  84. package/dist/types/util/clipboard.d.mts +1 -0
  85. package/dist/types/util/clipboard.d.ts +29 -0
  86. package/dist/types/util/config.d.ts +27 -10
  87. package/dist/types/util/csv.d.ts +5 -5
  88. package/dist/types/util/drag.d.mts +1 -0
  89. package/dist/types/util/drag.d.ts +48 -0
  90. package/dist/types/util/export-table.d.ts +47 -0
  91. package/dist/types/util/index.d.ts +66 -10
  92. package/dist/types/util/print.d.mts +1 -0
  93. package/dist/types/util/print.d.ts +32 -0
  94. package/dist/types/util/sanitizer.d.ts +15 -11
  95. package/dist/types/util/xlsx.d.mts +1 -0
  96. package/dist/types/util/xlsx.d.ts +17 -0
  97. package/dist/types/util/zip.d.ts +11 -0
  98. package/package.json +88 -10
  99. package/scss/data-grid.scss +204 -16
  100. package/src/{base-component.js → base-component.ts} +21 -17
  101. package/src/data-grid.ts +507 -200
  102. package/src/dom/{data.js → data.ts} +13 -10
  103. package/src/dom/event-handler.ts +380 -0
  104. package/src/dom/{manipulator.js → manipulator.ts} +11 -11
  105. package/src/engine/data-source.ts +7 -3
  106. package/src/engine/features-lite.ts +47 -0
  107. package/src/engine/features.ts +68 -0
  108. package/src/engine/table.ts +80 -47
  109. package/src/engine/validate.ts +64 -0
  110. package/src/engine/virtualizer.ts +17 -1
  111. package/src/icons.ts +11 -5
  112. package/src/index-lite.ts +85 -0
  113. package/src/index.ts +30 -2
  114. package/src/labels.ts +6 -4
  115. package/src/types.ts +87 -32
  116. package/src/ui/body.ts +73 -17
  117. package/src/ui/header.ts +51 -26
  118. package/src/ui/loading.ts +2 -2
  119. package/src/ui/pinning.ts +16 -16
  120. package/src/ui/toolbar.ts +27 -3
  121. package/src/util/clipboard.ts +112 -0
  122. package/src/util/{config.js → config.ts} +25 -11
  123. package/src/util/csv.ts +11 -30
  124. package/src/util/drag.ts +798 -0
  125. package/src/util/export-table.ts +86 -0
  126. package/src/util/{index.js → index.ts} +55 -35
  127. package/src/util/print.ts +125 -0
  128. package/src/util/{sanitizer.js → sanitizer.ts} +17 -13
  129. package/src/util/xlsx.ts +183 -0
  130. package/src/util/zip.ts +170 -0
  131. package/src/base-component.d.ts +0 -19
  132. package/src/dom/event-handler.d.ts +0 -11
  133. package/src/dom/event-handler.js +0 -331
  134. package/src/dom/manipulator.d.ts +0 -9
  135. package/src/util/config.d.ts +0 -11
  136. package/src/util/index.d.ts +0 -10
  137. package/src/util/sanitizer.d.ts +0 -11
@@ -1,331 +0,0 @@
1
- // Vendored from https://github.com/coreui/coreui-pro/blob/bc4daf1cd79d527bf665d615c0a31f53ab0c3d4e/js/src/dom/event-handler.js — sync manually
2
- /**
3
- * --------------------------------------------------------------------------
4
- * CoreUI dom/event-handler.js
5
- * Licensed under MIT (https://github.com/coreui/coreui/blob/main/LICENSE)
6
- *
7
- * This is a modified version of the Bootstrap's dom/event-handler.js
8
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
9
- * --------------------------------------------------------------------------
10
- */
11
-
12
- import { getjQuery } from '../util/index.js'
13
-
14
- /**
15
- * Constants
16
- */
17
-
18
- const namespaceRegex = /[^.]*(?=\..*)\.|.*/
19
- const stripNameRegex = /\..*/
20
- const stripUidRegex = /::\d+$/
21
- const eventRegistry = {} // Events storage
22
- let uidEvent = 1
23
- const customEvents = {
24
- mouseenter: 'mouseover',
25
- mouseleave: 'mouseout'
26
- }
27
-
28
- const nativeEvents = new Set([
29
- 'click',
30
- 'dblclick',
31
- 'mouseup',
32
- 'mousedown',
33
- 'contextmenu',
34
- 'mousewheel',
35
- 'DOMMouseScroll',
36
- 'mouseover',
37
- 'mouseout',
38
- 'mousemove',
39
- 'selectstart',
40
- 'selectend',
41
- 'keydown',
42
- 'keypress',
43
- 'keyup',
44
- 'orientationchange',
45
- 'touchstart',
46
- 'touchmove',
47
- 'touchend',
48
- 'touchcancel',
49
- 'pointerdown',
50
- 'pointermove',
51
- 'pointerup',
52
- 'pointerleave',
53
- 'pointercancel',
54
- // Local addition over the coreui-pro source: HTML5 drag & drop events used
55
- // by the data grid's column reordering.
56
- 'drag',
57
- 'dragstart',
58
- 'dragend',
59
- 'dragenter',
60
- 'dragleave',
61
- 'dragover',
62
- 'drop',
63
- 'gesturestart',
64
- 'gesturechange',
65
- 'gestureend',
66
- 'focus',
67
- 'blur',
68
- 'change',
69
- 'input',
70
- 'reset',
71
- 'select',
72
- 'submit',
73
- 'focusin',
74
- 'focusout',
75
- 'load',
76
- 'unload',
77
- 'beforeunload',
78
- 'resize',
79
- 'move',
80
- 'DOMContentLoaded',
81
- 'readystatechange',
82
- 'error',
83
- 'abort',
84
- 'scroll'
85
- ])
86
-
87
- /**
88
- * Private methods
89
- */
90
-
91
- function makeEventUid(element, uid) {
92
- return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++
93
- }
94
-
95
- function getElementEvents(element) {
96
- const uid = makeEventUid(element)
97
-
98
- element.uidEvent = uid
99
- eventRegistry[uid] = eventRegistry[uid] || {}
100
-
101
- return eventRegistry[uid]
102
- }
103
-
104
- function bootstrapHandler(element, fn) {
105
- return function handler(event) {
106
- hydrateObj(event, { delegateTarget: element })
107
-
108
- if (handler.oneOff) {
109
- EventHandler.off(element, event.type, fn)
110
- }
111
-
112
- return fn.apply(element, [event])
113
- }
114
- }
115
-
116
- function bootstrapDelegationHandler(element, selector, fn) {
117
- return function handler(event) {
118
- const domElements = element.querySelectorAll(selector)
119
-
120
- for (let { target } = event; target && target !== this; target = target.parentNode) {
121
- for (const domElement of domElements) {
122
- if (domElement !== target) {
123
- continue
124
- }
125
-
126
- hydrateObj(event, { delegateTarget: target })
127
-
128
- if (handler.oneOff) {
129
- EventHandler.off(element, event.type, selector, fn)
130
- }
131
-
132
- return fn.apply(target, [event])
133
- }
134
- }
135
- }
136
- }
137
-
138
- function findHandler(events, callable, delegationSelector = null) {
139
- return Object.values(events)
140
- .find(event => event.callable === callable && event.delegationSelector === delegationSelector)
141
- }
142
-
143
- function normalizeParameters(originalTypeEvent, handler, delegationFunction) {
144
- const isDelegated = typeof handler === 'string'
145
- // TODO: tooltip passes `false` instead of selector, so we need to check
146
- const callable = isDelegated ? delegationFunction : (handler || delegationFunction)
147
- let typeEvent = getTypeEvent(originalTypeEvent)
148
-
149
- if (!nativeEvents.has(typeEvent)) {
150
- typeEvent = originalTypeEvent
151
- }
152
-
153
- return [isDelegated, callable, typeEvent]
154
- }
155
-
156
- function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {
157
- if (typeof originalTypeEvent !== 'string' || !element) {
158
- return
159
- }
160
-
161
- let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)
162
-
163
- // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position
164
- // this prevents the handler from being dispatched the same way as mouseover or mouseout does
165
- if (originalTypeEvent in customEvents) {
166
- const wrapFunction = fn => {
167
- return function (event) {
168
- if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {
169
- return fn.call(this, event)
170
- }
171
- }
172
- }
173
-
174
- callable = wrapFunction(callable)
175
- }
176
-
177
- const events = getElementEvents(element)
178
- const handlers = events[typeEvent] || (events[typeEvent] = {})
179
- const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)
180
-
181
- if (previousFunction) {
182
- previousFunction.oneOff = previousFunction.oneOff && oneOff
183
-
184
- return
185
- }
186
-
187
- const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))
188
- const fn = isDelegated ?
189
- bootstrapDelegationHandler(element, handler, callable) :
190
- bootstrapHandler(element, callable)
191
-
192
- fn.delegationSelector = isDelegated ? handler : null
193
- fn.callable = callable
194
- fn.oneOff = oneOff
195
- fn.uidEvent = uid
196
- handlers[uid] = fn
197
-
198
- element.addEventListener(typeEvent, fn, isDelegated)
199
- }
200
-
201
- function removeHandler(element, events, typeEvent, handler, delegationSelector) {
202
- const fn = findHandler(events[typeEvent], handler, delegationSelector)
203
-
204
- if (!fn) {
205
- return
206
- }
207
-
208
- element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))
209
- delete events[typeEvent][fn.uidEvent]
210
- }
211
-
212
- function removeNamespacedHandlers(element, events, typeEvent, namespace) {
213
- const storeElementEvent = events[typeEvent] || {}
214
-
215
- for (const [handlerKey, event] of Object.entries(storeElementEvent)) {
216
- if (handlerKey.includes(namespace)) {
217
- removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)
218
- }
219
- }
220
- }
221
-
222
- function getTypeEvent(event) {
223
- // allow to get the native events from namespaced events ('click.coreui.button' --> 'click')
224
- event = event.replace(stripNameRegex, '')
225
- return customEvents[event] || event
226
- }
227
-
228
- const EventHandler = {
229
- on(element, event, handler, delegationFunction) {
230
- addHandler(element, event, handler, delegationFunction, false)
231
- },
232
-
233
- one(element, event, handler, delegationFunction) {
234
- addHandler(element, event, handler, delegationFunction, true)
235
- },
236
-
237
- off(element, originalTypeEvent, handler, delegationFunction) {
238
- if (typeof originalTypeEvent !== 'string' || !element) {
239
- return
240
- }
241
-
242
- const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)
243
- const inNamespace = typeEvent !== originalTypeEvent
244
- const events = getElementEvents(element)
245
- const storeElementEvent = events[typeEvent] || {}
246
- const isNamespace = originalTypeEvent.startsWith('.')
247
-
248
- if (typeof callable !== 'undefined') {
249
- // Simplest case: handler is passed, remove that listener ONLY.
250
- if (!Object.keys(storeElementEvent).length) {
251
- return
252
- }
253
-
254
- removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)
255
- return
256
- }
257
-
258
- if (isNamespace) {
259
- for (const elementEvent of Object.keys(events)) {
260
- removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))
261
- }
262
- }
263
-
264
- for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {
265
- const handlerKey = keyHandlers.replace(stripUidRegex, '')
266
-
267
- if (!inNamespace || originalTypeEvent.includes(handlerKey)) {
268
- removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)
269
- }
270
- }
271
- },
272
-
273
- trigger(element, event, args) {
274
- if (typeof event !== 'string' || !element) {
275
- return null
276
- }
277
-
278
- const $ = getjQuery()
279
- const typeEvent = getTypeEvent(event)
280
- const inNamespace = event !== typeEvent
281
-
282
- let jQueryEvent = null
283
- let bubbles = true
284
- let nativeDispatch = true
285
- let defaultPrevented = false
286
-
287
- if (inNamespace && $) {
288
- jQueryEvent = $.Event(event, args)
289
-
290
- $(element).trigger(jQueryEvent)
291
- bubbles = !jQueryEvent.isPropagationStopped()
292
- nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()
293
- defaultPrevented = jQueryEvent.isDefaultPrevented()
294
- }
295
-
296
- const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args)
297
-
298
- if (defaultPrevented) {
299
- evt.preventDefault()
300
- }
301
-
302
- if (nativeDispatch) {
303
- element.dispatchEvent(evt)
304
- }
305
-
306
- if (evt.defaultPrevented && jQueryEvent) {
307
- jQueryEvent.preventDefault()
308
- }
309
-
310
- return evt
311
- }
312
- }
313
-
314
- function hydrateObj(obj, meta = {}) {
315
- for (const [key, value] of Object.entries(meta)) {
316
- try {
317
- obj[key] = value
318
- } catch {
319
- Object.defineProperty(obj, key, {
320
- configurable: true,
321
- get() {
322
- return value
323
- }
324
- })
325
- }
326
- }
327
-
328
- return obj
329
- }
330
-
331
- export default EventHandler
@@ -1,9 +0,0 @@
1
- // Hand-written types for the vendored manipulator.js (see the provenance header there)
2
- declare const Manipulator: {
3
- setDataAttribute(element: Element, key: string, value: unknown): void
4
- removeDataAttribute(element: Element, key: string): void
5
- getDataAttributes(element: Element): Record<string, unknown>
6
- getDataAttribute(element: Element, key: string): unknown
7
- }
8
-
9
- export default Manipulator
@@ -1,11 +0,0 @@
1
- // Hand-written types for the vendored config.js (see the provenance header there)
2
- export default class Config {
3
- static get Default(): unknown
4
- static get DefaultType(): unknown
5
- static get NAME(): string
6
-
7
- _getConfig(config?: unknown): any
8
- _configAfterMerge(config: any): any
9
- _mergeConfigObj(config?: unknown, element?: Element): any
10
- _typeCheckConfig(config: Record<string, unknown>, configTypes?: Record<string, string>): void
11
- }
@@ -1,10 +0,0 @@
1
- // Hand-written types for the vendored util/index.js (see the provenance header there)
2
- export function defineJQueryPlugin(plugin: { NAME: string; jQueryInterface: (this: any, ...args: any[]) => unknown }): void
3
- export function executeAfterTransition(callback: () => void, transitionElement: Element, waitForTransition?: boolean): void
4
- export function getElement(object: unknown): HTMLElement | null
5
- export function getjQuery(): unknown
6
- export function getUID(prefix: string): string
7
- export function isElement(object: unknown): boolean
8
- export function isRTL(): boolean
9
- export function isVisible(element: Element): boolean
10
- export function toType(object: unknown): string
@@ -1,11 +0,0 @@
1
- // Hand-written types for the vendored sanitizer.js (see the provenance header there)
2
- export type Allowlist = Record<string, Array<string | RegExp>>
3
-
4
- export declare const DefaultAllowlist: Allowlist
5
- export declare const SVGAllowlist: Allowlist
6
- export declare function escapeHtml(unsafeText: string): string
7
- export declare function sanitizeHtml(
8
- unsafeHtml: string,
9
- allowList: Allowlist,
10
- sanitizeFunction?: ((html: string) => string) | null
11
- ): string