draft-components 4.14.1 → 4.16.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.
@@ -2119,8 +2119,7 @@
2119
2119
  --font: var(--dc-text-sm);
2120
2120
  --padding: 12px 16px;
2121
2121
  --color: var(--dc-text-color-primary);
2122
- --background: rgb(var(--dc-white-rgb) / 85%);
2123
- --background-filter: blur(20px) saturate(180%);
2122
+ --background: var(--dc-background-primary);
2124
2123
  --radius: 8px;
2125
2124
  --shadow: 0 0 0 1px rgb(var(--dc-black-rgb) / 7.5%), 0 -1px 0 0 rgb(var(--dc-black-rgb) / 5%), var(--dc-shadow-lg);
2126
2125
 
@@ -2140,8 +2139,6 @@
2140
2139
  background: var(--background);
2141
2140
  border-radius: var(--radius);
2142
2141
  box-shadow: var(--shadow);
2143
- -webkit-backdrop-filter: var(--background-filter);
2144
- backdrop-filter: var(--background-filter);
2145
2142
  }
2146
2143
 
2147
2144
  .dc-popover__backdrop {
@@ -2191,7 +2188,6 @@
2191
2188
  .dark .dc-popover,
2192
2189
  .dark.dc-popover {
2193
2190
  --border-color: var(--dc-neutral-600);
2194
- --background: rgb(var(--dc-neutral-800-rgb) / 85%);
2195
2191
  --shadow: 0 0 0 1px var(--dc-neutral-600), var(--dc-shadow-lg);
2196
2192
 
2197
2193
  color-scheme: dark;
@@ -4614,8 +4610,7 @@
4614
4610
  --border-color: var(--dc-neutral-300);
4615
4611
  --border: 1px solid var(--border-color);
4616
4612
  --background: var(--dc-background-primary);
4617
- --background-sticky: rgb(var(--dc-white-rgb) / 80%);
4618
- --backdrop-filter-sticky: blur(20px) saturate(180%);
4613
+ --background-sticky: var(--background);
4619
4614
  --head-background: var(--background);
4620
4615
  --row-background-stripped: var(--dc-neutral-100);
4621
4616
  --row-background-selected: var(--dc-neutral-100);
@@ -4689,8 +4684,6 @@
4689
4684
  position: sticky;
4690
4685
  z-index: 1;
4691
4686
  background: var(--background-sticky);
4692
- -webkit-backdrop-filter: var(--backdrop-filter-sticky);
4693
- backdrop-filter: var(--backdrop-filter-sticky);
4694
4687
  }
4695
4688
 
4696
4689
  .dc-table_sticky_header thead {
@@ -4784,7 +4777,6 @@
4784
4777
  --color: var(--dc-text-color-primary);
4785
4778
  --border-color: var(--dc-neutral-600);
4786
4779
  --background: var(--dc-background-primary);
4787
- --background-sticky: rgb(var(--dc-neutral-800-rgb) / 80%);
4788
4780
  --row-background-stripped: var(--dc-neutral-700);
4789
4781
  --row-background-selected: var(--dc-neutral-700);
4790
4782
  --row-background-highlighted: var(--dc-neutral-600);
@@ -5698,6 +5690,236 @@
5698
5690
 
5699
5691
  /* Other */
5700
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__checked-items {
5745
+ display: flex;
5746
+ flex-wrap: wrap;
5747
+ gap: 4px;
5748
+ align-items: center;
5749
+ margin-top: 8px;
5750
+ }
5751
+
5752
+ .dc-multi-select__item {
5753
+ padding-top: 0;
5754
+ padding-right: 0;
5755
+ padding-bottom: 0;
5756
+ }
5757
+
5758
+ .dc-multi-select__item-delete-button {
5759
+ width: 28px;
5760
+ height: 28px;
5761
+ padding: 0;
5762
+ margin-left: 4px;
5763
+ border-radius: inherit;
5764
+ }
5765
+
5766
+ .dc-multi-select__button {
5767
+ box-sizing: border-box;
5768
+ display: inline-flex;
5769
+ align-items: center;
5770
+ justify-content: center;
5771
+ min-width: 30px;
5772
+ height: 100%;
5773
+ aspect-ratio: 1 / 1;
5774
+ padding: 0;
5775
+ font: inherit;
5776
+ color: var(--button-color);
5777
+ -webkit-appearance: none;
5778
+ -moz-appearance: none;
5779
+ appearance: none;
5780
+ background: var(--button-background);
5781
+ border: none;
5782
+ border-radius: inherit;
5783
+ }
5784
+
5785
+ .dc-multi-select__button:hover {
5786
+ background: var(--button-background-hover);
5787
+ }
5788
+
5789
+ .dc-multi-select__button:focus {
5790
+ outline: none;
5791
+ }
5792
+
5793
+ .dc-multi-select__button:focus-visible {
5794
+ outline: 2px solid var(--button-focus-ring-color);
5795
+ outline-offset: 2px;
5796
+ }
5797
+
5798
+ .dc-multi-select__button [data-icon="chevron-down"] {
5799
+ transform-origin: center;
5800
+ }
5801
+
5802
+ .dc-multi-select__button[aria-expanded="true"] [data-icon="chevron-down"] {
5803
+ transform: rotate(180deg);
5804
+ }
5805
+
5806
+ .dc-multi-select__empty-state {
5807
+ padding: 8px;
5808
+ font: var(--empty-state-font-message-font);
5809
+ color: var(--empty-state-font-message-color);
5810
+ }
5811
+
5812
+ .dc-multi-select__empty-state_error {
5813
+ color: var(--error-state-font-message-color);
5814
+ }
5815
+
5816
+ .dc-multi-select__empty-state_loading {
5817
+ display: flex;
5818
+ gap: 8px;
5819
+ align-items: center;
5820
+ }
5821
+
5822
+ .dc-multi-select__option {
5823
+ box-sizing: border-box;
5824
+ display: flex;
5825
+ gap: 12px;
5826
+ width: 100%;
5827
+ padding: 8px;
5828
+ font: var(--option-font);
5829
+ cursor: default;
5830
+ scroll-margin-top: 4px;
5831
+ scroll-margin-bottom: 4px;
5832
+ border-radius: var(--option-border-radius);
5833
+ }
5834
+
5835
+ .dc-multi-select__option[aria-selected="true"] {
5836
+ color: var(--option-color-selected);
5837
+ background: var(--option-background-selected);
5838
+ }
5839
+
5840
+ .dc-multi-select__option [data-icon="check"] {
5841
+ display: none;
5842
+ }
5843
+
5844
+ .dc-multi-select__option[aria-checked="true"] [data-icon="check"] {
5845
+ display: initial;
5846
+ }
5847
+
5848
+ .dc-multi-select__option-checkbox {
5849
+ box-sizing: border-box;
5850
+ display: inline-flex;
5851
+ align-items: center;
5852
+ justify-content: center;
5853
+ width: var(--checkbox-size);
5854
+ height: var(--checkbox-size);
5855
+ color: var(--checkbox-color);
5856
+ background: var(--checkbox-background);
5857
+ border: var(--checkbox-border);
5858
+ border-radius: var(--checkbox-border-radius);
5859
+ }
5860
+
5861
+ .dc-multi-select__option[aria-checked="true"]
5862
+ .dc-multi-select__option-checkbox {
5863
+ color: var(--checkbox-color-checked);
5864
+ background: var(--checkbox-background-checked);
5865
+ border: var(--checkbox-border-checked);
5866
+ }
5867
+
5868
+ .dc-multi-select__option-label,
5869
+ .dc-multi-select__option-caption {
5870
+ display: block;
5871
+ width: 100%;
5872
+ }
5873
+
5874
+ .dc-multi-select__option-label {
5875
+ font-weight: 600;
5876
+ }
5877
+
5878
+ .dc-multi-select__option-caption {
5879
+ font: var(--option-caption-font);
5880
+ color: var(--option-caption-color);
5881
+ }
5882
+
5883
+ .dc-multi-select__option[aria-checked="true"] .dc-multi-select__option-caption {
5884
+ color: var(--option-caption-color-selected);
5885
+ }
5886
+
5887
+ .dc-multi-select__list-box {
5888
+ position: absolute;
5889
+ top: calc(100% + 4px);
5890
+ left: 0;
5891
+ z-index: var(--dc-overlay-z-index);
5892
+ box-sizing: border-box;
5893
+ width: 100%;
5894
+ max-height: 296px;
5895
+ padding: 4px;
5896
+ margin: 0;
5897
+ overflow: auto;
5898
+ overscroll-behavior: contain;
5899
+ font-size: var(--font-size);
5900
+ list-style: none;
5901
+ background: var(--listbox-background);
5902
+ border-radius: var(--listbox-border-radius);
5903
+ box-shadow: var(--listbox-shadow);
5904
+ }
5905
+
5906
+ .dark .dc-multi-select,
5907
+ .dark.dc-multi-select {
5908
+ /* Button props */
5909
+ --button-background-hover: var(--dc-neutral-700);
5910
+
5911
+ /* Checkbox props */
5912
+ --checkbox-background: var(--dc-neutral-800);
5913
+ --checkbox-border-color: var(--dc-neutral-600);
5914
+ --checkbox-border-color-checked: rgb(var(--dc-white-rgb) / 10%);
5915
+
5916
+ /* Listbox props */
5917
+ --listbox-background: var(--dc-neutral-800);
5918
+ --listbox-shadow: 0 0 0 1px var(--dc-neutral-700), var(--dc-shadow-lg);
5919
+
5920
+ color-scheme: dark;
5921
+ }
5922
+
5701
5923
  .dc-filter-token {
5702
5924
  display: inline-flex;
5703
5925
  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,229 @@
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__checked-items {
53
+ display: flex;
54
+ flex-wrap: wrap;
55
+ gap: 4px;
56
+ align-items: center;
57
+ margin-top: 8px;
58
+ }
59
+
60
+ .dc-multi-select__item {
61
+ padding-top: 0;
62
+ padding-right: 0;
63
+ padding-bottom: 0;
64
+ }
65
+
66
+ .dc-multi-select__item-delete-button {
67
+ width: 28px;
68
+ height: 28px;
69
+ padding: 0;
70
+ margin-left: 4px;
71
+ border-radius: inherit;
72
+ }
73
+
74
+ .dc-multi-select__button {
75
+ box-sizing: border-box;
76
+ display: inline-flex;
77
+ align-items: center;
78
+ justify-content: center;
79
+ min-width: 30px;
80
+ height: 100%;
81
+ aspect-ratio: 1 / 1;
82
+ padding: 0;
83
+ font: inherit;
84
+ color: var(--button-color);
85
+ -webkit-appearance: none;
86
+ -moz-appearance: none;
87
+ appearance: none;
88
+ background: var(--button-background);
89
+ border: none;
90
+ border-radius: inherit;
91
+ }
92
+
93
+ .dc-multi-select__button:hover {
94
+ background: var(--button-background-hover);
95
+ }
96
+
97
+ .dc-multi-select__button:focus {
98
+ outline: none;
99
+ }
100
+
101
+ .dc-multi-select__button:focus-visible {
102
+ outline: 2px solid var(--button-focus-ring-color);
103
+ outline-offset: 2px;
104
+ }
105
+
106
+ .dc-multi-select__button [data-icon="chevron-down"] {
107
+ transform-origin: center;
108
+ }
109
+
110
+ .dc-multi-select__button[aria-expanded="true"] [data-icon="chevron-down"] {
111
+ transform: rotate(180deg);
112
+ }
113
+
114
+ .dc-multi-select__empty-state {
115
+ padding: 8px;
116
+ font: var(--empty-state-font-message-font);
117
+ color: var(--empty-state-font-message-color);
118
+ }
119
+
120
+ .dc-multi-select__empty-state_error {
121
+ color: var(--error-state-font-message-color);
122
+ }
123
+
124
+ .dc-multi-select__empty-state_loading {
125
+ display: flex;
126
+ gap: 8px;
127
+ align-items: center;
128
+ }
129
+
130
+ .dc-multi-select__option {
131
+ box-sizing: border-box;
132
+ display: flex;
133
+ gap: 12px;
134
+ width: 100%;
135
+ padding: 8px;
136
+ font: var(--option-font);
137
+ cursor: default;
138
+ scroll-margin-top: 4px;
139
+ scroll-margin-bottom: 4px;
140
+ border-radius: var(--option-border-radius);
141
+ }
142
+
143
+ .dc-multi-select__option[aria-selected="true"] {
144
+ color: var(--option-color-selected);
145
+ background: var(--option-background-selected);
146
+ }
147
+
148
+ .dc-multi-select__option [data-icon="check"] {
149
+ display: none;
150
+ }
151
+
152
+ .dc-multi-select__option[aria-checked="true"] [data-icon="check"] {
153
+ display: initial;
154
+ }
155
+
156
+ .dc-multi-select__option-checkbox {
157
+ box-sizing: border-box;
158
+ display: inline-flex;
159
+ align-items: center;
160
+ justify-content: center;
161
+ width: var(--checkbox-size);
162
+ height: var(--checkbox-size);
163
+ color: var(--checkbox-color);
164
+ background: var(--checkbox-background);
165
+ border: var(--checkbox-border);
166
+ border-radius: var(--checkbox-border-radius);
167
+ }
168
+
169
+ .dc-multi-select__option[aria-checked="true"]
170
+ .dc-multi-select__option-checkbox {
171
+ color: var(--checkbox-color-checked);
172
+ background: var(--checkbox-background-checked);
173
+ border: var(--checkbox-border-checked);
174
+ }
175
+
176
+ .dc-multi-select__option-label,
177
+ .dc-multi-select__option-caption {
178
+ display: block;
179
+ width: 100%;
180
+ }
181
+
182
+ .dc-multi-select__option-label {
183
+ font-weight: 600;
184
+ }
185
+
186
+ .dc-multi-select__option-caption {
187
+ font: var(--option-caption-font);
188
+ color: var(--option-caption-color);
189
+ }
190
+
191
+ .dc-multi-select__option[aria-checked="true"] .dc-multi-select__option-caption {
192
+ color: var(--option-caption-color-selected);
193
+ }
194
+
195
+ .dc-multi-select__list-box {
196
+ position: absolute;
197
+ top: calc(100% + 4px);
198
+ left: 0;
199
+ z-index: var(--dc-overlay-z-index);
200
+ box-sizing: border-box;
201
+ width: 100%;
202
+ max-height: 296px;
203
+ padding: 4px;
204
+ margin: 0;
205
+ overflow: auto;
206
+ overscroll-behavior: contain;
207
+ font-size: var(--font-size);
208
+ list-style: none;
209
+ background: var(--listbox-background);
210
+ border-radius: var(--listbox-border-radius);
211
+ box-shadow: var(--listbox-shadow);
212
+ }
213
+
214
+ .dark .dc-multi-select,
215
+ .dark.dc-multi-select {
216
+ /* Button props */
217
+ --button-background-hover: var(--dc-neutral-700);
218
+
219
+ /* Checkbox props */
220
+ --checkbox-background: var(--dc-neutral-800);
221
+ --checkbox-border-color: var(--dc-neutral-600);
222
+ --checkbox-border-color-checked: rgb(var(--dc-white-rgb) / 10%);
223
+
224
+ /* Listbox props */
225
+ --listbox-background: var(--dc-neutral-800);
226
+ --listbox-shadow: 0 0 0 1px var(--dc-neutral-700), var(--dc-shadow-lg);
227
+
228
+ color-scheme: dark;
229
+ }
@@ -0,0 +1,36 @@
1
+ import { type ReactNode, type CSSProperties } from 'react';
2
+ export type MultiSelectSize = 'sm' | 'md' | 'lg';
3
+ export type MultiSelectItem = {
4
+ id: string | number;
5
+ };
6
+ export type MultiSelectItemFilter<T extends MultiSelectItem> = (searchQuery: string, item: T) => boolean;
7
+ export type MultiSelectItemLabelGetter<T extends MultiSelectItem> = (item: T) => ReactNode;
8
+ export type MultiSelectItemCaptionGetter<T extends MultiSelectItem> = (item: T) => ReactNode;
9
+ export type MultiSelectChangeCheckedItemsHandler<T extends MultiSelectItem> = (items: T[]) => void;
10
+ export type MultiSelectOpenHandler = () => void;
11
+ export type MultiSelectCloseHandler = () => void;
12
+ export type MultiSelectMessages = {
13
+ noData?: ReactNode;
14
+ notFound?: ReactNode;
15
+ };
16
+ export declare function MultiSelect<T extends MultiSelectItem>({ id: defaultId, style, className, size, invalid, placeholder, noDataMessage, notFoundMessage, itemsLoadingMessage, items, itemsError, itemsLoading, checkedItems, filterItem, getItemLabel, getItemCaption, onChangeCheckedItems, onOpen, onClose, }: {
17
+ id?: string;
18
+ style?: CSSProperties;
19
+ className?: string;
20
+ size?: MultiSelectSize;
21
+ invalid?: boolean;
22
+ placeholder?: string;
23
+ noDataMessage?: ReactNode;
24
+ notFoundMessage?: ReactNode;
25
+ itemsLoadingMessage?: ReactNode;
26
+ items: T[];
27
+ itemsError?: ReactNode;
28
+ itemsLoading?: boolean;
29
+ checkedItems: T[];
30
+ filterItem: MultiSelectItemFilter<T>;
31
+ getItemLabel: MultiSelectItemLabelGetter<T>;
32
+ getItemCaption?: MultiSelectItemCaptionGetter<T>;
33
+ onChangeCheckedItems: MultiSelectChangeCheckedItemsHandler<T>;
34
+ onOpen?: MultiSelectOpenHandler;
35
+ onClose?: MultiSelectCloseHandler;
36
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,205 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useId, useRef, useState, useCallback, } 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 { IconButton } from '../button/index.js';
8
+ import { CheckIcon, ChevronDownIcon, XMarkIcon } from './icons.js';
9
+ import { getElementBoundingRect } from '../../lib/get-element-bounding-rect.js';
10
+ export function MultiSelect({ id: defaultId, style, className, size = 'md', invalid, placeholder, noDataMessage = 'No data', notFoundMessage = 'Not found', itemsLoadingMessage = 'Loading...', items, itemsError, itemsLoading, checkedItems, filterItem, getItemLabel, getItemCaption, onChangeCheckedItems, onOpen, onClose, }) {
11
+ const id = useId();
12
+ const ref = useRef(null);
13
+ const inputId = defaultId || `${id}multi-select-input`;
14
+ const buttonId = `${id}multi-select-button`;
15
+ const listBoxId = `${id}multi-select-list-box`;
16
+ const getOptionId = useCallback((item) => `${id}multi-select-option-${item.id}`, [id]);
17
+ const [search, setSearch] = useState('');
18
+ const [expanded, setExpanded] = useState(false);
19
+ const [selectedItem, setSelectedItem] = useState(undefined);
20
+ const checkedItemSet = new Set(checkedItems);
21
+ const filteredItems = items.filter((item) => filterItem(search, item));
22
+ const openListBox = () => {
23
+ if (expanded) {
24
+ return;
25
+ }
26
+ const containerEl = ref.current;
27
+ if (!containerEl) {
28
+ return;
29
+ }
30
+ const inputEl = document.getElementById(inputId);
31
+ if (inputEl instanceof HTMLInputElement) {
32
+ inputEl.focus();
33
+ }
34
+ setExpanded(true);
35
+ if (typeof onOpen === 'function') {
36
+ onOpen();
37
+ }
38
+ };
39
+ const closeListBox = () => {
40
+ setExpanded(false);
41
+ setSelectedItem(undefined);
42
+ if (typeof onClose === 'function') {
43
+ onClose();
44
+ }
45
+ };
46
+ const toggleItem = (item) => {
47
+ const newSelectedItemIdSet = new Set(checkedItemSet);
48
+ if (newSelectedItemIdSet.has(item)) {
49
+ newSelectedItemIdSet.delete(item);
50
+ }
51
+ else {
52
+ newSelectedItemIdSet.add(item);
53
+ }
54
+ onChangeCheckedItems(Array.from(newSelectedItemIdSet));
55
+ };
56
+ const selectItemAndScrollIfNeeded = (item) => {
57
+ setSelectedItem(item);
58
+ const containerEl = ref.current;
59
+ if (containerEl && item) {
60
+ const optionId = getOptionId(item);
61
+ const listBoxEl = containerEl.querySelector(`#${listBoxId}`);
62
+ const optionEl = containerEl.querySelector(`#${optionId}`);
63
+ if (listBoxEl && optionEl) {
64
+ const isOptionVisible = isElementVisibleInsideParent(listBoxEl, optionEl);
65
+ if (!isOptionVisible) {
66
+ optionEl.scrollIntoView({ block: 'nearest' });
67
+ }
68
+ }
69
+ }
70
+ };
71
+ const handleButtonPress = (event) => {
72
+ event.preventDefault();
73
+ event.stopPropagation();
74
+ if (expanded) {
75
+ closeListBox();
76
+ }
77
+ else {
78
+ openListBox();
79
+ }
80
+ };
81
+ const handleInputClick = () => {
82
+ openListBox();
83
+ };
84
+ const handleInputBlur = () => {
85
+ closeListBox();
86
+ };
87
+ const handleInputChange = (event) => {
88
+ setSearch(event.target.value);
89
+ setSelectedItem(undefined);
90
+ openListBox();
91
+ };
92
+ const handleInputKeyDown = (event) => {
93
+ if (event.ctrlKey || event.shiftKey) {
94
+ return;
95
+ }
96
+ let handled = false;
97
+ switch (event.key) {
98
+ case 'Enter':
99
+ case ' ':
100
+ if (expanded && selectedItem) {
101
+ toggleItem(selectedItem);
102
+ handled = true;
103
+ }
104
+ break;
105
+ case 'Down':
106
+ case 'ArrowDown':
107
+ openListBox();
108
+ if (filteredItems.length > 0 && !event.altKey) {
109
+ const firstItemIndex = 0;
110
+ const lastItemIndex = filteredItems.length - 1;
111
+ const selectedItemIndex = filteredItems.findIndex((item) => item === selectedItem);
112
+ const newSelectedItem = selectedItemIndex >= 0 && selectedItemIndex < lastItemIndex
113
+ ? filteredItems[selectedItemIndex + 1]
114
+ : filteredItems[firstItemIndex];
115
+ selectItemAndScrollIfNeeded(newSelectedItem);
116
+ }
117
+ handled = true;
118
+ break;
119
+ case 'Up':
120
+ case 'ArrowUp':
121
+ openListBox();
122
+ if (filteredItems.length > 0 && !event.altKey) {
123
+ const firstItemIndex = 0;
124
+ const lastItemIndex = filteredItems.length - 1;
125
+ const selectedItemIndex = filteredItems.findIndex((item) => item === selectedItem);
126
+ const newSelectedItem = selectedItemIndex >= 0 && selectedItemIndex > firstItemIndex
127
+ ? filteredItems[selectedItemIndex - 1]
128
+ : filteredItems[lastItemIndex];
129
+ selectItemAndScrollIfNeeded(newSelectedItem);
130
+ }
131
+ handled = true;
132
+ break;
133
+ case 'Home':
134
+ if (expanded && selectedItem && filteredItems.length > 0) {
135
+ const firstItem = filteredItems[0];
136
+ selectItemAndScrollIfNeeded(firstItem);
137
+ handled = true;
138
+ }
139
+ break;
140
+ case 'End':
141
+ if (expanded && selectedItem && filteredItems.length > 0) {
142
+ const lastItem = filteredItems[filteredItems.length - 1];
143
+ selectItemAndScrollIfNeeded(lastItem);
144
+ handled = true;
145
+ }
146
+ break;
147
+ case 'Esc':
148
+ case 'Escape':
149
+ closeListBox();
150
+ handled = true;
151
+ break;
152
+ default:
153
+ break;
154
+ }
155
+ if (handled) {
156
+ event.preventDefault();
157
+ event.stopPropagation();
158
+ }
159
+ };
160
+ let listBoxContent;
161
+ if (!expanded) {
162
+ listBoxContent = null;
163
+ }
164
+ else if (itemsLoading) {
165
+ listBoxContent = (_jsxs("li", { className: "dc-multi-select__empty-state dc-multi-select__empty-state_loading", children: [_jsx(Spinner, { size: "1em" }), " ", itemsLoadingMessage] }));
166
+ }
167
+ else if (itemsError) {
168
+ listBoxContent = (_jsx("li", { className: "dc-multi-select__empty-state dc-multi-select__empty-state_error", children: itemsError }));
169
+ }
170
+ else if (items.length === 0) {
171
+ listBoxContent = (_jsx("li", { className: "dc-multi-select__empty-state", children: noDataMessage }));
172
+ }
173
+ else if (filteredItems.length === 0) {
174
+ listBoxContent = (_jsx("li", { className: "dc-multi-select__empty-state", children: notFoundMessage }));
175
+ }
176
+ else {
177
+ listBoxContent = filteredItems.map((item) => (_jsx(MultiSelectOption, { id: getOptionId(item), item: item, checked: checkedItemSet.has(item), selected: selectedItem === item, getLabel: getItemLabel, getCaption: getItemCaption, onCheck: toggleItem, onSelect: setSelectedItem }, item.id)));
178
+ }
179
+ 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-expanded": expanded, "aria-controls": listBoxId, "aria-activedescendant": selectedItem ? getOptionId(selectedItem) : 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 })] }), _jsx("div", { className: "dc-multi-select__checked-items", children: checkedItems.map((item) => (_jsxs(Tag, { className: "dc-multi-select__item", size: "lg", children: [getItemLabel(item), _jsx(IconButton, { className: "dc-multi-select__item-delete-button", buttonStyle: "plain", size: "xs", type: "button", onClick: () => toggleItem(item), children: _jsx(XMarkIcon, { "data-icon": "x-mark", width: 18, height: 18 }) })] }, item.id))) })] }));
180
+ }
181
+ function MultiSelectOption({ id, item, selected, checked, getLabel, getCaption, onCheck, onSelect, }) {
182
+ const handlePointerDown = (event) => {
183
+ event.preventDefault();
184
+ event.stopPropagation();
185
+ onCheck(item);
186
+ };
187
+ const handlePointerOver = (event) => {
188
+ event.preventDefault();
189
+ event.stopPropagation();
190
+ onSelect(item);
191
+ };
192
+ let caption;
193
+ if (typeof getCaption === 'function') {
194
+ caption = getCaption(item);
195
+ }
196
+ return (_jsxs("li", { id: id, 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("b", { className: "dc-multi-select__option-label", children: getLabel(item) }), caption
197
+ ? _jsx("small", { className: "dc-multi-select__option-caption", children: caption })
198
+ : null] })] }));
199
+ }
200
+ function isElementVisibleInsideParent(parent, child) {
201
+ const parentRect = getElementBoundingRect(parent);
202
+ const childRect = getElementBoundingRect(child);
203
+ return childRect.top >= parentRect.top && childRect.bottom <= parentRect.bottom;
204
+ }
205
+ //# 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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"}
@@ -2,8 +2,7 @@
2
2
  --font: var(--dc-text-sm);
