@vialiq/web-components 0.20.0 → 0.22.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 (45) hide show
  1. package/README.md +126 -0
  2. package/base/controllers/floating-controller.d.ts +2 -2
  3. package/base/controllers/floating-controller.d.ts.map +1 -1
  4. package/base/flatpickr-mixin.d.ts +38 -0
  5. package/base/flatpickr-mixin.d.ts.map +1 -0
  6. package/base/validity-mixin.d.ts +2 -0
  7. package/base/validity-mixin.d.ts.map +1 -1
  8. package/date-picker/i18n.d.ts +19 -0
  9. package/date-picker/i18n.d.ts.map +1 -0
  10. package/date-picker/index.d.ts +4 -0
  11. package/date-picker/index.d.ts.map +1 -0
  12. package/date-picker/index.js +2 -0
  13. package/date-picker/iso-week.d.ts +18 -0
  14. package/date-picker/iso-week.d.ts.map +1 -0
  15. package/date-picker/locale-registry.d.ts +8 -0
  16. package/date-picker/locale-registry.d.ts.map +1 -0
  17. package/date-picker/plugin-registry.d.ts +7 -0
  18. package/date-picker/plugin-registry.d.ts.map +1 -0
  19. package/date-picker/plugin-utils.d.ts +10 -0
  20. package/date-picker/plugin-utils.d.ts.map +1 -0
  21. package/date-picker/plugins/vi-month-year-plugin.d.ts +17 -0
  22. package/date-picker/plugins/vi-month-year-plugin.d.ts.map +1 -0
  23. package/date-picker/plugins/vi-range-plugin.d.ts +12 -0
  24. package/date-picker/plugins/vi-range-plugin.d.ts.map +1 -0
  25. package/date-picker/plugins/vi-shadow-dom-plugin.d.ts +18 -0
  26. package/date-picker/plugins/vi-shadow-dom-plugin.d.ts.map +1 -0
  27. package/date-picker/types.d.ts +34 -0
  28. package/date-picker/types.d.ts.map +1 -0
  29. package/date-picker/vi-date-picker-input.d.ts +34 -0
  30. package/date-picker/vi-date-picker-input.d.ts.map +1 -0
  31. package/date-picker/vi-date-picker-input.js +599 -0
  32. package/date-picker/vi-date-picker.d.ts +95 -0
  33. package/date-picker/vi-date-picker.d.ts.map +1 -0
  34. package/date-picker/vi-date-picker.js +2273 -0
  35. package/index.d.ts +7 -0
  36. package/index.js +5 -0
  37. package/input/vi-input.js +1 -1
  38. package/{keyboard-controller-DqpJtUuK.js → keyboard-controller-D3htDhGR.js} +25 -23
  39. package/label/index.d.ts +2 -0
  40. package/label/index.d.ts.map +1 -0
  41. package/label/index.js +1 -0
  42. package/label/vi-label.d.ts +53 -0
  43. package/label/vi-label.d.ts.map +1 -0
  44. package/label/vi-label.js +552 -0
  45. package/package.json +32 -4
package/index.d.ts CHANGED
@@ -41,4 +41,11 @@ export type { SwitchSize, LabelPlacement } from './switch/vi-switch.js';
41
41
  export { ViSelect } from './select/vi-select.js';
42
42
  export { ViSelectOption } from './select/vi-select-option.js';
43
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';
49
+ export { ViLabel } from './label/vi-label.js';
50
+ export type { LabelSize } from './label/vi-label.js';
44
51
  //# sourceMappingURL=index.d.ts.map
package/index.js CHANGED
@@ -23,3 +23,8 @@ export { ViSwitch } from './switch/vi-switch.js';
23
23
  export { ViSelect } from './select/vi-select.js';
24
24
  export { ViSelectOption } from './select/vi-select-option.js';
25
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';
30
+ export { ViLabel } from './label/vi-label.js';
package/input/vi-input.js CHANGED
@@ -5,7 +5,7 @@ import { V as ValidityMixin } from '../validity-mixin-DO0ycRH2.js';
5
5
  import { V as ViElement } from '../vi-element-C6GfDPs3.js';
