@daikin-oss/design-system-web-components 1.2.0 → 1.3.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 (245) hide show
  1. package/CHANGELOG.md +150 -0
  2. package/dist/cjs/base/dds-element.cjs +1 -1
  3. package/dist/cjs/components/accordion-item/daikin-accordion-item.cjs +1 -0
  4. package/dist/cjs/components/avatar/daikin-avatar.cjs +1 -0
  5. package/dist/cjs/components/calendar/daikin-calendar.cjs +2 -0
  6. package/dist/cjs/components/card-header/daikin-card-header.cjs +1 -1
  7. package/dist/cjs/components/carousel/daikin-carousel.cjs +7 -3
  8. package/dist/cjs/components/carousel-item/daikin-carousel-item.cjs +2 -2
  9. package/dist/cjs/components/chip/daikin-chip.cjs +106 -0
  10. package/dist/cjs/components/chip/daikin-chip.d.cts +36 -0
  11. package/dist/cjs/components/chip/index.cjs +7 -0
  12. package/dist/cjs/components/chip/index.d.cts +1 -0
  13. package/dist/cjs/components/combobox/daikin-combobox.cjs +604 -0
  14. package/dist/cjs/components/combobox/daikin-combobox.d.cts +134 -0
  15. package/dist/cjs/components/combobox/index.cjs +8 -0
  16. package/dist/cjs/components/combobox/index.d.cts +1 -0
  17. package/dist/cjs/components/date-picker/daikin-date-picker.cjs +31 -16
  18. package/dist/cjs/components/date-picker/daikin-date-picker.d.cts +2 -1
  19. package/dist/cjs/components/dropdown/daikin-dropdown.cjs +52 -37
  20. package/dist/cjs/components/dropdown/daikin-dropdown.d.cts +4 -3
  21. package/dist/cjs/components/icon/daikin-icon.cjs +117 -12
  22. package/dist/cjs/components/icon/daikin-icon.d.cts +141 -9
  23. package/dist/cjs/components/icon/icons.json.cjs +5 -1
  24. package/dist/cjs/components/icon-button/daikin-icon-button.cjs +12 -2
  25. package/dist/cjs/components/icon-button/daikin-icon-button.d.cts +8 -0
  26. package/dist/cjs/components/index.cjs +36 -0
  27. package/dist/cjs/components/index.d.cts +5 -0
  28. package/dist/cjs/components/input-group/daikin-input-group.cjs +1 -1
  29. package/dist/cjs/components/input-group/daikin-input-group.d.cts +40 -13
  30. package/dist/cjs/components/list-item/daikin-list-item.cjs +2 -2
  31. package/dist/cjs/components/modal-header/daikin-modal-header.cjs +1 -1
  32. package/dist/cjs/components/progress-bar/daikin-progress-bar.cjs +3 -3
  33. package/dist/cjs/components/select/daikin-select.cjs +6 -1
  34. package/dist/cjs/components/tab/daikin-tab.cjs +1 -0
  35. package/dist/cjs/components/table/daikin-table.cjs +33 -12
  36. package/dist/cjs/components/table/daikin-table.d.cts +67 -34
  37. package/dist/cjs/components/table-header-cell/daikin-table-header-cell.cjs +31 -6
  38. package/dist/cjs/components/table-header-cell/daikin-table-header-cell.d.cts +7 -0
  39. package/dist/cjs/components/text-field/daikin-text-field.cjs +191 -56
  40. package/dist/cjs/components/text-field/daikin-text-field.d.cts +32 -3
  41. package/dist/cjs/components/text-field/number-utils.cjs +61 -0
  42. package/dist/cjs/components/text-field/number-utils.d.cts +26 -0
  43. package/dist/cjs/components/text-masked-field/daikin-text-masked-field.cjs +312 -0
  44. package/dist/cjs/components/text-masked-field/daikin-text-masked-field.d.cts +136 -0
  45. package/dist/cjs/components/text-masked-field/index.cjs +7 -0
  46. package/dist/cjs/components/text-masked-field/index.d.cts +1 -0
  47. package/dist/cjs/components/time-picker/daikin-time-picker.cjs +577 -0
  48. package/dist/cjs/components/time-picker/daikin-time-picker.d.cts +165 -0
  49. package/dist/cjs/components/time-picker/index.cjs +17 -0
  50. package/dist/cjs/components/time-picker/index.d.cts +1 -0
  51. package/dist/cjs/components/toast-notification-manager/daikin-toast-notification-manager.d.cts +1 -1
  52. package/dist/cjs/components/tooltip/daikin-tooltip.cjs +12 -2
  53. package/dist/cjs/components/tooltip/daikin-tooltip.d.cts +8 -1
  54. package/dist/cjs/controllers/floating-ui-auto-update.cjs +22 -4
  55. package/dist/cjs/controllers/floating-ui-auto-update.d.cts +12 -0
  56. package/dist/cjs/icon-registry.cjs +170 -0
  57. package/dist/cjs/icon-registry.d.cts +120 -0
  58. package/dist/cjs/index.cjs +39 -0
  59. package/dist/cjs/index.d.cts +1 -0
  60. package/dist/cjs/tailwind.css.cjs +1 -1
  61. package/dist/cjs/utils/notification-common.d.cts +1 -1
  62. package/dist/cjs-dev/base/dds-element.cjs +1 -1
  63. package/dist/cjs-dev/components/accordion-item/daikin-accordion-item.cjs +1 -0
  64. package/dist/cjs-dev/components/avatar/daikin-avatar.cjs +1 -0
  65. package/dist/cjs-dev/components/calendar/daikin-calendar.cjs +2 -0
  66. package/dist/cjs-dev/components/card-header/daikin-card-header.cjs +1 -1
  67. package/dist/cjs-dev/components/carousel/daikin-carousel.cjs +7 -3
  68. package/dist/cjs-dev/components/carousel-item/daikin-carousel-item.cjs +2 -2
  69. package/dist/cjs-dev/components/chip/daikin-chip.cjs +106 -0
  70. package/dist/cjs-dev/components/chip/daikin-chip.d.cts +36 -0
  71. package/dist/cjs-dev/components/chip/index.cjs +7 -0
  72. package/dist/cjs-dev/components/chip/index.d.cts +1 -0
  73. package/dist/cjs-dev/components/combobox/daikin-combobox.cjs +604 -0
  74. package/dist/cjs-dev/components/combobox/daikin-combobox.d.cts +134 -0
  75. package/dist/cjs-dev/components/combobox/index.cjs +8 -0
  76. package/dist/cjs-dev/components/combobox/index.d.cts +1 -0
  77. package/dist/cjs-dev/components/date-picker/daikin-date-picker.cjs +31 -16
  78. package/dist/cjs-dev/components/date-picker/daikin-date-picker.d.cts +2 -1
  79. package/dist/cjs-dev/components/dropdown/daikin-dropdown.cjs +52 -37
  80. package/dist/cjs-dev/components/dropdown/daikin-dropdown.d.cts +4 -3
  81. package/dist/cjs-dev/components/icon/daikin-icon.cjs +141 -16
  82. package/dist/cjs-dev/components/icon/daikin-icon.d.cts +141 -9
  83. package/dist/cjs-dev/components/icon/icons.json.cjs +5 -1
  84. package/dist/cjs-dev/components/icon-button/daikin-icon-button.cjs +12 -2
  85. package/dist/cjs-dev/components/icon-button/daikin-icon-button.d.cts +8 -0
  86. package/dist/cjs-dev/components/index.cjs +36 -0
  87. package/dist/cjs-dev/components/index.d.cts +5 -0
  88. package/dist/cjs-dev/components/input-group/daikin-input-group.cjs +1 -1
  89. package/dist/cjs-dev/components/input-group/daikin-input-group.d.cts +40 -13
  90. package/dist/cjs-dev/components/list-item/daikin-list-item.cjs +2 -2
  91. package/dist/cjs-dev/components/modal-header/daikin-modal-header.cjs +1 -1
  92. package/dist/cjs-dev/components/progress-bar/daikin-progress-bar.cjs +3 -3
  93. package/dist/cjs-dev/components/select/daikin-select.cjs +6 -1
  94. package/dist/cjs-dev/components/tab/daikin-tab.cjs +1 -0
  95. package/dist/cjs-dev/components/table/daikin-table.cjs +36 -15
  96. package/dist/cjs-dev/components/table/daikin-table.d.cts +67 -34
  97. package/dist/cjs-dev/components/table-header-cell/daikin-table-header-cell.cjs +31 -6
  98. package/dist/cjs-dev/components/table-header-cell/daikin-table-header-cell.d.cts +7 -0
  99. package/dist/cjs-dev/components/text-field/daikin-text-field.cjs +191 -56
  100. package/dist/cjs-dev/components/text-field/daikin-text-field.d.cts +32 -3
  101. package/dist/cjs-dev/components/text-field/number-utils.cjs +64 -0
  102. package/dist/cjs-dev/components/text-field/number-utils.d.cts +26 -0
  103. package/dist/cjs-dev/components/text-masked-field/daikin-text-masked-field.cjs +312 -0
  104. package/dist/cjs-dev/components/text-masked-field/daikin-text-masked-field.d.cts +136 -0
  105. package/dist/cjs-dev/components/text-masked-field/index.cjs +7 -0
  106. package/dist/cjs-dev/components/text-masked-field/index.d.cts +1 -0
  107. package/dist/cjs-dev/components/time-picker/daikin-time-picker.cjs +589 -0
  108. package/dist/cjs-dev/components/time-picker/daikin-time-picker.d.cts +165 -0
  109. package/dist/cjs-dev/components/time-picker/index.cjs +17 -0
  110. package/dist/cjs-dev/components/time-picker/index.d.cts +1 -0
  111. package/dist/cjs-dev/components/toast-notification-manager/daikin-toast-notification-manager.d.cts +1 -1
  112. package/dist/cjs-dev/components/tooltip/daikin-tooltip.cjs +12 -2
  113. package/dist/cjs-dev/components/tooltip/daikin-tooltip.d.cts +8 -1
  114. package/dist/cjs-dev/controllers/floating-ui-auto-update.cjs +22 -4
  115. package/dist/cjs-dev/controllers/floating-ui-auto-update.d.cts +12 -0
  116. package/dist/cjs-dev/icon-registry.cjs +170 -0
  117. package/dist/cjs-dev/icon-registry.d.cts +120 -0
  118. package/dist/cjs-dev/index.cjs +39 -0
  119. package/dist/cjs-dev/index.d.cts +1 -0
  120. package/dist/cjs-dev/tailwind.css.cjs +1 -1
  121. package/dist/cjs-dev/utils/notification-common.d.cts +1 -1
  122. package/dist/es/base/dds-element.js +1 -1
  123. package/dist/es/components/accordion-item/daikin-accordion-item.js +1 -0
  124. package/dist/es/components/avatar/daikin-avatar.js +1 -0
  125. package/dist/es/components/calendar/daikin-calendar.js +2 -0
  126. package/dist/es/components/card-header/daikin-card-header.js +1 -1
  127. package/dist/es/components/carousel/daikin-carousel.js +7 -3
  128. package/dist/es/components/carousel-item/daikin-carousel-item.js +2 -2
  129. package/dist/es/components/chip/daikin-chip.d.ts +36 -0
  130. package/dist/es/components/chip/daikin-chip.js +107 -0
  131. package/dist/es/components/chip/index.d.ts +1 -0
  132. package/dist/es/components/chip/index.js +4 -0
  133. package/dist/es/components/combobox/daikin-combobox.d.ts +134 -0
  134. package/dist/es/components/combobox/daikin-combobox.js +605 -0
  135. package/dist/es/components/combobox/index.d.ts +1 -0
  136. package/dist/es/components/combobox/index.js +5 -0
  137. package/dist/es/components/date-picker/daikin-date-picker.d.ts +2 -1
  138. package/dist/es/components/date-picker/daikin-date-picker.js +32 -17
  139. package/dist/es/components/dropdown/daikin-dropdown.d.ts +4 -3
  140. package/dist/es/components/dropdown/daikin-dropdown.js +52 -37
  141. package/dist/es/components/icon/daikin-icon.d.ts +141 -9
  142. package/dist/es/components/icon/daikin-icon.js +118 -13
  143. package/dist/es/components/icon/icons.json.js +4 -0
  144. package/dist/es/components/icon-button/daikin-icon-button.d.ts +8 -0
  145. package/dist/es/components/icon-button/daikin-icon-button.js +12 -2
  146. package/dist/es/components/index.d.ts +5 -0
  147. package/dist/es/components/index.js +22 -1
  148. package/dist/es/components/input-group/daikin-input-group.d.ts +40 -13
  149. package/dist/es/components/input-group/daikin-input-group.js +1 -1
  150. package/dist/es/components/list-item/daikin-list-item.js +2 -2
  151. package/dist/es/components/modal-header/daikin-modal-header.js +1 -1
  152. package/dist/es/components/progress-bar/daikin-progress-bar.js +3 -3
  153. package/dist/es/components/select/daikin-select.js +6 -1
  154. package/dist/es/components/tab/daikin-tab.js +1 -0
  155. package/dist/es/components/table/daikin-table.d.ts +67 -34
  156. package/dist/es/components/table/daikin-table.js +33 -12
  157. package/dist/es/components/table-header-cell/daikin-table-header-cell.d.ts +7 -0
  158. package/dist/es/components/table-header-cell/daikin-table-header-cell.js +31 -6
  159. package/dist/es/components/text-field/daikin-text-field.d.ts +32 -3
  160. package/dist/es/components/text-field/daikin-text-field.js +191 -56
  161. package/dist/es/components/text-field/number-utils.d.ts +26 -0
  162. package/dist/es/components/text-field/number-utils.js +61 -0
  163. package/dist/es/components/text-masked-field/daikin-text-masked-field.d.ts +136 -0
  164. package/dist/es/components/text-masked-field/daikin-text-masked-field.js +313 -0
  165. package/dist/es/components/text-masked-field/index.d.ts +1 -0
  166. package/dist/es/components/text-masked-field/index.js +4 -0
  167. package/dist/es/components/time-picker/daikin-time-picker.d.ts +165 -0
  168. package/dist/es/components/time-picker/daikin-time-picker.js +578 -0
  169. package/dist/es/components/time-picker/index.d.ts +1 -0
  170. package/dist/es/components/time-picker/index.js +14 -0
  171. package/dist/es/components/toast-notification-manager/daikin-toast-notification-manager.d.ts +1 -1
  172. package/dist/es/components/tooltip/daikin-tooltip.d.ts +8 -1
  173. package/dist/es/components/tooltip/daikin-tooltip.js +12 -2
  174. package/dist/es/controllers/floating-ui-auto-update.d.ts +12 -0
  175. package/dist/es/controllers/floating-ui-auto-update.js +22 -4
  176. package/dist/es/icon-registry.d.ts +120 -0
  177. package/dist/es/icon-registry.js +170 -0
  178. package/dist/es/index.d.ts +1 -0
  179. package/dist/es/index.js +25 -1
  180. package/dist/es/tailwind.css.js +1 -1
  181. package/dist/es/utils/notification-common.d.ts +1 -1
  182. package/dist/es-dev/base/dds-element.js +1 -1
  183. package/dist/es-dev/components/accordion-item/daikin-accordion-item.js +1 -0
  184. package/dist/es-dev/components/avatar/daikin-avatar.js +1 -0
  185. package/dist/es-dev/components/calendar/daikin-calendar.js +2 -0
  186. package/dist/es-dev/components/card-header/daikin-card-header.js +1 -1
  187. package/dist/es-dev/components/carousel/daikin-carousel.js +7 -3
  188. package/dist/es-dev/components/carousel-item/daikin-carousel-item.js +2 -2
  189. package/dist/es-dev/components/chip/daikin-chip.d.ts +36 -0
  190. package/dist/es-dev/components/chip/daikin-chip.js +107 -0
  191. package/dist/es-dev/components/chip/index.d.ts +1 -0
  192. package/dist/es-dev/components/chip/index.js +4 -0
  193. package/dist/es-dev/components/combobox/daikin-combobox.d.ts +134 -0
  194. package/dist/es-dev/components/combobox/daikin-combobox.js +605 -0
  195. package/dist/es-dev/components/combobox/index.d.ts +1 -0
  196. package/dist/es-dev/components/combobox/index.js +5 -0
  197. package/dist/es-dev/components/date-picker/daikin-date-picker.d.ts +2 -1
  198. package/dist/es-dev/components/date-picker/daikin-date-picker.js +32 -17
  199. package/dist/es-dev/components/dropdown/daikin-dropdown.d.ts +4 -3
  200. package/dist/es-dev/components/dropdown/daikin-dropdown.js +52 -37
  201. package/dist/es-dev/components/icon/daikin-icon.d.ts +141 -9
  202. package/dist/es-dev/components/icon/daikin-icon.js +142 -17
  203. package/dist/es-dev/components/icon/icons.json.js +4 -0
  204. package/dist/es-dev/components/icon-button/daikin-icon-button.d.ts +8 -0
  205. package/dist/es-dev/components/icon-button/daikin-icon-button.js +12 -2
  206. package/dist/es-dev/components/index.d.ts +5 -0
  207. package/dist/es-dev/components/index.js +22 -1
  208. package/dist/es-dev/components/input-group/daikin-input-group.d.ts +40 -13
  209. package/dist/es-dev/components/input-group/daikin-input-group.js +1 -1
  210. package/dist/es-dev/components/list-item/daikin-list-item.js +2 -2
  211. package/dist/es-dev/components/modal-header/daikin-modal-header.js +1 -1
  212. package/dist/es-dev/components/progress-bar/daikin-progress-bar.js +3 -3
  213. package/dist/es-dev/components/select/daikin-select.js +6 -1
  214. package/dist/es-dev/components/tab/daikin-tab.js +1 -0
  215. package/dist/es-dev/components/table/daikin-table.d.ts +67 -34
  216. package/dist/es-dev/components/table/daikin-table.js +36 -15
  217. package/dist/es-dev/components/table-header-cell/daikin-table-header-cell.d.ts +7 -0
  218. package/dist/es-dev/components/table-header-cell/daikin-table-header-cell.js +31 -6
  219. package/dist/es-dev/components/text-field/daikin-text-field.d.ts +32 -3
  220. package/dist/es-dev/components/text-field/daikin-text-field.js +191 -56
  221. package/dist/es-dev/components/text-field/number-utils.d.ts +26 -0
  222. package/dist/es-dev/components/text-field/number-utils.js +64 -0
  223. package/dist/es-dev/components/text-masked-field/daikin-text-masked-field.d.ts +136 -0
  224. package/dist/es-dev/components/text-masked-field/daikin-text-masked-field.js +313 -0
  225. package/dist/es-dev/components/text-masked-field/index.d.ts +1 -0
  226. package/dist/es-dev/components/text-masked-field/index.js +4 -0
  227. package/dist/es-dev/components/time-picker/daikin-time-picker.d.ts +165 -0
  228. package/dist/es-dev/components/time-picker/daikin-time-picker.js +590 -0
  229. package/dist/es-dev/components/time-picker/index.d.ts +1 -0
  230. package/dist/es-dev/components/time-picker/index.js +14 -0
  231. package/dist/es-dev/components/toast-notification-manager/daikin-toast-notification-manager.d.ts +1 -1
  232. package/dist/es-dev/components/tooltip/daikin-tooltip.d.ts +8 -1
  233. package/dist/es-dev/components/tooltip/daikin-tooltip.js +12 -2
  234. package/dist/es-dev/controllers/floating-ui-auto-update.d.ts +12 -0
  235. package/dist/es-dev/controllers/floating-ui-auto-update.js +22 -4
  236. package/dist/es-dev/icon-registry.d.ts +120 -0
  237. package/dist/es-dev/icon-registry.js +170 -0
  238. package/dist/es-dev/index.d.ts +1 -0
  239. package/dist/es-dev/index.js +25 -1
  240. package/dist/es-dev/tailwind.css.js +1 -1
  241. package/dist/es-dev/utils/notification-common.d.ts +1 -1
  242. package/icons/number-minus.svg +5 -0
  243. package/icons/number-plus.svg +5 -0
  244. package/package.json +14 -4
  245. package/icons/dropdown-chevron-down.svg +0 -3