3
3
  --padding: 12px 16px;
4
4
  --color: var(--dc-text-color-primary);
5
- --background: rgb(var(--dc-white-rgb) / 85%);
6
- --background-filter: blur(20px) saturate(180%);
5
+ --background: var(--dc-background-primary);
7
6
  --radius: 8px;
8
7
  --shadow: 0 0 0 1px rgb(var(--dc-black-rgb) / 7.5%), 0 -1px 0 0 rgb(var(--dc-black-rgb) / 5%), var(--dc-shadow-lg);
9
8
 
@@ -23,8 +22,6 @@
23
22
  background: var(--background);
24
23
  border-radius: var(--radius);
25
24
  box-shadow: var(--shadow);
26
- -webkit-backdrop-filter: var(--background-filter);
27
- backdrop-filter: var(--background-filter);
28
25
  }
29
26
 
30
27
  .dc-popover__backdrop {
@@ -74,7 +71,6 @@
74
71
  .dark .dc-popover,
75
72
  .dark.dc-popover {
76
73
  --border-color: var(--dc-neutral-600);
77
- --background: rgb(var(--dc-neutral-800-rgb) / 85%);
78
74
  --shadow: 0 0 0 1px var(--dc-neutral-600), var(--dc-shadow-lg);
79
75
 
80
76
  color-scheme: dark;
@@ -4,8 +4,7 @@
4
4
  --border-color: var(--dc-neutral-300);
5
5
  --border: 1px solid var(--border-color);
6
6
  --background: var(--dc-background-primary);
7
- --background-sticky: rgb(var(--dc-white-rgb) / 80%);
8
- --backdrop-filter-sticky: blur(20px) saturate(180%);
7
+ --background-sticky: var(--background);
9
8
  --head-background: var(--background);
10
9
  --row-background-stripped: var(--dc-neutral-100);
11
10
  --row-background-selected: var(--dc-neutral-100);
@@ -79,8 +78,6 @@
79
78
  position: sticky;
80
79
  z-index: 1;
81
80
  background: var(--background-sticky);
82
- -webkit-backdrop-filter: var(--backdrop-filter-sticky);
83
- backdrop-filter: var(--backdrop-filter-sticky);
84
81
  }
85
82
 
86
83
  .dc-table_sticky_header thead {
@@ -174,7 +171,6 @@
174
171
  --color: var(--dc-text-color-primary);
175
172
  --border-color: var(--dc-neutral-600);
176
173
  --background: var(--dc-background-primary);
177
- --background-sticky: rgb(var(--dc-neutral-800-rgb) / 80%);
178
174
  --row-background-stripped: var(--dc-neutral-700);
179
175
  --row-background-selected: var(--dc-neutral-700);
180
176
  --row-background-highlighted: var(--dc-neutral-600);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "draft-components",
3
- "version": "4.14.1",
3
+ "version": "4.16.0",
4
4
  "description": "The React based UI components library.",
5
5
  "type": "module",
6
6
  "exports": {