6
6
  import { i as ifNonEmpty } from '../if-non-empty-DX8UGa-B.js';
7
7
 
8
- const inputStyles = "@charset \"UTF-8\";@layer reset,components,utilities;@layer components{.input-field{display:flex;flex-direction:column;gap:var(--vi-input-spacing-field-gap, var(--vi-spacing-xs, 8px));width:100%}.input-control{appearance:none;-webkit-appearance:none;display:block;width:100%;box-sizing:border-box;min-height:var(--vi-input-sizing-min-height, 40px);border:var(--vi-border-width-thin, 1px) solid var(--vi-input-border-color, var(--vi-outline, #e5e7eb));border-radius:var(--vi-input-shape-border-radius, var(--vi-border-radius-lg, 8px));padding:var(--vi-input-spacing-padding-block, var(--vi-spacing-xs, 8px)) var(--vi-input-spacing-padding-inline, var(--vi-spacing-sm, 16px));font-family:var(--vi-font-family-base, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif);font-size:var(--vi-input-typography-font-size, var(--vi-font-size-base, 16px));font-weight:var(--vi-font-weight-normal, 400);line-height:var(--vi-input-typography-line-height, var(--vi-line-height-normal, 1.5));color:var(--vi-input-text-color, var(--vi-text-primary, #111827));background-color:var(--vi-input-background-color, var(--vi-color-background, #ffffff));transition:border-color .15s ease,box-shadow .15s ease}.input-control:hover:not(:focus-visible){border-color:var(--vi-input-border-color-hover, var(--vi-text-secondary, #4b5563))}.input-control:focus-visible,.input-control:focus{outline:var(--vi-border-width-base, 2px) solid var(--vi-input-focus-ring-color, var(--vi-focus, #3676d0));outline-offset:0;box-shadow:0 0 0 3px var(--vi-input-focus-ring-glow, var(--vi-color-blue-200, #cee6ff))}.input-control::placeholder{color:var(--vi-input-placeholder-color, var(--vi-text-secondary, #4b5563))}.input-helper{font-size:var(--vi-input-helper-size, var(--vi-font-size-xs, 12px));line-height:var(--vi-input-helper-leading, var(--vi-line-height-normal, 1.5));color:var(--vi-input-helper-color, var(--vi-text-helper, #9e9e9e))}.input-error{font-size:var(--vi-input-error-size, var(--vi-font-size-xs, 12px));line-height:var(--vi-input-error-leading, var(--vi-line-height-normal, 1.5));color:var(--vi-input-error-color, var(--vi-color-error, #ef4444))}@media(prefers-reduced-motion:reduce){.input-control{transition:none}}}:host{display:block;outline:none}:host([disabled]){opacity:.6;cursor:not-allowed;pointer-events:none}:host([status=invalid]){--vi-input-border-color: var(--vi-color-error, #ef4444);--vi-input-border-color-hover: var(--vi-color-error, #ef4444);--vi-input-focus-ring-color: var(--vi-color-error, #ef4444);--vi-input-focus-ring-glow: var(--vi-color-red-100, #ffccce);--vi-input-label-color: var(--vi-color-error, #ef4444)}:host([status=valid]){--vi-input-border-color: var(--vi-color-success, #489167);--vi-input-border-color-hover: var(--vi-color-success, #489167);--vi-input-focus-ring-color: var(--vi-color-success, #489167);--vi-input-focus-ring-glow: var(--vi-color-green-100, #e6f0eb)}.input-validation{font-family:var(--vi-font-family-base, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif);font-size:var(--vi-font-size-xs, 12px);line-height:var(--vi-line-height-normal, 1.5);letter-spacing:var(--vi-letter-spacing-wider, .05em);color:var(--vi-input-helper-color, var(--vi-text-helper, #9e9e9e))}.input-validation--invalid{color:var(--vi-input-error-color, var(--vi-color-error, #ef4444))}.input-validation--valid{color:var(--vi-input-success-color, var(--vi-color-success, #489167))}::slotted([slot=helper]){font-family:var(--vi-font-family-base, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif);font-size:var(--vi-font-size-xs, 12px);line-height:var(--vi-line-height-normal, 1.5);letter-spacing:var(--vi-letter-spacing-wider, .05em);color:var(--vi-input-helper-color, var(--vi-text-helper, #9e9e9e))}:host([size=xs]){--vi-input-spacing-padding-block: 2px;--vi-input-spacing-padding-inline: 8px;--vi-input-typography-font-size: var(--vi-font-size-xs, 12px)}:host([size=sm]){--vi-input-spacing-padding-block: 4px;--vi-input-spacing-padding-inline: 12px;--vi-input-typography-font-size: var(--vi-font-size-sm, 14px)}:host([size=lg]){--vi-input-spacing-padding-block: 12px;--vi-input-spacing-padding-inline: 20px;--vi-input-typography-font-size: var(--vi-font-size-lg, 18px)}";
8
+ const inputStyles = "@charset \"UTF-8\";@layer reset,components,utilities;@layer components{.input-field{display:flex;flex-direction:column;gap:var(--vi-input-spacing-field-gap, var(--vi-spacing-xs, 8px));width:100%}.input-control{appearance:none;-webkit-appearance:none;display:block;width:100%;box-sizing:border-box;min-height:var(--vi-input-sizing-min-height, 40px);border:var(--vi-border-width-thin, 1px) solid var(--vi-input-border-color, var(--vi-outline, #e5e7eb));border-radius:var(--vi-input-shape-border-radius, var(--vi-border-radius-lg, 8px));padding:var(--vi-input-spacing-padding-block, var(--vi-spacing-xs, 8px)) var(--vi-input-spacing-padding-inline, var(--vi-spacing-sm, 16px));font-family:var(--vi-font-family-base, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif);font-size:var(--vi-input-typography-font-size, var(--vi-font-size-base, 16px));font-weight:var(--vi-font-weight-normal, 400);line-height:var(--vi-input-typography-line-height, var(--vi-line-height-normal, 1.5));color:var(--vi-input-text-color, var(--vi-text-primary, #111827));background-color:var(--vi-input-background-color, var(--vi-color-background, #ffffff));transition:border-color .15s ease,box-shadow .15s ease}.input-control:hover:not(:focus-visible){border-color:var(--vi-input-border-color-hover, var(--vi-text-secondary, #4b5563))}.input-control:focus-visible,.input-control:focus{outline:var(--vi-border-width-base, 2px) solid var(--vi-input-focus-ring-color, var(--vi-focus, #3676d0));outline-offset:0;box-shadow:0 0 0 3px var(--vi-input-focus-ring-glow, var(--vi-color-blue-200, #cee6ff))}.input-control::placeholder{color:var(--vi-input-placeholder-color, var(--vi-text-secondary, #4b5563))}.input-control:disabled{cursor:not-allowed;background-color:var(--vi-input-bg-disabled, var(--vi-layer-disabled, #f3f4f6));color:var(--vi-input-text-disabled, var(--vi-text-disabled, #9e9e9e));border-color:var(--vi-input-border-disabled, var(--vi-border-02, #eeeeee))}.input-helper{font-size:var(--vi-input-helper-size, var(--vi-font-size-xs, 12px));line-height:var(--vi-input-helper-leading, var(--vi-line-height-normal, 1.5));color:var(--vi-input-helper-color, var(--vi-text-helper, #9e9e9e))}.input-error{font-size:var(--vi-input-error-size, var(--vi-font-size-xs, 12px));line-height:var(--vi-input-error-leading, var(--vi-line-height-normal, 1.5));color:var(--vi-input-error-color, var(--vi-color-error, #ef4444))}@media(prefers-reduced-motion:reduce){.input-control{transition:none}}}:host{display:block;outline:none}:host([disabled]){cursor:not-allowed}:host([status=invalid]){--vi-input-border-color: var(--vi-color-error, #ef4444);--vi-input-border-color-hover: var(--vi-color-error, #ef4444);--vi-input-focus-ring-color: var(--vi-color-error, #ef4444);--vi-input-focus-ring-glow: var(--vi-color-red-100, #ffccce);--vi-input-label-color: var(--vi-color-error, #ef4444)}:host([status=valid]){--vi-input-border-color: var(--vi-color-success, #489167);--vi-input-border-color-hover: var(--vi-color-success, #489167);--vi-input-focus-ring-color: var(--vi-color-success, #489167);--vi-input-focus-ring-glow: var(--vi-color-green-100, #e6f0eb)}.input-validation{font-family:var(--vi-font-family-base, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif);font-size:var(--vi-font-size-xs, 12px);line-height:var(--vi-line-height-normal, 1.5);letter-spacing:var(--vi-letter-spacing-wider, .05em);color:var(--vi-input-helper-color, var(--vi-text-helper, #9e9e9e))}.input-validation--invalid{color:var(--vi-input-error-color, var(--vi-color-error, #ef4444))}.input-validation--valid{color:var(--vi-input-success-color, var(--vi-color-success, #489167))}::slotted([slot=helper]){font-family:var(--vi-font-family-base, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif);font-size:var(--vi-font-size-xs, 12px);line-height:var(--vi-line-height-normal, 1.5);letter-spacing:var(--vi-letter-spacing-wider, .05em);color:var(--vi-input-helper-color, var(--vi-text-helper, #9e9e9e))}:host([size=xs]){--vi-input-spacing-padding-block: 2px;--vi-input-spacing-padding-inline: 8px;--vi-input-typography-font-size: var(--vi-font-size-xs, 12px)}:host([size=sm]){--vi-input-spacing-padding-block: 4px;--vi-input-spacing-padding-inline: 12px;--vi-input-typography-font-size: var(--vi-font-size-sm, 14px)}:host([size=lg]){--vi-input-spacing-padding-block: 12px;--vi-input-spacing-padding-inline: 20px;--vi-input-typography-font-size: var(--vi-font-size-lg, 18px)}";
9
9
 