@@ -0,0 +1,134 @@
1
+ import { PropertyValues } from 'lit';
2
+ import { DDSFormElement } from "../../base/dds-form-element.cjs";
3
+ import { DaikinInputGroup } from "../input-group/index.cjs";
4
+ /**
5
+ * Interface for combobox option object
6
+ */
7
+ export interface ComboboxOption {
8
+ label: string;
9
+ disabled?: boolean;
10
+ value?: string;
11
+ }
12
+ /**
13
+ * Type for combobox items - can be string or object array
14
+ */
15
+ export type ComboboxItem = string | ComboboxOption;
16
+ export declare function defaultFilterFn(items: readonly ComboboxItem[], value: string): readonly ComboboxItem[];
17
+ /**
18
+ * A combobox component.
19
+ * Unlike a dropdown component, a combobox primarily functions as a text field (using a native <input> tag) that can accept custom user input. The dropdown list serves as a helpful aid to expedite the user's input process.
20
+ *
21
+ * @fires change - A custom event emitted when a user selects a combobox item or inputs a custom value.
22
+ * @fires input - A retargeted event of a [input event](https://developer.mozilla.org/en-US/docs/Web/API/Element/input_event). Triggered when the user types in the input field, clicks clear button, or selects from dropdown options.
23
+ *
24
+ * @example
25
+ *
26
+ * ```js
27
+ * import "@daikin-oss/design-system-web-components/components/combobox/index.js";
28
+ * ```
29
+ *
30
+ * ```html
31
+ * <daikin-combobox></daikin-combobox>
32
+ *
33
+ * <script>
34
+ * const combobox = document.querySelector("daikin-combobox");
35
+ * combobox.items = [ "Apple", "Banana", "Cherry" ];
36
+ * </script>
37
+ * ```
38
+ */
39
+ export declare class DaikinCombobox extends DDSFormElement {
40
+ static readonly styles: import('lit').CSSResult;
41
+ /**
42
+ * Placeholder text of the combobox.
43
+ */
44
+ placeholder: string | null;
45
+ /**
46
+ * Whether the combobox is disabled.
47
+ */
48
+ disabled: boolean;
49
+ /**
50
+ * Whether the combobox is required.
51
+ */
52
+ required: boolean;
53
+ /**
54
+ * Whether the combobox is in an error state.
55
+ */
56
+ error: boolean;
57
+ /**
58
+ * Whether the combobox menu is opened.
59
+ */
60
+ open: boolean;
61
+ /**
62
+ * An array of items for the combobox dropdown. Can be:
63
+ * - Array of strings: ['Option 1', 'Option 2']
64
+ * - Array of objects: [{label: 'Option 1', disabled: false}, {label: 'Option 2', disabled: true}]
65
+ */
66
+ items: ComboboxItem[];
67
+ private _viewItems;
68
+ private _currentFocusItemIndex;
69
+ /**
70
+ * This property accepts a function that allows users to customize the logic for matching options in the dropdown.
71
+ * Default implementation performs case-insensitive substring matching.
72
+ */
73
+ filter: typeof defaultFilterFn;
74
+ private _input;
75
+ /**
76
+ * The label text used as the value of aria-label.
77
+ * Set automatically by `reflectInputGroup` method.
78
+ */
79
+ private _label;
80
+ private _autoUpdateController;
81
+ private _clickOutsideController;
82
+ private _onClickOutside;
83
+ private _moveFocusByKeydown;
84
+ private _updateFormValue;
85
+ private _closePopup;
86
+ private _handleFocusOut;
87
+ private _handleClick;
88
+ private _handleArrowClick;
89
+ private _handleClickItem;
90
+ private _handleKeyDown;
91
+ /**
92
+ * Handle `floating-ready` event dispatched by `FloatingUIAutoUpdateController`.
93
+ * The combobox menu opens after the Floating UI has finished calculating its position, so there is a slight time lag between the change to `this.open` and the actual display.
94
+ * Since the focus cannot be moved until the element is displayed on the screen, the focus is moved to the item after receiving the completion of the Floating UI position calculation here.
95
+ */
96
+ private _handleFloatingReady;
97
+ /**
98
+ * Handles the clear button click event.
99
+ * Clears the current value and triggers form value update.
100
+ */
101
+ private _handleClearClick;
102
+ /**
103
+ * Synchronizes the display items based on the current filter state.
104
+ * @param type - Whether to show all items or apply filtering
105
+ */
106
+ private _synchronizeShowItems;
107
+ /**
108
+ * Handles input events from the combobox input field.
109
+ * Updates the value, applies filtering, and opens dropdown if matches are found.
110
+ */
111
+ private _handleInput;
112
+ /**
113
+ * Handles change events from the combobox input field.
114
+ * Dispatches a custom change event when the input value changes and loses focus.
115
+ */
116
+ private _handleChange;
117
+ render(): import('lit-html').TemplateResult<1>;
118
+ /**
119
+ * Focuses on the input element.
120
+ * @param options focus options
121
+ */
122
+ focus(options?: FocusOptions): void;
123
+ protected updated(changedProperties: PropertyValues<this>): void;
124
+ /**
125
+ * This method is used by `daikin-input-group` to reflect it's attributes to this component.
126
+ * @private
127
+ */
128
+ reflectInputGroup(inputGroup: DaikinInputGroup): void;
129
+ }
130
+ declare global {
131
+ interface HTMLElementTagNameMap {
132
+ "daikin-combobox": DaikinCombobox;
133
+ }
134
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const daikinCombobox = require("./daikin-combobox.cjs");
4
+ Object.defineProperty(exports, "DaikinCombobox", {
5
+ enumerable: true,
6
+ get: () => daikinCombobox.DaikinCombobox
7
+ });
8
+ exports.defaultFilterFn = daikinCombobox.defaultFilterFn;
@@ -0,0 +1 @@
1
+ export * from "./daikin-combobox.cjs";
@@ -4,6 +4,7 @@ const dom = require("@floating-ui/dom");
4
4
  const classVarianceAuthority = require("class-variance-authority");
5
5
  const lit = require("lit");
6
6
  const decorators_js = require("lit/decorators.js");
7
+ const guard_js = require("lit/directives/guard.js");
7
8
  const ifDefined_js = require("lit/directives/if-defined.js");
8
9
  const ref_js = require("lit/directives/ref.js");
9
10
  const ddsFormElement = require("../../base/dds-form-element.cjs");
@@ -261,12 +262,6 @@ exports.DaikinDatePicker = class DaikinDatePicker extends ddsFormElement.DDSForm
261
262
  get _open() {
262
263
  return this.open && !this.disabled && !this.readonly;
263
264
  }
264
- _openCalendar() {
265
- if (this.disabled || this.readonly) {
266
- return;
267
- }
268
- this.open = true;
269
- }
270
265
  _emitSelect() {
271
266
  this.dispatchEvent(
272
267
  new Event("select", {
@@ -410,6 +405,22 @@ exports.DaikinDatePicker = class DaikinDatePicker extends ddsFormElement.DDSForm
410
405
  }
411
406
  this._emitSelect();
412
407
  }
408
+ _handlePointerUp() {
409
+ if (this.disabled || this.readonly) {
410
+ return;
411
+ }
412
+ this.open = !this.open;
413
+ }
414
+ _handleCalendarKeyDown(event) {
415
+ if (event.key === "Enter" || event.key === " ") {
416
+ event.preventDefault();
417
+ event.stopPropagation();
418
+ if (this.disabled || this.readonly) {
419
+ return;
420
+ }
421
+ this.open = !this.open;
422
+ }
423
+ }
413
424
  _handleToggle(event) {
414
425
  if (reDispatch.reDispatch(this, event, new ToggleEvent("toggle", event))) {
415
426
  this.open = event.newState === "open";
@@ -498,7 +509,8 @@ exports.DaikinDatePicker = class DaikinDatePicker extends ddsFormElement.DDSForm
498
509
  variant="ghost"
499
510
  button-aria-label="Open the date picker"
500
511
  ?disabled=${this.disabled}
501
- @click=${this._openCalendar}
512
+ @pointerup=${this._handlePointerUp}
513
+ @keydown=${this._handleCalendarKeyDown}
502
514
  >
503
515
  <span class=${calendarCommon.cvaIconButton({ intent: "calender" })}></span>
504
516
  </daikin-icon-button>
@@ -512,7 +524,7 @@ exports.DaikinDatePicker = class DaikinDatePicker extends ddsFormElement.DDSForm
512
524
  default-value=${ifDefined_js.ifDefined(
513
525
  this._defaultValue ? calendarCommon.formatDateForProperty(this._defaultValue) : void 0
514
526
  )}
515
- popover
527
+ popover="auto"
516
528
  class="absolute left-[--floating-x,0] top-[--floating-y,0]"
517
529
  @toggle=${this._handleToggle}
518
530
  @select=${this._handleSelect}
@@ -520,14 +532,17 @@ exports.DaikinDatePicker = class DaikinDatePicker extends ddsFormElement.DDSForm
520
532
  ${this._autoUpdateController.refFloating()}
521
533
  >
522
534
  </daikin-calendar>
523
- ${// Activate auto update only when the calendar is open.
524
- // TODO: refactor here with CSS Anchor Positioning instead of using floating-ui
525
- this._autoUpdateController.directive(
526
- {
527
- placement: "bottom-start",
528
- middleware: [dom.offset({ mainAxis: 0 })]
529
- },
530
- this._open
535
+ ${// Activate auto update only when the tooltip is open.
536
+ // TODO(DDS-1226): refactor here with CSS Anchor Positioning instead of using floating-ui
537
+ guard_js.guard(
538
+ [this.open],
539
+ () => this._autoUpdateController.directive(
540
+ {
541
+ placement: "bottom-start",
542
+ middleware: [dom.offset({ mainAxis: 0 }), dom.flip(), dom.shift()]
543
+ },
544
+ this.open
545
+ )
531
546
  )}`;
532
547
  }
533
548
  willUpdate(changedProperties) {
@@ -76,7 +76,6 @@ export declare class DaikinDatePicker extends DDSFormElement {
76
76
  private get _defaultValue();
77
77
  private get _viewDate();
78
78
  private get _open();
79
- private _openCalendar;
80
79
  private _emitSelect;
81
80
  private _handleFocusIn;
82
81
  private _handleFocusOut;
@@ -85,6 +84,8 @@ export declare class DaikinDatePicker extends DDSFormElement {
85
84
  private _handleKeyDown;
86
85
  private _handleBeforeInput;
87
86
  private _handleSelect;
87
+ private _handlePointerUp;
88
+ private _handleCalendarKeyDown;
88
89
  private _handleToggle;
89
90
  private _updateValue;
90
91
  private _updateInputSelection;
@@ -10,7 +10,6 @@ require("../../base/dds-element.cjs");
10
10
  const decorators = require("../../base/decorators.cjs");
11
11
  require("../../base/define.cjs");
12
12
  const ddsFormElement = require("../../base/dds-form-element.cjs");
13
- const clickOutside = require("../../controllers/click-outside.cjs");
14
13
  const floatingUiAutoUpdate = require("../../controllers/floating-ui-auto-update.cjs");
15
14
  const tailwind = require("../../tailwind.css.cjs");
16
15
  const isSimpleKey = require("../../utils/is-simple-key.cjs");
@@ -53,7 +52,7 @@ const cvaButton = classVarianceAuthority.cva(
53
52
  "enabled:outline-[--color-base]",
54
53
  "disabled:text-ddt-color-common-disabled",
55
54
  "disabled:outline-ddt-color-common-disabled",
56
- "after:i-daikin-dropdown-chevron-down",
55
+ "after:i-daikin-chevron-down",
57
56
  "after:size-6",
58
57
  "after:flex-none",
59
58
  "after:ml-auto",
@@ -117,10 +116,7 @@ exports.DaikinDropdown = class DaikinDropdown extends ddsFormElement.DDSFormElem
117
116
  this._label = null;
118
117
  this._initialUpdateCompleted = false;
119
118
  this._autoUpdateController = new floatingUiAutoUpdate.FloatingUIAutoUpdateController(this);
120
- this._clickOutsideController = new clickOutside.ClickOutsideController(
121
- this,
122
- this._onClickOutside
123
- );
119
+ this._willBeFocusedByPress = false;
124
120
  this._lastFocusedItem = null;
125
121
  this._dropdownRef = ref_js.createRef();
126
122
  }
@@ -133,9 +129,6 @@ exports.DaikinDropdown = class DaikinDropdown extends ddsFormElement.DDSFormElem
133
129
  }
134
130
  );
135
131
  }
136
- _onClickOutside() {
137
- this.open = false;
138
- }
139
132
  _searchItem(prefix) {
140
133
  const items = this._items.filter(
141
134
  (item) => {
@@ -163,8 +156,9 @@ exports.DaikinDropdown = class DaikinDropdown extends ddsFormElement.DDSFormElem
163
156
  return;
164
157
  }
165
158
  const items = this._items.filter(({ disabled }) => !disabled);
166
- const activeElement = document.activeElement;
167
- const focusedItemIndex = activeElement ? items.findIndex((item2) => item2.contains(activeElement)) : -1;
159
+ const focusedItemIndex = items.findIndex(
160
+ (item2) => item2.matches(":focus-within")
161
+ );
168
162
  if (focusedItemIndex === -1) {
169
163
  moveOffset = 1;
170
164
  }
@@ -195,9 +189,10 @@ exports.DaikinDropdown = class DaikinDropdown extends ddsFormElement.DDSFormElem
195
189
  _handleSelectOption(value) {
196
190
  this.value = value;
197
191
  this.selectedOptions = this.multiple ? this.selectedOptions.includes(value) ? this.selectedOptions.filter((option) => option != value) : [...this.selectedOptions, value] : [value];
192
+ this.dispatchEvent(new Event("change"));
198
193
  }
199
194
  _handleFocusOut(event) {
200
- if (!event.relatedTarget) {
195
+ if (!event.relatedTarget && !this._willBeFocusedByPress) {
201
196
  if (!this.multiple && this._lastFocusedItem) {
202
197
  this._handleSelectOption(this._lastFocusedItem.value);
203
198
  }
@@ -219,12 +214,6 @@ exports.DaikinDropdown = class DaikinDropdown extends ddsFormElement.DDSFormElem
219
214
  this.value = "";
220
215
  }
221
216
  }
222
- _handleClick() {
223
- if (this.disabled) {
224
- return;
225
- }
226
- this.open = !this.open;
227
- }
228
217
  _handleKeyDown(event) {
229
218
  if (event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey) {
230
219
  if (event.key === "ArrowDown") {
@@ -286,6 +275,28 @@ exports.DaikinDropdown = class DaikinDropdown extends ddsFormElement.DDSFormElem
286
275
  }
287
276
  this._lastFocusedItem = target;
288
277
  }
278
+ _handlePointerDown() {
279
+ if (this.open) {
280
+ this._willBeFocusedByPress = true;
281
+ }
282
+ }
283
+ _handlePointerUp() {
284
+ if (this.disabled) {
285
+ return;
286
+ }
287
+ this._willBeFocusedByPress = false;
288
+ this.open = !this.open;
289
+ }
290
+ _handleButtonKeyDown(event) {
291
+ if (event.key === "Enter" || event.key === " ") {
292
+ event.preventDefault();
293
+ event.stopPropagation();
294
+ if (this.disabled) {
295
+ return;
296
+ }
297
+ this.open = !this.open;
298
+ }
299
+ }
289
300
  /**
290
301
  * Handle `floating-ready` event dispatched by `FloatingUIAutoUpdateController`.
291
302
  * The dropdown menu opens after the Floating UI has finished calculating its position, so there is a slight time lag between the change to `this.open` and the actual display.
@@ -294,7 +305,9 @@ exports.DaikinDropdown = class DaikinDropdown extends ddsFormElement.DDSFormElem
294
305
  _handleFloatingReady() {
295
306
  const items = this._items;
296
307
  const item = items.find((item2) => item2 === this._lastFocusedItem) ?? items.find((item2) => item2.value === this.value) ?? items.at(0);
297
- item == null ? void 0 : item.focus();
308
+ setTimeout(() => {
309
+ item == null ? void 0 : item.focus();
310
+ }, 100);
298
311
  }
299
312
  /**
300
313
  * Handle `select` event from `daikin-dropdown-item`.
@@ -304,13 +317,13 @@ exports.DaikinDropdown = class DaikinDropdown extends ddsFormElement.DDSFormElem
304
317
  if (!this.multiple) {
305
318
  this.open = false;
306
319
  }
307
- this.dispatchEvent(new Event("change"));
308
320
  }
309
321
  _handleSlotChange() {
310
322
  this._updateItemsSelectable();
311
323
  }
312
324
  render() {
313
- return lit.html`<div class="w-full relative" @keydown=${this._handleKeyDown}>
325
+ const fallbackLabel = this.open && !this.disabled ? "Close dropdown" : this.selectedOptions.length ? `Selected: ${this._selectionLabels.join(", ")}` : "Open dropdown";
326
+ return lit.html`<div class="w-full" @keydown=${this._handleKeyDown}>
314
327
  <button
315
328
  ${ref_js.ref(this._dropdownRef)}
316
329
  type="button"
@@ -320,15 +333,15 @@ exports.DaikinDropdown = class DaikinDropdown extends ddsFormElement.DDSFormElem
320
333
  placeholder: !this.selectedOptions.length
321
334
  })}
322
335
  ?disabled=${this.disabled}
323
- role="combobox"
324
- aria-label=${ifDefined_js.ifDefined(this._label ?? void 0)}
336
+ aria-label=${this._label ?? fallbackLabel}
325
337
  aria-expanded=${this.open && !this.disabled}
326
338
  aria-disabled=${this.disabled}
327
339
  aria-controls="dropdown-items"
328
- aria-autocomplete="list"
329
340
  aria-required=${this.required}
330
341
  aria-haspopup="listbox"
331
- @click=${this._handleClick}
342
+ @pointerup=${this._handlePointerUp}
343
+ @pointerdown=${this._handlePointerDown}
344
+ @keydown=${this._handleButtonKeyDown}
332
345
  ${this._autoUpdateController.refReference()}
333
346
  >
334
347
  <span class="truncate">
@@ -337,19 +350,23 @@ exports.DaikinDropdown = class DaikinDropdown extends ddsFormElement.DDSFormElem
337
350
  </button>
338
351
  <div
339
352
  id="dropdown-items"
340
- popover
341
- class="floating-unready:hidden absolute left-[--floating-x,0] top-[--floating-y,0] min-w-[--floating-width] max-h-[12.5rem] border border-ddt-color-divider overflow-y-auto opacity-1 transition-[opacity] rounded max-w-min break-all"
342
- aria-label=${ifDefined_js.ifDefined(this._label ?? void 0)}
343
- role="listbox"
353
+ popover="manual"
354
+ class="flex flex-col overflow-hidden floating-unready:hidden absolute left-[--floating-x,0] top-[--floating-y,0] min-w-[--floating-width] max-h-[12.5rem] border border-ddt-color-divider opacity-1 transition-[opacity] rounded max-w-min"
344
355
  @floating-ready=${this._handleFloatingReady}
345
356
  ${this._autoUpdateController.refFloating()}
346
357
  >
347
- <slot
348
- @slotchange=${this._handleSlotChange}
349
- @select=${this._handleSelect}
350
- @focusin=${this._handleFocusIn}
351
- @focusout=${this._handleFocusOut}
352
- ></slot>
358
+ <div
359
+ class="flex-1 overflow-y-auto break-all"
360
+ aria-label=${ifDefined_js.ifDefined(this._label ?? void 0)}
361
+ role="listbox"
362
+ >
363
+ <slot
364
+ @slotchange=${this._handleSlotChange}
365
+ @select=${this._handleSelect}
366
+ @focusin=${this._handleFocusIn}
367
+ @focusout=${this._handleFocusOut}
368
+ ></slot>
369
+ </div>
353
370
  </div>
354
371
  ${// Activate auto update only when the dropdown is open.
355
372
  // TODO(DDS-1226): refactor here with CSS Anchor Positioning instead of using floating-ui
@@ -357,8 +374,6 @@ exports.DaikinDropdown = class DaikinDropdown extends ddsFormElement.DDSFormElem
357
374
  floatingPositionOptions,
358
375
  this.open && !this.disabled
359
376
  )}
360
- ${// Listen to click outside only when the dropdown is open.
361
- this._clickOutsideController.directive(this.open && !this.disabled)}
362
377
  </div>`;
363
378
  }
364
379
  /**
@@ -75,14 +75,13 @@ export declare class DaikinDropdown extends DDSFormElement {
75
75
  private get _selectionLabels();
76
76
  private _initialUpdateCompleted;
77
77
  private _autoUpdateController;
78
- private _clickOutsideController;
78
+ private _willBeFocusedByPress;
79
79
  /**
80
80
  * Last focused dropdown item.
81
81
  * The next time the dropdown opens, the focus will be moved to this element.
82
82
  */
83
83
  private _lastFocusedItem;
84
84
  private _dropdownRef;
85
- private _onClickOutside;
86
85
  private _searchItem;
87
86
  private _moveFocus;
88
87
  private _updateFormValue;
@@ -105,13 +104,15 @@ export declare class DaikinDropdown extends DDSFormElement {
105
104
  * If multiple selection is disabled, directly empty the selected options.
106
105
  */
107
106
  private _removeLastSelection;
108
- private _handleClick;
109
107
  private _handleKeyDown;
110
108
  private _handleKeyDownEscape;
111
109
  /**
112
110
  * Handle `focusin` event to remember last focused item.
113
111
  */
114
112
  private _handleFocusIn;
113
+ private _handlePointerDown;
114
+ private _handlePointerUp;
115
+ private _handleButtonKeyDown;
115
116
  /**
116
117
  * Handle `floating-ready` event dispatched by `FloatingUIAutoUpdateController`.
117
118
  * The dropdown menu opens after the Floating UI has finished calculating its position, so there is a slight time lag between the change to `this.open` and the actual display.