@vialiq/web-components 0.19.0 → 0.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +250 -0
- package/base/controllers/floating-controller.d.ts +2 -2
- package/base/controllers/floating-controller.d.ts.map +1 -1
- package/base/flatpickr-mixin.d.ts +38 -0
- package/base/flatpickr-mixin.d.ts.map +1 -0
- package/base/validity-mixin.d.ts +2 -0
- package/base/validity-mixin.d.ts.map +1 -1
- package/button/vi-button.d.ts +2 -0
- package/button/vi-button.d.ts.map +1 -1
- package/button/vi-button.js +40 -11
- package/date-picker/i18n.d.ts +19 -0
- package/date-picker/i18n.d.ts.map +1 -0
- package/date-picker/index.d.ts +4 -0
- package/date-picker/index.d.ts.map +1 -0
- package/date-picker/index.js +2 -0
- package/date-picker/iso-week.d.ts +18 -0
- package/date-picker/iso-week.d.ts.map +1 -0
- package/date-picker/locale-registry.d.ts +8 -0
- package/date-picker/locale-registry.d.ts.map +1 -0
- package/date-picker/plugin-registry.d.ts +7 -0
- package/date-picker/plugin-registry.d.ts.map +1 -0
- package/date-picker/plugin-utils.d.ts +10 -0
- package/date-picker/plugin-utils.d.ts.map +1 -0
- package/date-picker/plugins/vi-month-year-plugin.d.ts +17 -0
- package/date-picker/plugins/vi-month-year-plugin.d.ts.map +1 -0
- package/date-picker/plugins/vi-range-plugin.d.ts +12 -0
- package/date-picker/plugins/vi-range-plugin.d.ts.map +1 -0
- package/date-picker/plugins/vi-shadow-dom-plugin.d.ts +18 -0
- package/date-picker/plugins/vi-shadow-dom-plugin.d.ts.map +1 -0
- package/date-picker/types.d.ts +34 -0
- package/date-picker/types.d.ts.map +1 -0
- package/date-picker/vi-date-picker-input.d.ts +34 -0
- package/date-picker/vi-date-picker-input.d.ts.map +1 -0
- package/date-picker/vi-date-picker-input.js +599 -0
- package/date-picker/vi-date-picker.d.ts +95 -0
- package/date-picker/vi-date-picker.d.ts.map +1 -0
- package/date-picker/vi-date-picker.js +2273 -0
- package/index.d.ts +8 -0
- package/index.js +7 -0
- package/keyboard-controller-D3htDhGR.js +322 -0
- package/package.json +23 -4
package/index.d.ts
CHANGED
|
@@ -38,4 +38,12 @@ export { ViTag } from './tag/vi-tag.js';
|
|
|
38
38
|
export type { TagVariant, TagAppearance, TagSize } from './tag/vi-tag.js';
|
|
39
39
|
export { ViSwitch } from './switch/vi-switch.js';
|
|
40
40
|
export type { SwitchSize, LabelPlacement } from './switch/vi-switch.js';
|
|
41
|
+
export { ViSelect } from './select/vi-select.js';
|
|
42
|
+
export { ViSelectOption } from './select/vi-select-option.js';
|
|
43
|
+
export { ViSelectGroup } from './select/vi-select-group.js';
|
|
44
|
+
export { ViCombobox } from './combobox/vi-combobox.js';
|
|
45
|
+
export { ViComboboxItem } from './combobox/vi-combobox-item.js';
|
|
46
|
+
export { ViDatePicker, VIALIQ_CHANGE } from './date-picker/vi-date-picker.js';
|
|
47
|
+
export { ViDatePickerInput } from './date-picker/vi-date-picker-input.js';
|
|
48
|
+
export type { DatePickerMode, DatePickerChangeDetail } from './date-picker/types.js';
|
|
41
49
|
//# sourceMappingURL=index.d.ts.map
|
package/index.js
CHANGED
|
@@ -20,3 +20,10 @@ export { ViChipGroup } from './chip/vi-chip-group.js';
|
|
|
20
20
|
export { ViAnimation } from './animation/vi-animation.js';
|
|
21
21
|
export { ViTag } from './tag/vi-tag.js';
|
|
22
22
|
export { ViSwitch } from './switch/vi-switch.js';
|
|
23
|
+
export { ViSelect } from './select/vi-select.js';
|
|
24
|
+
export { ViSelectOption } from './select/vi-select-option.js';
|
|
25
|
+
export { ViSelectGroup } from './select/vi-select-group.js';
|
|
26
|
+
export { ViCombobox } from './combobox/vi-combobox.js';
|
|
27
|
+
export { ViComboboxItem } from './combobox/vi-combobox-item.js';
|
|
28
|
+
export { VIALIQ_CHANGE, ViDatePicker } from './date-picker/vi-date-picker.js';
|
|
29
|
+
export { ViDatePickerInput } from './date-picker/vi-date-picker-input.js';
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
import { autoUpdate, offset, flip, size, computePosition } from '@floating-ui/dom';
|
|
2
|
+
import { O as OverlayManager } from './overlay-manager-Ch_6fr_D.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* FloatingController
|
|
6
|
+
*
|
|
7
|
+
* A Lit Reactive Controller that manages `@floating-ui/dom` positioning logic.
|
|
8
|
+
* It abstracts away the complex math and event listeners (autoUpdate) required to
|
|
9
|
+
* keep a popup/dropdown anchored to a reference element during scrolling/resizing.
|
|
10
|
+
*
|
|
11
|
+
* It also automatically registers the floating element with the `OverlayManager`
|
|
12
|
+
* to ensure correct z-index stacking when `hoist` is true.
|
|
13
|
+
*/ class FloatingController {
|
|
14
|
+
host;
|
|
15
|
+
options;
|
|
16
|
+
_cleanup;
|
|
17
|
+
_overlayZIndex = null;
|
|
18
|
+
constructor(host, options){
|
|
19
|
+
this.host = host;
|
|
20
|
+
this.options = options;
|
|
21
|
+
this.host.addController(this);
|
|
22
|
+
}
|
|
23
|
+
hostDisconnected() {
|
|
24
|
+
this.stop();
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Starts the floating UI `autoUpdate` listener cycle.
|
|
28
|
+
* This should be called when the popover physically opens (e.g., in `updated()`).
|
|
29
|
+
*
|
|
30
|
+
* If `hoist` is true, it also acquires a high z-index from the `OverlayManager`.
|
|
31
|
+
*/ start() {
|
|
32
|
+
const ref = this.options.reference();
|
|
33
|
+
const floating = this.options.floating();
|
|
34
|
+
if (!ref || !floating) return;
|
|
35
|
+
// autoUpdate automatically cleans up previous listeners if called multiple times,
|
|
36
|
+
// but it's safer to just track and call cleanup manually.
|
|
37
|
+
if (this._cleanup) this.stop();
|
|
38
|
+
const hoist = this.options.hoist?.() ?? false;
|
|
39
|
+
// Register with OverlayManager if hoisted
|
|
40
|
+
if (hoist) {
|
|
41
|
+
this._overlayZIndex = OverlayManager.register(floating, 'dropdown');
|
|
42
|
+
floating.style.zIndex = this._overlayZIndex.toString();
|
|
43
|
+
}
|
|
44
|
+
this._cleanup = autoUpdate(ref, floating, ()=>this.updatePosition(), {
|
|
45
|
+
animationFrame: false
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Stops the floating UI `autoUpdate` listener cycle.
|
|
50
|
+
* This should be called when the popover closes, or when the host component disconnects.
|
|
51
|
+
*
|
|
52
|
+
* It also releases its z-index back to the `OverlayManager`.
|
|
53
|
+
*/ stop() {
|
|
54
|
+
if (this._cleanup) {
|
|
55
|
+
this._cleanup();
|
|
56
|
+
this._cleanup = undefined;
|
|
57
|
+
}
|
|
58
|
+
const floating = this.options.floating();
|
|
59
|
+
if (floating && this._overlayZIndex !== null) {
|
|
60
|
+
OverlayManager.unregister(floating);
|
|
61
|
+
this._overlayZIndex = null;
|
|
62
|
+
// Remove inline z-index only if we managed it
|
|
63
|
+
floating.style.removeProperty('z-index');
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Imperatively calculates and applies the new coordinates (`x`, `y`) using Floating UI.
|
|
68
|
+
*
|
|
69
|
+
* This method applies various CSS property resets (`margin`, `bottom`, `right`, `minWidth`)
|
|
70
|
+
* to ensure that the base CSS of the floating element does not distort the absolute coordinates
|
|
71
|
+
* provided by Floating UI.
|
|
72
|
+
*/ async updatePosition() {
|
|
73
|
+
const ref = this.options.reference();
|
|
74
|
+
const floating = this.options.floating();
|
|
75
|
+
if (!ref || !floating) return;
|
|
76
|
+
const placementStr = this.options.placement?.() ?? 'bottom-start';
|
|
77
|
+
const hoist = this.options.hoist?.() ?? false;
|
|
78
|
+
const boundaryOpt = this.options.boundary?.();
|
|
79
|
+
let boundaryElement = 'clippingAncestors';
|
|
80
|
+
if (boundaryOpt instanceof HTMLElement) {
|
|
81
|
+
boundaryElement = boundaryOpt;
|
|
82
|
+
} else if (typeof boundaryOpt === 'string' && boundaryOpt) {
|
|
83
|
+
const customBoundary = document.querySelector(boundaryOpt);
|
|
84
|
+
if (customBoundary) boundaryElement = customBoundary;
|
|
85
|
+
}
|
|
86
|
+
const middlewares = [
|
|
87
|
+
offset(this.options.offset ?? 4),
|
|
88
|
+
flip({
|
|
89
|
+
boundary: boundaryElement,
|
|
90
|
+
fallbackPlacements: [
|
|
91
|
+
'top-start',
|
|
92
|
+
'bottom-start',
|
|
93
|
+
'top-end',
|
|
94
|
+
'bottom-end'
|
|
95
|
+
]
|
|
96
|
+
})
|
|
97
|
+
];
|
|
98
|
+
const matchWidthVal = typeof this.options.matchWidth === 'function' ? this.options.matchWidth() : this.options.matchWidth;
|
|
99
|
+
if (matchWidthVal !== 'none') {
|
|
100
|
+
middlewares.push(size({
|
|
101
|
+
apply: ({ rects })=>{
|
|
102
|
+
if (matchWidthVal !== false) {
|
|
103
|
+
Object.assign(floating.style, {
|
|
104
|
+
width: `${rects.reference.width}px`,
|
|
105
|
+
minWidth: 'auto'
|
|
106
|
+
});
|
|
107
|
+
} else {
|
|
108
|
+
Object.assign(floating.style, {
|
|
109
|
+
width: 'auto',
|
|
110
|
+
minWidth: `${rects.reference.width}px`
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}));
|
|
115
|
+
}
|
|
116
|
+
const { x, y, placement } = await computePosition(ref, floating, {
|
|
117
|
+
placement: placementStr,
|
|
118
|
+
strategy: hoist ? 'fixed' : 'absolute',
|
|
119
|
+
middleware: middlewares
|
|
120
|
+
});
|
|
121
|
+
floating.setAttribute('data-placement', placement);
|
|
122
|
+
Object.assign(floating.style, {
|
|
123
|
+
left: `${x}px`,
|
|
124
|
+
top: `${y}px`,
|
|
125
|
+
right: 'auto',
|
|
126
|
+
bottom: 'auto',
|
|
127
|
+
position: hoist ? 'fixed' : 'absolute',
|
|
128
|
+
margin: '0'
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
class ListboxKeyboardController {
|
|
134
|
+
host;
|
|
135
|
+
config;
|
|
136
|
+
_searchString = '';
|
|
137
|
+
_searchTimeout;
|
|
138
|
+
constructor(host, config){
|
|
139
|
+
this.host = host;
|
|
140
|
+
this.config = config;
|
|
141
|
+
this.host.addController(this);
|
|
142
|
+
}
|
|
143
|
+
hostConnected() {}
|
|
144
|
+
handleKeyDown(e) {
|
|
145
|
+
if (this.host.disabled) return;
|
|
146
|
+
const options = this.config.getFilteredOptions();
|
|
147
|
+
const isSlotted = this.config.getSlottedItems().length > 0;
|
|
148
|
+
const activeIndex = this.config.getActiveIndex();
|
|
149
|
+
switch(e.key){
|
|
150
|
+
case 'ArrowDown':
|
|
151
|
+
e.preventDefault();
|
|
152
|
+
if (!this.host.open) this.config.openDropdown();
|
|
153
|
+
this._navigate(1);
|
|
154
|
+
break;
|
|
155
|
+
case 'ArrowUp':
|
|
156
|
+
e.preventDefault();
|
|
157
|
+
if (!this.host.open) this.config.openDropdown();
|
|
158
|
+
this._navigate(-1);
|
|
159
|
+
break;
|
|
160
|
+
case 'Enter':
|
|
161
|
+
e.preventDefault();
|
|
162
|
+
if (this.host.open) {
|
|
163
|
+
if (isSlotted) {
|
|
164
|
+
const visible = this.config.getVisibleSlottedItems();
|
|
165
|
+
if (activeIndex >= 0 && activeIndex < visible.length) {
|
|
166
|
+
const item = visible[activeIndex];
|
|
167
|
+
this.config.selectOption({
|
|
168
|
+
value: item.value,
|
|
169
|
+
label: item.label || item.value,
|
|
170
|
+
searchText: item.searchText.length > 0 ? item.searchText.join(' ') : undefined,
|
|
171
|
+
group: item.group || undefined,
|
|
172
|
+
disabled: item.disabled,
|
|
173
|
+
icon: item.icon || undefined,
|
|
174
|
+
description: item.description || undefined,
|
|
175
|
+
data: item.data
|
|
176
|
+
});
|
|
177
|
+
} else if (this.host.mode === 'tags' || this.host.mode === 'creatable') {
|
|
178
|
+
this.config.handleCreate();
|
|
179
|
+
}
|
|
180
|
+
} else if (activeIndex >= 0 && activeIndex < options.length) {
|
|
181
|
+
this.config.selectOption(options[activeIndex]);
|
|
182
|
+
} else if (this.host.mode === 'tags' || this.host.mode === 'creatable') {
|
|
183
|
+
this.config.handleCreate();
|
|
184
|
+
}
|
|
185
|
+
} else if (this.host.mode === 'tags' || this.host.mode === 'creatable') {
|
|
186
|
+
this.config.handleCreate();
|
|
187
|
+
} else {
|
|
188
|
+
this.config.openDropdown();
|
|
189
|
+
}
|
|
190
|
+
break;
|
|
191
|
+
case ',':
|
|
192
|
+
if (this.host.mode === 'tags') {
|
|
193
|
+
e.preventDefault();
|
|
194
|
+
this.config.handleCreate();
|
|
195
|
+
}
|
|
196
|
+
break;
|
|
197
|
+
case 'Escape':
|
|
198
|
+
if (this.host.open) {
|
|
199
|
+
e.preventDefault();
|
|
200
|
+
this.config.close();
|
|
201
|
+
}
|
|
202
|
+
break;
|
|
203
|
+
case 'Backspace':
|
|
204
|
+
if (this.host.isSearchable && !this.config.getQuery() && (this.host.mode === 'multi' || this.host.mode === 'tags')) {
|
|
205
|
+
const selected = this.config.getSelectedValues();
|
|
206
|
+
if (selected.length > 0) {
|
|
207
|
+
this.config.removeTag(selected[selected.length - 1]);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
break;
|
|
211
|
+
case 'Home':
|
|
212
|
+
if (this.host.open) {
|
|
213
|
+
e.preventDefault();
|
|
214
|
+
const len = isSlotted ? this.config.getVisibleSlottedItems().length : options.length;
|
|
215
|
+
if (len > 0) this._navigate(1, 0);
|
|
216
|
+
}
|
|
217
|
+
break;
|
|
218
|
+
case 'End':
|
|
219
|
+
if (this.host.open) {
|
|
220
|
+
e.preventDefault();
|
|
221
|
+
const len = isSlotted ? this.config.getVisibleSlottedItems().length : options.length;
|
|
222
|
+
if (len > 0) this._navigate(-1, len - 1);
|
|
223
|
+
}
|
|
224
|
+
break;
|
|
225
|
+
case ' ':
|
|
226
|
+
if (!this.host.isSearchable && !this.host.open) {
|
|
227
|
+
e.preventDefault();
|
|
228
|
+
this.config.openDropdown();
|
|
229
|
+
} else if (!this.host.isSearchable && this.host.open && this._searchString.length > 0) {
|
|
230
|
+
e.preventDefault();
|
|
231
|
+
this._handleTypeAhead(' ');
|
|
232
|
+
}
|
|
233
|
+
break;
|
|
234
|
+
default:
|
|
235
|
+
if (!this.host.isSearchable && e.key.length === 1 && !e.ctrlKey && !e.altKey && !e.metaKey) {
|
|
236
|
+
e.preventDefault();
|
|
237
|
+
this._handleTypeAhead(e.key);
|
|
238
|
+
}
|
|
239
|
+
break;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
_handleTypeAhead(char) {
|
|
243
|
+
if (this._searchTimeout) {
|
|
244
|
+
clearTimeout(this._searchTimeout);
|
|
245
|
+
}
|
|
246
|
+
this._searchTimeout = setTimeout(()=>{
|
|
247
|
+
this._searchString = '';
|
|
248
|
+
this.config.onTypeAheadChange?.(this._searchString);
|
|
249
|
+
}, 1000);
|
|
250
|
+
this._searchString += char.toLowerCase();
|
|
251
|
+
this.config.onTypeAheadChange?.(this._searchString);
|
|
252
|
+
const options = this.config.getFilteredOptions();
|
|
253
|
+
const isSlotted = this.config.getSlottedItems().length > 0;
|
|
254
|
+
const visible = isSlotted ? this.config.getVisibleSlottedItems() : [];
|
|
255
|
+
const len = isSlotted ? visible.length : options.length;
|
|
256
|
+
if (len === 0) return;
|
|
257
|
+
const getLabel = (i)=>{
|
|
258
|
+
if (isSlotted) {
|
|
259
|
+
return (visible[i]?.label || visible[i]?.textContent || '').toLowerCase();
|
|
260
|
+
}
|
|
261
|
+
return (options[i]?.label || options[i]?.value || '').toLowerCase();
|
|
262
|
+
};
|
|
263
|
+
const isDisabled = (i)=>(isSlotted ? visible[i]?.disabled : options[i]?.disabled) ?? false;
|
|
264
|
+
// Start searching from current active index + 1
|
|
265
|
+
const startIdx = Math.max(0, this.config.getActiveIndex());
|
|
266
|
+
let matchIdx = -1;
|
|
267
|
+
// Search after current index
|
|
268
|
+
for(let i = startIdx + 1; i < len; i++){
|
|
269
|
+
if (!isDisabled(i) && getLabel(i).startsWith(this._searchString)) {
|
|
270
|
+
matchIdx = i;
|
|
271
|
+
break;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
// Wrap around to start
|
|
275
|
+
if (matchIdx === -1) {
|
|
276
|
+
for(let i = 0; i <= startIdx; i++){
|
|
277
|
+
if (!isDisabled(i) && getLabel(i).startsWith(this._searchString)) {
|
|
278
|
+
matchIdx = i;
|
|
279
|
+
break;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
if (matchIdx !== -1) {
|
|
284
|
+
this.config.setActiveIndex(matchIdx);
|
|
285
|
+
if (isSlotted) this.config.updateSlottedActiveState(matchIdx);
|
|
286
|
+
this.config.scrollToActiveIndex();
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
_navigate(direction, startFrom) {
|
|
290
|
+
const options = this.config.getFilteredOptions();
|
|
291
|
+
const isSlotted = this.config.getSlottedItems().length > 0;
|
|
292
|
+
const visible = isSlotted ? this.config.getVisibleSlottedItems() : [];
|
|
293
|
+
const len = isSlotted ? visible.length : options.length;
|
|
294
|
+
const isDisabled = (i)=>(isSlotted ? visible[i]?.disabled : options[i]?.disabled) ?? false;
|
|
295
|
+
if (len === 0) {
|
|
296
|
+
this.config.setActiveIndex(-1);
|
|
297
|
+
if (isSlotted) this.config.updateSlottedActiveState(-1);
|
|
298
|
+
return;
|
|
299
|
+
}
|
|
300
|
+
let next = startFrom !== undefined ? startFrom : this.config.getActiveIndex();
|
|
301
|
+
if (startFrom === undefined && next === -1) {
|
|
302
|
+
next = direction === 1 ? -1 : 0;
|
|
303
|
+
} else if (startFrom !== undefined) {
|
|
304
|
+
if (!isDisabled(next)) {
|
|
305
|
+
this.config.setActiveIndex(next);
|
|
306
|
+
if (isSlotted) this.config.updateSlottedActiveState(next);
|
|
307
|
+
this.config.scrollToActiveIndex();
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
for(let step = 0; step < len; step++){
|
|
312
|
+
next = (next + direction + len) % len;
|
|
313
|
+
if (!isDisabled(next)) break;
|
|
314
|
+
}
|
|
315
|
+
if (isDisabled(next)) next = -1;
|
|
316
|
+
this.config.setActiveIndex(next);
|
|
317
|
+
if (isSlotted) this.config.updateSlottedActiveState(next);
|
|
318
|
+
this.config.scrollToActiveIndex();
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
export { FloatingController as F, ListboxKeyboardController as L };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vialiq/web-components",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.21.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -99,12 +99,25 @@
|
|
|
99
99
|
"./accordion/vi-accordion-item": {
|
|
100
100
|
"types": "./accordion/vi-accordion-item.d.ts",
|
|
101
101
|
"default": "./accordion/vi-accordion-item.js"
|
|
102
|
+
},
|
|
103
|
+
"./date-picker": {
|
|
104
|
+
"types": "./date-picker/index.d.ts",
|
|
105
|
+
"default": "./date-picker/index.js"
|
|
106
|
+
},
|
|
107
|
+
"./date-picker/vi-date-picker": {
|
|
108
|
+
"types": "./date-picker/vi-date-picker.d.ts",
|
|
109
|
+
"default": "./date-picker/vi-date-picker.js"
|
|
110
|
+
},
|
|
111
|
+
"./date-picker/vi-date-picker-input": {
|
|
112
|
+
"types": "./date-picker/vi-date-picker-input.d.ts",
|
|
113
|
+
"default": "./date-picker/vi-date-picker-input.js"
|
|
102
114
|
}
|
|
103
115
|
},
|
|
104
116
|
"peerDependencies": {
|
|
105
117
|
"@floating-ui/dom": ">=1.0.0",
|
|
106
|
-
"@vialiq/flux-ui": "^0.
|
|
107
|
-
"@vialiq/icons": "
|
|
118
|
+
"@vialiq/flux-ui": "^0.17.0",
|
|
119
|
+
"@vialiq/icons": "^0.4.0",
|
|
120
|
+
"flatpickr": ">=4.6.0",
|
|
108
121
|
"lit": "^3.0.0"
|
|
109
122
|
},
|
|
110
123
|
"keywords": [
|
|
@@ -126,6 +139,12 @@
|
|
|
126
139
|
"checkbox/",
|
|
127
140
|
"tooltip/",
|
|
128
141
|
"badge/",
|
|
142
|
+
"date-picker/",
|
|
129
143
|
"README.md"
|
|
130
|
-
]
|
|
144
|
+
],
|
|
145
|
+
"peerDependenciesMeta": {
|
|
146
|
+
"flatpickr": {
|
|
147
|
+
"optional": false
|
|
148
|
+
}
|
|
149
|
+
}
|
|
131
150
|
}
|