10
10
  function applyDecs2203RFactory() {
11
11
  function createAddInitializerMethod(initializers, decoratorFinishedRef) {
@@ -3,12 +3,12 @@ import { O as OverlayManager } from './overlay-manager-Ch_6fr_D.js';
3
3
 
4
4
  /**
5
5
  * FloatingController
6
- *
6
+ *
7
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
8
+ * It abstracts away the complex math and event listeners (autoUpdate) required to
9
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`
10
+ *
11
+ * It also automatically registers the floating element with the `OverlayManager`
12
12
  * to ensure correct z-index stacking when `hoist` is true.
13
13
  */ class FloatingController {
14
14
  host;
@@ -26,7 +26,7 @@ import { O as OverlayManager } from './overlay-manager-Ch_6fr_D.js';
26
26
  /**
27
27
  * Starts the floating UI `autoUpdate` listener cycle.
28
28
  * This should be called when the popover physically opens (e.g., in `updated()`).
29
- *
29
+ *
30
30
  * If `hoist` is true, it also acquires a high z-index from the `OverlayManager`.
31
31
  */ start() {
32
32
  const ref = this.options.reference();
@@ -48,7 +48,7 @@ import { O as OverlayManager } from './overlay-manager-Ch_6fr_D.js';
48
48
  /**
49
49
  * Stops the floating UI `autoUpdate` listener cycle.
50
50
  * This should be called when the popover closes, or when the host component disconnects.
51
- *
51
+ *
52
52
  * It also releases its z-index back to the `OverlayManager`.
53
53
  */ stop() {
54
54
  if (this._cleanup) {
@@ -65,9 +65,9 @@ import { O as OverlayManager } from './overlay-manager-Ch_6fr_D.js';
65
65
  }
66
66
  /**
67
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
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
71
  * provided by Floating UI.
72
72
  */ async updatePosition() {
73
73
  const ref = this.options.reference();
@@ -96,21 +96,23 @@ import { O as OverlayManager } from './overlay-manager-Ch_6fr_D.js';
96
96
  })
97
97
  ];
98
98
  const matchWidthVal = typeof this.options.matchWidth === 'function' ? this.options.matchWidth() : this.options.matchWidth;
99
- middlewares.push(size({
100
- apply: ({ rects })=>{
101
- if (matchWidthVal !== false) {
102
- Object.assign(floating.style, {
103
- width: `${rects.reference.width}px`,
104
- minWidth: 'auto'
105
- });
106
- } else {
107
- Object.assign(floating.style, {
108
- width: 'auto',
109
- minWidth: `${rects.reference.width}px`
110
- });
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
+ }
111
113
  }
112
- }
113
- }));
114
+ }));
115
+ }
114
116
  const { x, y, placement } = await computePosition(ref, floating, {
115
117
  placement: placementStr,
116
118
  strategy: hoist ? 'fixed' : 'absolute',
@@ -0,0 +1,2 @@
1
+ export * from './vi-label.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../libs/web-components/src/label/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
package/label/index.js ADDED
@@ -0,0 +1 @@
1
+ export { ViLabel } from './vi-label.js';
@@ -0,0 +1,53 @@
1
+ import { TemplateResult } from 'lit';
2
+ import { ViElement } from '../base/vi-element.js';
3
+ export type LabelSize = 'sm' | 'md' | 'lg';
4
+ export type LabelLayout = 'stacked' | 'inline';
5
+ export type LabelType = 'default' | 'primary' | 'secondary';
6
+ /**
7
+ * `vi-label`
8
+ *
9
+ * A styled `<label>` element for associating visible text with form controls.
10
+ *
11
+ * @element vi-label
12
+ *
13
+ * @attr {string} for - ID of the associated control
14
+ * @attr {boolean} required - Show required `*` indicator
15
+ * @attr {boolean} optional - Show "(optional)" text
16
+ * @attr {boolean} disabled - Muted disabled styling
17
+ * @attr {string} size - Font size variant ('sm', 'md', 'lg')
18
+ *
19
+ * @slot - Default slot for label text
20
+ * @slot tooltip - Inline help icon that triggers a tooltip
21
+ *
22
+ * @csspart label - The `<label>` element
23
+ * @csspart required-indicator - The `*` asterisk `<span>`
24
+ * @csspart optional-indicator - The "(optional)" `<span>`
25
+ * @csspart tooltip-trigger - Tooltip icon wrapper
26
+ */
27
+ export declare class ViLabel extends ViElement {
28
+ static styles: import('lit').CSSResult;
29
+ /** ID of the associated control */
30
+ accessor for: string;
31
+ /** Show required `*` indicator */
32
+ accessor required: boolean;
33
+ /** Show "(optional)" text */
34
+ accessor optional: boolean;
35
+ /** Muted disabled styling */
36
+ accessor disabled: boolean;
37
+ /** Font size variant */
38
+ accessor size: LabelSize;
39
+ /** Layout spacing behavior */
40
+ accessor layout: LabelLayout;
41
+ /** Semantic text color */
42
+ accessor type: LabelType;
43
+ private _hasTooltip;
44
+ private _handleSlotChange;
45
+ private _handleClick;
46
+ render(): TemplateResult;
47
+ }
48
+ declare global {
49
+ interface HTMLElementTagNameMap {
50
+ 'vi-label': ViLabel;
51
+ }
52
+ }
53
+ //# sourceMappingURL=vi-label.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vi-label.d.ts","sourceRoot":"","sources":["../../../../libs/web-components/src/label/vi-label.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAGzE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC3C,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;AAC/C,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBACa,OAAQ,SAAQ,SAAS;IACpC,OAAgB,MAAM,0BAEpB;IAEF,mCAAmC;IACP,QAAQ,CAAC,GAAG,SAAM;IAE9C,kCAAkC;IACL,QAAQ,CAAC,QAAQ,UAAS;IAEvD,6BAA6B;IACA,QAAQ,CAAC,QAAQ,UAAS;IAEvD,6BAA6B;IACe,QAAQ,CAAC,QAAQ,UAAS;IAEtE,wBAAwB;IACI,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAQ;IAE5D,8BAA8B;IACa,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAa;IAEpF,0BAA0B;IACiB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAa;IAEhF,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,YAAY;IAeX,MAAM,IAAI,cAAc;CA6BlC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,OAAO,CAAC;KACrB;CACF"}