draft-components 4.15.0 → 4.17.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.
@@ -5690,6 +5690,246 @@
5690
5690
 
5691
5691
  /* Other */
5692
5692
 
5693
+ .dc-multi-select {
5694
+ /* Button props */
5695
+ --button-color: var(--dc-text-color-primary);
5696
+ --button-background: none;
5697
+ --button-background-hover: var(--dc-neutral-100);
5698
+ --button-focus-ring-color: var(--dc-focus-ring-color);
5699
+
5700
+ /* Checkbox props */
5701
+ --checkbox-size: 20px;
5702
+ --checkbox-border-radius: 6px;
5703
+ --checkbox-color: var(--dc-text-color-primary);
5704
+ --checkbox-color-checked: var(--dc-white);
5705
+ --checkbox-background: var(--dc-white);
5706
+ --checkbox-background-checked: var(--dc-blue-500);
5707
+ --checkbox-border-color: var(--dc-neutral-300);
5708
+ --checkbox-border-color-checked: rgb(var(--dc-black-rgb) / 10%);
5709
+ --checkbox-border: 1px solid var(--checkbox-border-color);
5710
+ --checkbox-border-checked: 1px solid var(--checkbox-border-color-checked);
5711
+
5712
+ /* Option props */
5713
+ --option-font: var(--dc-text-sm);
5714
+ --option-caption-font: var(--dc-text-xs);
5715
+ --option-color: var(--dc-text-color-primary);
5716
+ --option-color-selected: var(--dc-text-color-primary);
5717
+ --option-caption-color: var(--dc-text-color-secondary);
5718
+ --option-caption-color-selected: var(--dc-text-color-secondary);
5719
+ --option-background: none;
5720
+ --option-background-selected: var(--dc-background-color-3);
5721
+ --option-border-radius: 4px;
5722
+
5723
+ /* Listbox props */
5724
+ --listbox-border-radius: 7px;
5725
+ --listbox-background: var(--dc-white);
5726
+ --listbox-shadow: 0 0 0 1px rgb(var(--dc-black-rgb) / 8%),
5727
+ 0 -1px 0 0 rgb(var(--dc-black-rgb) / 5%), var(--dc-shadow-lg);
5728
+
5729
+ /* Empty state props */
5730
+ --empty-state-font-message-font: var(--dc-text-sm);
5731
+ --empty-state-font-message-color: var(--dc-text-color-secondary);
5732
+ --error-state-font-message-color: var(--dc-text-color-error);
5733
+
5734
+ box-sizing: border-box;
5735
+ display: flex;
5736
+ flex-direction: column;
5737
+ color-scheme: light;
5738
+ }
5739
+
5740
+ .dc-multi-select__input-container {
5741
+ position: relative;
5742
+ }
5743
+
5744
+ .dc-multi-select__chips {
5745
+ display: flex;
5746
+ flex-wrap: wrap;
5747
+ gap: 4px;
5748
+ align-items: center;
5749
+ margin-top: 8px;
5750
+ }
5751
+
5752
+ .dc-multi-select__chip {
5753
+ padding-top: 0;
5754
+ padding-right: 0;
5755
+ padding-bottom: 0;
5756
+ }
5757
+
5758
+ .dc-multi-select__chip-button {
5759
+ display: inline-flex;
5760
+ align-items: center;
5761
+ justify-content: center;
5762
+ width: 28px;
5763
+ height: 28px;
5764
+ padding: 0;
5765
+ margin-left: 4px;
5766
+ color: inherit;
5767
+ -webkit-appearance: none;
5768
+ -moz-appearance: none;
5769
+ appearance: none;
5770
+ cursor: default;
5771
+ background: none;
5772
+ border: none;
5773
+ border-radius: inherit;
5774
+ }
5775
+
5776
+ .dc-multi-select__button {
5777
+ box-sizing: border-box;
5778
+ display: inline-flex;
5779
+ align-items: center;
5780
+ justify-content: center;
5781
+ min-width: 30px;
5782
+ height: 100%;
5783
+ aspect-ratio: 1 / 1;
5784
+ padding: 0;
5785
+ font: inherit;
5786
+ color: var(--button-color);
5787
+ -webkit-appearance: none;
5788
+ -moz-appearance: none;
5789
+ appearance: none;
5790
+ background: var(--button-background);
5791
+ border: none;
5792
+ border-radius: inherit;
5793
+ }
5794
+
5795
+ .dc-multi-select__button:hover {
5796
+ background: var(--button-background-hover);
5797
+ }
5798
+
5799
+ .dc-multi-select__button:focus {
5800
+ outline: none;
5801
+ }
5802
+
5803
+ .dc-multi-select__button:focus-visible {
5804
+ outline: 2px solid var(--button-focus-ring-color);
5805
+ outline-offset: 2px;
5806
+ }
5807
+
5808
+ .dc-multi-select__button [data-icon="chevron-down"] {
5809
+ transform-origin: center;
5810
+ }
5811
+
5812
+ .dc-multi-select__button[aria-expanded="true"] [data-icon="chevron-down"] {
5813
+ transform: rotate(180deg);
5814
+ }
5815
+
5816
+ .dc-multi-select__empty-state {
5817
+ padding: 8px;
5818
+ font: var(--empty-state-font-message-font);
5819
+ color: var(--empty-state-font-message-color);
5820
+ }
5821
+
5822
+ .dc-multi-select__empty-state_error {
5823
+ color: var(--error-state-font-message-color);
5824
+ }
5825
+
5826
+ .dc-multi-select__empty-state_loading {
5827
+ display: flex;
5828
+ gap: 8px;
5829
+ align-items: center;
5830
+ }
5831
+
5832
+ .dc-multi-select__option {
5833
+ box-sizing: border-box;
5834
+ display: flex;
5835
+ gap: 12px;
5836
+ width: 100%;
5837
+ padding: 8px;
5838
+ font: var(--option-font);
5839
+ cursor: default;
5840
+ scroll-margin-top: 4px;
5841
+ scroll-margin-bottom: 4px;
5842
+ border-radius: var(--option-border-radius);
5843
+ }
5844
+
5845
+ .dc-multi-select__option[aria-selected="true"] {
5846
+ color: var(--option-color-selected);
5847
+ background: var(--option-background-selected);
5848
+ }
5849
+
5850
+ .dc-multi-select__option [data-icon="check"] {
5851
+ display: none;
5852
+ }
5853
+
5854
+ .dc-multi-select__option[aria-checked="true"] [data-icon="check"] {
5855
+ display: initial;
5856
+ }
5857
+
5858
+ .dc-multi-select__option-checkbox {
5859
+ box-sizing: border-box;
5860
+ display: inline-flex;
5861
+ align-items: center;
5862
+ justify-content: center;
5863
+ width: var(--checkbox-size);
5864
+ height: var(--checkbox-size);
5865
+ color: var(--checkbox-color);
5866
+ background: var(--checkbox-background);
5867
+ border: var(--checkbox-border);
5868
+ border-radius: var(--checkbox-border-radius);
5869
+ }
5870
+
5871
+ .dc-multi-select__option[aria-checked="true"]
5872
+ .dc-multi-select__option-checkbox {
5873
+ color: var(--checkbox-color-checked);
5874
+ background: var(--checkbox-background-checked);
5875
+ border: var(--checkbox-border-checked);
5876
+ }
5877
+
5878
+ .dc-multi-select__option-label,
5879
+ .dc-multi-select__option-caption {
5880
+ display: block;
5881
+ width: 100%;
5882
+ }
5883
+
5884
+ .dc-multi-select__option-label {
5885
+ font-weight: 500;
5886
+ }
5887
+
5888
+ .dc-multi-select__option-caption {
5889
+ font: var(--option-caption-font);
5890
+ color: var(--option-caption-color);
5891
+ }
5892
+
5893
+ .dc-multi-select__option[aria-checked="true"] .dc-multi-select__option-caption {
5894
+ color: var(--option-caption-color-selected);
5895
+ }
5896
+
5897
+ .dc-multi-select__list-box {
5898
+ position: absolute;
5899
+ top: calc(100% + 4px);
5900
+ left: 0;
5901
+ z-index: var(--dc-overlay-z-index);
5902
+ box-sizing: border-box;
5903
+ width: 100%;
5904
+ max-height: 296px;
5905
+ padding: 4px;
5906
+ margin: 0;
5907
+ overflow: auto;
5908
+ overscroll-behavior: contain;
5909
+ font-size: var(--font-size);
5910
+ list-style: none;
5911
+ background: var(--listbox-background);
5912
+ border-radius: var(--listbox-border-radius);
5913
+ box-shadow: var(--listbox-shadow);
5914
+ }
5915
+
5916
+ .dark .dc-multi-select,
5917
+ .dark.dc-multi-select {
5918
+ /* Button props */
5919
+ --button-background-hover: var(--dc-neutral-700);
5920
+
5921
+ /* Checkbox props */
5922
+ --checkbox-background: var(--dc-neutral-800);
5923
+ --checkbox-border-color: var(--dc-neutral-600);
5924
+ --checkbox-border-color-checked: rgb(var(--dc-white-rgb) / 10%);
5925
+
5926
+ /* Listbox props */
5927
+ --listbox-background: var(--dc-neutral-800);
5928
+ --listbox-shadow: 0 0 0 1px var(--dc-neutral-700), var(--dc-shadow-lg);
5929
+
5930
+ color-scheme: dark;
5931
+ }
5932
+
5693
5933
  .dc-filter-token {
5694
5934
  display: inline-flex;
5695
5935
  align-items: center;
@@ -18,6 +18,7 @@ export * from './filtered-search/index.js';
18
18
  export * from './form-field/index.js';
19
19
  export * from './label/index.js';
20
20
  export * from './menu/index.js';
21
+ export * from './multi-select/index.js';
21
22
  export * from './nav-list/index.js';
22
23
  export * from './password-input/index.js';
23
24
  export * from './popover/index.js';
@@ -36,6 +37,6 @@ export * from './tag/index.js';
36
37
  export * from './text-input/index.js';
37
38
  export * from './textarea/index.js';
38
39
  export * from './toast/index.js';
39
- export * from './token-input/index.js';
40
40
  export * from './toaster/index.js';
41
+ export * from './token-input/index.js';
41
42
  export * from './tooltip/index.js';
@@ -18,6 +18,7 @@ export * from './filtered-search/index.js';
18
18
  export * from './form-field/index.js';
19
19
  export * from './label/index.js';
20
20
  export * from './menu/index.js';
21
+ export * from './multi-select/index.js';
21
22
  export * from './nav-list/index.js';
22
23
  export * from './password-input/index.js';
23
24
  export * from './popover/index.js';
@@ -36,7 +37,7 @@ export * from './tag/index.js';
36
37
  export * from './text-input/index.js';
37
38
  export * from './textarea/index.js';
38
39
  export * from './toast/index.js';
39
- export * from './token-input/index.js';
40
40
  export * from './toaster/index.js';
41
+ export * from './token-input/index.js';
41
42
  export * from './tooltip/index.js';
42
43
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,sCAAsC,CAAC;AACrD,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,sCAAsC,CAAC;AACrD,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ComponentProps } from 'react';
2
+ export declare function ChevronDownIcon(props: ComponentProps<'svg'>): import("react/jsx-runtime").JSX.Element;
3
+ export declare function CheckIcon(props: ComponentProps<'svg'>): import("react/jsx-runtime").JSX.Element;
4
+ export declare function XMarkIcon(props: ComponentProps<'svg'>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export function ChevronDownIcon(props) {
3
+ return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", width: 20, height: 20, fill: "currentColor", ...props, children: _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z" }) }));
4
+ }
5
+ export function CheckIcon(props) {
6
+ return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", width: 20, height: 20, fill: "currentColor", ...props, children: _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M16.704 4.153a.75.75 0 0 1 .143 1.052l-8 10.5a.75.75 0 0 1-1.127.075l-4.5-4.5a.75.75 0 0 1 1.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 0 1 1.05-.143Z" }) }));
7
+ }
8
+ export function XMarkIcon(props) {
9
+ return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", width: 20, height: 20, fill: "currentColor", ...props, children: _jsx("path", { d: "M6.28 5.22a.75.75 0 0 0-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 1 0 1.06 1.06L10 11.06l3.72 3.72a.75.75 0 1 0 1.06-1.06L11.06 10l3.72-3.72a.75.75 0 0 0-1.06-1.06L10 8.94 6.28 5.22Z" }) }));
10
+ }
11
+ //# sourceMappingURL=icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.js","sourceRoot":"","sources":["../../../src/components/multi-select/icons.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,eAAe,CAAC,KAA4B;IAC1D,OAAO,CACL,cACE,KAAK,EAAC,4BAA4B,EAClC,OAAO,EAAC,WAAW,EACnB,KAAK,EAAE,EAAE,EACT,MAAM,EAAE,EAAE,EACV,IAAI,EAAC,cAAc,KACf,KAAK,YAET,eACE,QAAQ,EAAC,SAAS,EAClB,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,wIAAwI,GAC1I,GACE,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAA4B;IACpD,OAAO,CACL,cACE,KAAK,EAAC,4BAA4B,EAClC,OAAO,EAAC,WAAW,EACnB,KAAK,EAAE,EAAE,EACT,MAAM,EAAE,EAAE,EACV,IAAI,EAAC,cAAc,KACf,KAAK,YAET,eACE,QAAQ,EAAC,SAAS,EAClB,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,qJAAqJ,GACvJ,GACE,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAA4B;IACpD,OAAO,CACL,cACE,KAAK,EAAC,4BAA4B,EAClC,OAAO,EAAC,WAAW,EACnB,KAAK,EAAE,EAAE,EACT,MAAM,EAAE,EAAE,EACV,IAAI,EAAC,cAAc,KACf,KAAK,YAET,eAAM,CAAC,EAAC,oLAAoL,GAAG,GAC3L,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1 @@
1
+ export * from './multi-select.js';
@@ -0,0 +1,2 @@
1
+ export * from './multi-select.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/multi-select/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,239 @@
1
+ .dc-multi-select {
2
+ /* Button props */
3
+ --button-color: var(--dc-text-color-primary);
4
+ --button-background: none;
5
+ --button-background-hover: var(--dc-neutral-100);
6
+ --button-focus-ring-color: var(--dc-focus-ring-color);
7
+
8
+ /* Checkbox props */
9
+ --checkbox-size: 20px;
10
+ --checkbox-border-radius: 6px;
11
+ --checkbox-color: var(--dc-text-color-primary);
12
+ --checkbox-color-checked: var(--dc-white);
13
+ --checkbox-background: var(--dc-white);
14
+ --checkbox-background-checked: var(--dc-blue-500);
15
+ --checkbox-border-color: var(--dc-neutral-300);
16
+ --checkbox-border-color-checked: rgb(var(--dc-black-rgb) / 10%);
17
+ --checkbox-border: 1px solid var(--checkbox-border-color);
18
+ --checkbox-border-checked: 1px solid var(--checkbox-border-color-checked);
19
+
20
+ /* Option props */
21
+ --option-font: var(--dc-text-sm);
22
+ --option-caption-font: var(--dc-text-xs);
23
+ --option-color: var(--dc-text-color-primary);
24
+ --option-color-selected: var(--dc-text-color-primary);
25
+ --option-caption-color: var(--dc-text-color-secondary);
26
+ --option-caption-color-selected: var(--dc-text-color-secondary);
27
+ --option-background: none;
28
+ --option-background-selected: var(--dc-background-color-3);
29
+ --option-border-radius: 4px;
30
+
31
+ /* Listbox props */
32
+ --listbox-border-radius: 7px;
33
+ --listbox-background: var(--dc-white);
34
+ --listbox-shadow: 0 0 0 1px rgb(var(--dc-black-rgb) / 8%),
35
+ 0 -1px 0 0 rgb(var(--dc-black-rgb) / 5%), var(--dc-shadow-lg);
36
+
37
+ /* Empty state props */
38
+ --empty-state-font-message-font: var(--dc-text-sm);
39
+ --empty-state-font-message-color: var(--dc-text-color-secondary);
40
+ --error-state-font-message-color: var(--dc-text-color-error);
41
+
42
+ box-sizing: border-box;
43
+ display: flex;
44
+ flex-direction: column;
45
+ color-scheme: light;
46
+ }
47
+
48
+ .dc-multi-select__input-container {
49
+ position: relative;
50
+ }
51
+
52
+ .dc-multi-select__chips {
53
+ display: flex;
54
+ flex-wrap: wrap;
55
+ gap: 4px;
56
+ align-items: center;
57
+ margin-top: 8px;
58
+ }
59
+
60
+ .dc-multi-select__chip {
61
+ padding-top: 0;
62
+ padding-right: 0;
63
+ padding-bottom: 0;
64
+ }
65
+
66
+ .dc-multi-select__chip-button {
67
+ display: inline-flex;
68
+ align-items: center;
69
+ justify-content: center;
70
+ width: 28px;
71
+ height: 28px;
72
+ padding: 0;
73
+ margin-left: 4px;
74
+ color: inherit;
75
+ -webkit-appearance: none;
76
+ -moz-appearance: none;
77
+ appearance: none;
78
+ cursor: default;
79
+ background: none;
80
+ border: none;
81
+ border-radius: inherit;
82
+ }
83
+
84
+ .dc-multi-select__button {
85
+ box-sizing: border-box;
86
+ display: inline-flex;
87
+ align-items: center;
88
+ justify-content: center;
89
+ min-width: 30px;
90
+ height: 100%;
91
+ aspect-ratio: 1 / 1;
92
+ padding: 0;
93
+ font: inherit;
94
+ color: var(--button-color);
95
+ -webkit-appearance: none;
96
+ -moz-appearance: none;
97
+ appearance: none;
98
+ background: var(--button-background);
99
+ border: none;
100
+ border-radius: inherit;
101
+ }
102
+
103
+ .dc-multi-select__button:hover {
104
+ background: var(--button-background-hover);
105
+ }
106
+
107
+ .dc-multi-select__button:focus {
108
+ outline: none;
109
+ }
110
+
111
+ .dc-multi-select__button:focus-visible {
112
+ outline: 2px solid var(--button-focus-ring-color);
113
+ outline-offset: 2px;
114
+ }
115
+
116
+ .dc-multi-select__button [data-icon="chevron-down"] {
117
+ transform-origin: center;
118
+ }
119
+
120
+ .dc-multi-select__button[aria-expanded="true"] [data-icon="chevron-down"] {
121
+ transform: rotate(180deg);
122
+ }
123
+
124
+ .dc-multi-select__empty-state {
125
+ padding: 8px;
126
+ font: var(--empty-state-font-message-font);
127
+ color: var(--empty-state-font-message-color);
128
+ }
129
+
130
+ .dc-multi-select__empty-state_error {
131
+ color: var(--error-state-font-message-color);
132
+ }
133
+
134
+ .dc-multi-select__empty-state_loading {
135
+ display: flex;
136
+ gap: 8px;
137
+ align-items: center;
138
+ }
139
+
140
+ .dc-multi-select__option {
141
+ box-sizing: border-box;
142
+ display: flex;
143
+ gap: 12px;
144
+ width: 100%;
145
+ padding: 8px;
146
+ font: var(--option-font);
147
+ cursor: default;
148
+ scroll-margin-top: 4px;
149
+ scroll-margin-bottom: 4px;
150
+ border-radius: var(--option-border-radius);
151
+ }
152
+
153
+ .dc-multi-select__option[aria-selected="true"] {
154
+ color: var(--option-color-selected);
155
+ background: var(--option-background-selected);
156
+ }
157
+
158
+ .dc-multi-select__option [data-icon="check"] {
159
+ display: none;
160
+ }
161
+
162
+ .dc-multi-select__option[aria-checked="true"] [data-icon="check"] {
163
+ display: initial;
164
+ }
165
+
166
+ .dc-multi-select__option-checkbox {
167
+ box-sizing: border-box;
168
+ display: inline-flex;
169
+ align-items: center;
170
+ justify-content: center;
171
+ width: var(--checkbox-size);
172
+ height: var(--checkbox-size);
173
+ color: var(--checkbox-color);
174
+ background: var(--checkbox-background);
175
+ border: var(--checkbox-border);
176
+ border-radius: var(--checkbox-border-radius);
177
+ }
178
+
179
+ .dc-multi-select__option[aria-checked="true"]
180
+ .dc-multi-select__option-checkbox {
181
+ color: var(--checkbox-color-checked);
182
+ background: var(--checkbox-background-checked);
183
+ border: var(--checkbox-border-checked);
184
+ }
185
+
186
+ .dc-multi-select__option-label,
187
+ .dc-multi-select__option-caption {
188
+ display: block;
189
+ width: 100%;
190
+ }
191
+
192
+ .dc-multi-select__option-label {
193
+ font-weight: 500;
194
+ }
195
+
196
+ .dc-multi-select__option-caption {
197
+ font: var(--option-caption-font);
198
+ color: var(--option-caption-color);
199
+ }
200
+
201
+ .dc-multi-select__option[aria-checked="true"] .dc-multi-select__option-caption {
202
+ color: var(--option-caption-color-selected);
203
+ }
204
+
205
+ .dc-multi-select__list-box {
206
+ position: absolute;
207
+ top: calc(100% + 4px);
208
+ left: 0;
209
+ z-index: var(--dc-overlay-z-index);
210
+ box-sizing: border-box;
211
+ width: 100%;
212
+ max-height: 296px;
213
+ padding: 4px;
214
+ margin: 0;
215
+ overflow: auto;
216
+ overscroll-behavior: contain;
217
+ font-size: var(--font-size);
218
+ list-style: none;
219
+ background: var(--listbox-background);
220
+ border-radius: var(--listbox-border-radius);
221
+ box-shadow: var(--listbox-shadow);
222
+ }
223
+
224
+ .dark .dc-multi-select,
225
+ .dark.dc-multi-select {
226
+ /* Button props */
227
+ --button-background-hover: var(--dc-neutral-700);
228
+
229
+ /* Checkbox props */
230
+ --checkbox-background: var(--dc-neutral-800);
231
+ --checkbox-border-color: var(--dc-neutral-600);
232
+ --checkbox-border-color-checked: rgb(var(--dc-white-rgb) / 10%);
233
+
234
+ /* Listbox props */
235
+ --listbox-background: var(--dc-neutral-800);
236
+ --listbox-shadow: 0 0 0 1px var(--dc-neutral-700), var(--dc-shadow-lg);
237
+
238
+ color-scheme: dark;
239
+ }
@@ -0,0 +1,41 @@
1
+ import { type ReactNode, type CSSProperties } from 'react';
2
+ export type MultiSelectSize = 'sm' | 'md' | 'lg';
3
+ export type MultiSelectChipTint = 'gray' | 'green' | 'lime' | 'sky' | 'blue' | 'indigo' | 'pink' | 'red' | 'orange' | 'yellow';
4
+ export type MultiSelectChipStyle = 'default' | 'filled' | 'tinted';
5
+ export type MultiSelectItem = {
6
+ id: string | number;
7
+ };
8
+ export type MultiSelectItemFilter<T extends MultiSelectItem> = (searchQuery: string, item: T) => boolean;
9
+ export type MultiSelectItemLabelGetter<T extends MultiSelectItem> = (item: T) => ReactNode;
10
+ export type MultiSelectItemCaptionGetter<T extends MultiSelectItem> = (item: T) => ReactNode;
11
+ export type MultiSelectSelectedItemIdsChangeHandler<T extends MultiSelectItem> = (ids: T['id'][]) => void;
12
+ export type MultiSelectOpenHandler = () => void;
13
+ export type MultiSelectCloseHandler = () => void;
14
+ export type MultiSelectMessages = {
15
+ noData?: ReactNode;
16
+ notFound?: ReactNode;
17
+ };
18
+ export declare function MultiSelect<T extends MultiSelectItem>({ style, className, size, inputId: defaultInputId, inputAriaLabel, chipTint, chipStyle, placeholder, noDataMessage, notFoundMessage, itemsLoadingMessage, items, itemsError, itemsLoading, invalid, selectedItemIds: checkedItemIds, onChangeSelectedItemIds: onChangeCheckedItemIds, filterItem, getItemLabel, getItemCaption, onOpen, onClose, }: {
19
+ style?: CSSProperties;
20
+ className?: string;
21
+ size?: MultiSelectSize;
22
+ inputId?: string;
23
+ inputAriaLabel?: string;
24
+ chipTint?: MultiSelectChipTint;
25
+ chipStyle?: MultiSelectChipStyle;
26
+ placeholder?: string;
27
+ noDataMessage?: ReactNode;
28
+ notFoundMessage?: ReactNode;
29
+ itemsLoadingMessage?: ReactNode;
30
+ items: T[];
31
+ itemsError?: ReactNode;
32
+ itemsLoading?: boolean;
33
+ invalid?: boolean;
34
+ selectedItemIds: T['id'][];
35
+ onChangeSelectedItemIds: MultiSelectSelectedItemIdsChangeHandler<T>;
36
+ filterItem: MultiSelectItemFilter<T>;
37
+ getItemLabel: MultiSelectItemLabelGetter<T>;
38
+ getItemCaption?: MultiSelectItemCaptionGetter<T>;
39
+ onOpen?: MultiSelectOpenHandler;
40
+ onClose?: MultiSelectCloseHandler;
41
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,215 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useId, useRef, useState, } from 'react';
3
+ import { classNames } from '../../lib/react-helpers.js';
4
+ import { Spinner } from '../spinner/index.js';
5
+ import { TextInput } from '../text-input/index.js';
6
+ import { Tag } from '../tag/index.js';
7
+ import { CheckIcon, ChevronDownIcon, XMarkIcon } from './icons.js';
8
+ import { getElementBoundingRect } from '../../lib/get-element-bounding-rect.js';
9
+ export function MultiSelect({ style, className, size = 'md', inputId: defaultInputId, inputAriaLabel, chipTint = 'blue', chipStyle = 'default', placeholder, noDataMessage = 'No data', notFoundMessage = 'Not found', itemsLoadingMessage = 'Loading...', items, itemsError, itemsLoading, invalid, selectedItemIds: checkedItemIds, onChangeSelectedItemIds: onChangeCheckedItemIds, filterItem, getItemLabel, getItemCaption = () => undefined, onOpen, onClose, }) {
10
+ const ref = useRef(null);
11
+ const id = useId();
12
+ const inputId = defaultInputId || `${id}-multi-select-input`;
13
+ const buttonId = `${id}-multi-select-button`;
14
+ const listBoxId = `${id}-multi-select-list-box`;
15
+ const getOptionId = (itemId) => `${id}-multi-select-option-${itemId}`;
16
+ const [search, setSearch] = useState('');
17
+ const [expanded, setExpanded] = useState(false);
18
+ const [selectedItemId, setSelectedItemId] = useState(undefined);
19
+ const checkedItemIdSet = new Set(checkedItemIds);
20
+ const checkedItems = [];
21
+ const filteredItems = [];
22
+ for (const item of items) {
23
+ if (filterItem(search, item)) {
24
+ filteredItems.push(item);
25
+ }
26
+ if (checkedItemIdSet.has(item.id)) {
27
+ checkedItems.push(item);
28
+ }
29
+ }
30
+ const openListBox = () => {
31
+ if (expanded) {
32
+ return;
33
+ }
34
+ const containerEl = ref.current;
35
+ if (!containerEl) {
36
+ return;
37
+ }
38
+ const inputEl = document.getElementById(inputId);
39
+ if (inputEl instanceof HTMLInputElement) {
40
+ inputEl.focus();
41
+ }
42
+ setExpanded(true);
43
+ if (typeof onOpen === 'function') {
44
+ onOpen();
45
+ }
46
+ };
47
+ const closeListBox = () => {
48
+ setExpanded(false);
49
+ setSelectedItemId(undefined);
50
+ if (typeof onClose === 'function') {
51
+ onClose();
52
+ }
53
+ };
54
+ const toggleItem = (itemId) => {
55
+ const newCheckedItemIdSet = new Set(checkedItemIdSet);
56
+ if (newCheckedItemIdSet.has(itemId)) {
57
+ newCheckedItemIdSet.delete(itemId);
58
+ }
59
+ else {
60
+ newCheckedItemIdSet.add(itemId);
61
+ }
62
+ onChangeCheckedItemIds(Array.from(newCheckedItemIdSet));
63
+ };
64
+ const selectItemAndScrollIfNeeded = (itemId) => {
65
+ setSelectedItemId(itemId);
66
+ const containerEl = ref.current;
67
+ if (containerEl && itemId) {
68
+ const optionId = getOptionId(itemId);
69
+ const listBoxEl = containerEl.querySelector(`#${listBoxId}`);
70
+ const optionEl = containerEl.querySelector(`#${optionId}`);
71
+ if (listBoxEl && optionEl) {
72
+ const isOptionVisible = isElementVisibleInsideParent(listBoxEl, optionEl);
73
+ if (!isOptionVisible) {
74
+ optionEl.scrollIntoView({ block: 'nearest' });
75
+ }
76
+ }
77
+ }
78
+ };
79
+ const handleButtonPress = (event) => {
80
+ event.preventDefault();
81
+ event.stopPropagation();
82
+ if (expanded) {
83
+ closeListBox();
84
+ }
85
+ else {
86
+ openListBox();
87
+ }
88
+ };
89
+ const handleInputClick = () => {
90
+ openListBox();
91
+ };
92
+ const handleInputBlur = () => {
93
+ closeListBox();
94
+ };
95
+ const handleInputChange = (event) => {
96
+ setSearch(event.target.value);
97
+ setSelectedItemId(undefined);
98
+ openListBox();
99
+ };
100
+ const handleInputKeyDown = (event) => {
101
+ if (event.ctrlKey || event.shiftKey) {
102
+ return;
103
+ }
104
+ let handled = false;
105
+ switch (event.key) {
106
+ case 'Enter':
107
+ case ' ':
108
+ if (expanded && selectedItemId) {
109
+ toggleItem(selectedItemId);
110
+ handled = true;
111
+ }
112
+ break;
113
+ case 'Down':
114
+ case 'ArrowDown':
115
+ openListBox();
116
+ if (filteredItems.length > 0 && !event.altKey) {
117
+ const firstItemIndex = 0;
118
+ const lastItemIndex = filteredItems.length - 1;
119
+ const selectedItemIndex = filteredItems.findIndex((item) => item.id === selectedItemId);
120
+ const newSelectedItem = selectedItemIndex >= 0 && selectedItemIndex < lastItemIndex
121
+ ? filteredItems[selectedItemIndex + 1]
122
+ : filteredItems[firstItemIndex];
123
+ selectItemAndScrollIfNeeded(newSelectedItem.id);
124
+ }
125
+ handled = true;
126
+ break;
127
+ case 'Up':
128
+ case 'ArrowUp':
129
+ openListBox();
130
+ if (filteredItems.length > 0 && !event.altKey) {
131
+ const firstItemIndex = 0;
132
+ const lastItemIndex = filteredItems.length - 1;
133
+ const selectedItemIndex = filteredItems.findIndex((item) => item.id === selectedItemId);
134
+ const newSelectedItem = selectedItemIndex >= 0 && selectedItemIndex > firstItemIndex
135
+ ? filteredItems[selectedItemIndex - 1]
136
+ : filteredItems[lastItemIndex];
137
+ selectItemAndScrollIfNeeded(newSelectedItem.id);
138
+ }
139
+ handled = true;
140
+ break;
141
+ case 'Home':
142
+ if (expanded && selectedItemId && filteredItems.length > 0) {
143
+ const firstItem = filteredItems[0];
144
+ selectItemAndScrollIfNeeded(firstItem.id);
145
+ handled = true;
146
+ }
147
+ break;
148
+ case 'End':
149
+ if (expanded && selectedItemId && filteredItems.length > 0) {
150
+ const lastItem = filteredItems[filteredItems.length - 1];
151
+ selectItemAndScrollIfNeeded(lastItem.id);
152
+ handled = true;
153
+ }
154
+ break;
155
+ case 'Esc':
156
+ case 'Escape':
157
+ closeListBox();
158
+ handled = true;
159
+ break;
160
+ default:
161
+ break;
162
+ }
163
+ if (handled) {
164
+ event.preventDefault();
165
+ event.stopPropagation();
166
+ }
167
+ };
168
+ let listBoxContent;
169
+ if (!expanded) {
170
+ listBoxContent = null;
171
+ }
172
+ else if (itemsLoading) {
173
+ listBoxContent = (_jsxs("li", { className: "dc-multi-select__empty-state dc-multi-select__empty-state_loading", children: [_jsx(Spinner, { size: "1em" }), " ", itemsLoadingMessage] }));
174
+ }
175
+ else if (itemsError) {
176
+ listBoxContent = (_jsx("li", { className: "dc-multi-select__empty-state dc-multi-select__empty-state_error", children: itemsError }));
177
+ }
178
+ else if (items.length === 0) {
179
+ listBoxContent = (_jsx("li", { className: "dc-multi-select__empty-state", children: noDataMessage }));
180
+ }
181
+ else if (filteredItems.length === 0) {
182
+ listBoxContent = (_jsx("li", { className: "dc-multi-select__empty-state", children: notFoundMessage }));
183
+ }
184
+ else {
185
+ listBoxContent = filteredItems.map((item) => (_jsx(MultiSelectOption, { id: item.id, label: getItemLabel(item), caption: getItemCaption(item), optionId: getOptionId(item.id), checked: checkedItemIdSet.has(item.id), selected: selectedItemId === item.id, onCheck: toggleItem, onSelect: setSelectedItemId }, item.id)));
186
+ }
187
+ return (_jsxs("div", { ref: ref, style: style, className: classNames('dc-multi-select', className), "data-expanded": expanded, children: [_jsxs("div", { className: "dc-multi-select__input-container", children: [_jsx(TextInput, { id: inputId, fullWidth: true, size: size, placeholder: placeholder, type: "text", role: "combobox", "aria-label": inputAriaLabel, "aria-expanded": expanded, "aria-controls": listBoxId, "aria-activedescendant": selectedItemId ? getOptionId(selectedItemId) : undefined, value: search, invalid: invalid, "data-1p-ignore": true, onClick: handleInputClick, onBlur: handleInputBlur, onChange: handleInputChange, onKeyDown: handleInputKeyDown, slotRight: () => (_jsx("button", { id: buttonId, className: "dc-multi-select__button", type: "button", "aria-expanded": expanded, "aria-controls": listBoxId, tabIndex: -1, onPointerDown: handleButtonPress, children: _jsx(ChevronDownIcon, { "data-icon": "chevron-down", width: 20, height: 20 }) })) }), _jsx("ul", { id: listBoxId, className: "dc-multi-select__list-box", role: "listbox", hidden: !expanded, children: listBoxContent })] }), checkedItems.length > 0 && (_jsx("div", { className: "dc-multi-select__chips", children: checkedItems.map((item) => (_jsx(MultiSelectChip, { itemId: item.id, tint: chipTint, style: chipStyle, onDelete: toggleItem, children: getItemLabel(item) }, item.id))) }))] }));
188
+ }
189
+ function MultiSelectOption({ id, label, caption, optionId, checked, selected, onCheck, onSelect, }) {
190
+ const handlePointerDown = (event) => {
191
+ event.preventDefault();
192
+ event.stopPropagation();
193
+ onCheck(id);
194
+ };
195
+ const handlePointerOver = (event) => {
196
+ event.preventDefault();
197
+ event.stopPropagation();
198
+ onSelect(id);
199
+ };
200
+ return (_jsxs("li", { id: optionId, className: "dc-multi-select__option", role: "option", "aria-checked": checked, "aria-selected": selected, onPointerDown: handlePointerDown, onPointerOver: handlePointerOver, children: [_jsx("div", { className: "dc-multi-select__option-checkbox", children: _jsx(CheckIcon, { "data-icon": "check", width: 16, height: 16 }) }), _jsxs("div", { className: "dc-multi-select__option-body", children: [_jsx("span", { className: "dc-multi-select__option-label", children: label }), caption
201
+ ? _jsx("small", { className: "dc-multi-select__option-caption", children: caption })
202
+ : null] })] }));
203
+ }
204
+ function MultiSelectChip({ tint, style, itemId, children, onDelete, }) {
205
+ const handleButtonClick = () => {
206
+ onDelete(itemId);
207
+ };
208
+ return (_jsxs(Tag, { className: "dc-multi-select__chip", as: "span", size: "lg", tint: tint, tagStyle: style, children: [children, _jsx("button", { className: "dc-multi-select__chip-button", type: "button", onClick: handleButtonClick, children: _jsx(XMarkIcon, { "data-icon": "x-mark", width: 18, height: 18 }) })] }));
209
+ }
210
+ function isElementVisibleInsideParent(parent, child) {
211
+ const parentRect = getElementBoundingRect(parent);
212
+ const childRect = getElementBoundingRect(child);
213
+ return childRect.top >= parentRect.top && childRect.bottom <= parentRect.bottom;
214
+ }
215
+ //# sourceMappingURL=multi-select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-select.js","sourceRoot":"","sources":["../../../src/components/multi-select/multi-select.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "draft-components",
3
- "version": "4.15.0",
3
+ "version": "4.17.0",
4
4
  "description": "The React based UI components library.",
5
5
  "type": "module",
6
6
  "exports": {