@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,605 @@
1
+ import { flip, offset, size } from "@floating-ui/dom";
2
+ import { cva } from "class-variance-authority";
3
+ import { unsafeCSS, css, nothing, html } from "lit";
4
+ import { property, state, query } from "lit/decorators.js";
5
+ import { ifDefined } from "lit/directives/if-defined.js";
6
+ import { repeat } from "lit/directives/repeat.js";
7
+ import "../../base/dds-element.js";
8
+ import { ddsElement } from "../../base/decorators.js";
9
+ import "../../base/define.js";
10
+ import { DDSFormElement } from "../../base/dds-form-element.js";
11
+ import { ClickOutsideController } from "../../controllers/click-outside.js";
12
+ import { FloatingUIAutoUpdateController } from "../../controllers/floating-ui-auto-update.js";
13
+ import tailwindStyles from "../../tailwind.css.js";
14
+ import { isSimpleKeyEvent } from "../../utils/is-simple-key.js";
15
+ var __defProp = Object.defineProperty;
16
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
17
+ var __decorateClass = (decorators, target, key, kind) => {
18
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
19
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
20
+ if (decorator = decorators[i])
21
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
22
+ if (kind && result) __defProp(target, key, result);
23
+ return result;
24
+ };
25
+ const cvaInput = cva(
26
+ [
27
+ "flex",
28
+ "justify-between",
29
+ "items-center",
30
+ "gap-2",
31
+ "w-full",
32
+ "h-full",
33
+ "min-h-12",
34
+ "bg-ddt-color-common-background-default",
35
+ "py-3",
36
+ "pl-4",
37
+ "pr-16",
38
+ "rounded",
39
+ "overflow-hidden",
40
+ "font-daikinSerif",
41
+ "text-left",
42
+ "leading-[130%]",
43
+ "relative",
44
+ "outline",
45
+ "outline-1",
46
+ "-outline-offset-1",
47
+ "whitespace-nowrap",
48
+ "text-ellipsis",
49
+ "focus-visible:outline-2",
50
+ "focus-visible:-outline-offset-2",
51
+ "enabled:outline-[--color-base]",
52
+ "disabled:text-ddt-color-common-disabled",
53
+ "disabled:outline-ddt-color-common-disabled",
54
+ "enabled:after:text-ddt-color-common-text-primary",
55
+ "disabled:after:text-ddt-color-common-disabled",
56
+ "enabled:hover:bg-ddt-color-common-surface-hover",
57
+ "enabled:active:bg-ddt-color-common-surface-press"
58
+ ],
59
+ {
60
+ variants: {
61
+ error: {
62
+ false: [
63
+ "var-color-ddt-color-common-neutral-default/color-base",
64
+ "hover:var-color-ddt-color-common-neutral-hover/color-base",
65
+ "focus-visible:var-color-ddt-color-common-border-focus/color-base"
66
+ ],
67
+ true: ["var-color-ddt-color-common-danger-default/color-base"]
68
+ },
69
+ placeholder: {
70
+ false: ["text-ddt-color-common-text-primary"],
71
+ true: ["text-ddt-color-common-text-secondary"]
72
+ }
73
+ }
74
+ }
75
+ );
76
+ const cvaOption = cva(
77
+ [
78
+ "flex",
79
+ "items-center",
80
+ "gap-1",
81
+ "size-full",
82
+ "min-h-12",
83
+ "p-3",
84
+ "font-daikinSerif",
85
+ "leading-[130%]",
86
+ "text-left",
87
+ "relative",
88
+ "data-[focus]:outline",
89
+ "data-[focus]:outline-2",
90
+ "data-[focus]:-outline-offset-2",
91
+ "data-[focus]:outline-ddt-color-common-border-focus"
92
+ ],
93
+ {
94
+ variants: {
95
+ selected: {
96
+ false: [
97
+ "var-color-ddt-color-common-background-default/color-primary",
98
+ "hover:var-color-ddt-color-common-surface-hover/color-primary",
99
+ "active:var-color-ddt-color-common-surface-press/color-primary"
100
+ ],
101
+ true: [
102
+ "var-color-ddt-color-common-surface-selected-default/color-primary",
103
+ "hover:var-color-ddt-color-common-surface-selected-hover/color-primary",
104
+ "active:var-color-ddt-color-common-surface-selected-press/color-primary",
105
+ "after:i-daikin-dropdown-check",
106
+ "after:size-6",
107
+ "after:flex-none",
108
+ "justify-between"
109
+ ]
110
+ },
111
+ disabled: {
112
+ false: [
113
+ "text-ddt-color-common-text-primary",
114
+ "bg-[--color-primary]",
115
+ "cursor-pointer"
116
+ ],
117
+ true: [
118
+ "text-ddt-color-common-disabled",
119
+ "bg-ddt-color-common-background-default"
120
+ ]
121
+ }
122
+ }
123
+ }
124
+ );
125
+ const cvaArrow = cva(
126
+ [
127
+ "i-daikin-chevron-down",
128
+ "size-6",
129
+ "flex-shrink-0",
130
+ "z-10",
131
+ "pointer-events-auto"
132
+ ],
133
+ {
134
+ variants: {
135
+ open: {
136
+ false: [],
137
+ true: ["scale-y-[-1]"]
138
+ },
139
+ disabled: {
140
+ false: ["cursor-pointer", "text-ddt-color-common-text-primary"],
141
+ true: ["text-ddt-color-common-disabled", "pointer-events-none"]
142
+ }
143
+ }
144
+ }
145
+ );
146
+ const floatingPositionOptions = {
147
+ placement: "bottom",
148
+ middleware: [
149
+ flip({ fallbackStrategy: "initialPlacement" }),
150
+ offset({ mainAxis: 0 }),
151
+ size({
152
+ apply({ rects, elements }) {
153
+ elements.floating.style.setProperty(
154
+ "--floating-width",
155
+ `${rects.reference.width}px`
156
+ );
157
+ }
158
+ })
159
+ ]
160
+ };
161
+ function getItemLabel(item) {
162
+ return typeof item === "string" ? item : item.label;
163
+ }
164
+ function getItemValue(item) {
165
+ if (typeof item === "string") {
166
+ return item;
167
+ }
168
+ return item.value ?? item.label;
169
+ }
170
+ function isItemDisabled(item) {
171
+ return typeof item === "string" ? false : item.disabled ?? false;
172
+ }
173
+ function defaultFilterFn(items, value) {
174
+ if (!value) {
175
+ return items;
176
+ }
177
+ const searchValue = value.toLowerCase();
178
+ return items.filter((item) => {
179
+ const label = getItemLabel(item);
180
+ return label.toLowerCase().includes(searchValue);
181
+ });
182
+ }
183
+ let DaikinCombobox = class extends DDSFormElement {
184
+ constructor() {
185
+ super(...arguments);
186
+ this.placeholder = null;
187
+ this.disabled = false;
188
+ this.required = false;
189
+ this.error = false;
190
+ this.open = false;
191
+ this.items = [];
192
+ this._viewItems = [];
193
+ this._currentFocusItemIndex = null;
194
+ this.filter = defaultFilterFn;
195
+ this._label = null;
196
+ this._autoUpdateController = new FloatingUIAutoUpdateController(this);
197
+ this._clickOutsideController = new ClickOutsideController(
198
+ this,
199
+ this._onClickOutside
200
+ );
201
+ }
202
+ _onClickOutside() {
203
+ this._closePopup();
204
+ }
205
+ _moveFocusByKeydown(moveOffset) {
206
+ if (!this.open) {
207
+ this._autoUpdateController.setTriggerContext({
208
+ trigger: "keyboard"
209
+ });
210
+ this._synchronizeShowItems();
211
+ this.open = true;
212
+ return;
213
+ }
214
+ const enabledItemsWithIndices = this._viewItems.map((item, index) => ({ item, originalIndex: index })).filter(({ item }) => !isItemDisabled(item));
215
+ if (!enabledItemsWithIndices.length) {
216
+ return;
217
+ }
218
+ const focusedItemIndex = this._currentFocusItemIndex;
219
+ if (focusedItemIndex === null) {
220
+ const targetItem = moveOffset > 0 ? enabledItemsWithIndices[0] : enabledItemsWithIndices[enabledItemsWithIndices.length - 1];
221
+ this._currentFocusItemIndex = targetItem.originalIndex;
222
+ return;
223
+ }
224
+ const currentEnabledIndex = enabledItemsWithIndices.findIndex(
225
+ ({ originalIndex }) => originalIndex === focusedItemIndex
226
+ );
227
+ if (currentEnabledIndex === -1) {
228
+ this._currentFocusItemIndex = enabledItemsWithIndices[0].originalIndex;
229
+ return;
230
+ }
231
+ let nextEnabledIndex;
232
+ if (Math.abs(moveOffset) === 1) {
233
+ nextEnabledIndex = (currentEnabledIndex + moveOffset + enabledItemsWithIndices.length) % enabledItemsWithIndices.length;
234
+ } else {
235
+ nextEnabledIndex = Math.min(
236
+ Math.max(currentEnabledIndex + moveOffset, 0),
237
+ enabledItemsWithIndices.length - 1
238
+ );
239
+ }
240
+ this._currentFocusItemIndex = enabledItemsWithIndices[nextEnabledIndex].originalIndex;
241
+ }
242
+ _updateFormValue() {
243
+ this.setFormValue(this.value);
244
+ }
245
+ _closePopup() {
246
+ this.open = false;
247
+ this._currentFocusItemIndex = null;
248
+ }
249
+ _handleFocusOut(event) {
250
+ if (!event.relatedTarget) {
251
+ this._closePopup();
252
+ }
253
+ }
254
+ _handleClick() {
255
+ if (this.disabled) {
256
+ return;
257
+ }
258
+ this._autoUpdateController.setTriggerContext({
259
+ trigger: "mouse"
260
+ });
261
+ this._synchronizeShowItems();
262
+ this.open = !this.open;
263
+ if (!this.open) {
264
+ this._currentFocusItemIndex = null;
265
+ }
266
+ }
267
+ _handleArrowClick(event) {
268
+ event.preventDefault();
269
+ event.stopPropagation();
270
+ event.stopImmediatePropagation();
271
+ this._handleClick();
272
+ }
273
+ _handleClickItem(item) {
274
+ const value = getItemValue(item);
275
+ this._handleClick();
276
+ this.value = value;
277
+ this.dispatchEvent(
278
+ new Event("input", {
279
+ bubbles: true,
280
+ composed: true
281
+ })
282
+ );
283
+ this.dispatchEvent(
284
+ new Event("change", {
285
+ bubbles: true
286
+ })
287
+ );
288
+ }
289
+ _handleKeyDown(event) {
290
+ if (event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey) {
291
+ if (event.key === "ArrowDown") {
292
+ event.preventDefault();
293
+ this._autoUpdateController.setTriggerContext({
294
+ trigger: "mouse"
295
+ });
296
+ this._synchronizeShowItems();
297
+ this.open = true;
298
+ } else if (event.key === "ArrowUp") {
299
+ event.preventDefault();
300
+ this._closePopup();
301
+ }
302
+ return;
303
+ }
304
+ if (event.key === "Enter" && this.open) {
305
+ const focusedItemIndex = this._currentFocusItemIndex;
306
+ if (focusedItemIndex !== null) {
307
+ const item = this._viewItems[focusedItemIndex];
308
+ if (item) {
309
+ this._handleClickItem(item);
310
+ }
311
+ }
312
+ }
313
+ if (!isSimpleKeyEvent(event)) {
314
+ return;
315
+ }
316
+ const operation = {
317
+ ArrowDown: "down",
318
+ ArrowUp: "up",
319
+ PageDown: "pageDown",
320
+ PageUp: "pageUp",
321
+ Escape: "close"
322
+ }[event.key];
323
+ switch (operation) {
324
+ case "down":
325
+ case "up":
326
+ event.preventDefault();
327
+ this._moveFocusByKeydown(operation === "up" ? -1 : 1);
328
+ break;
329
+ case "pageDown":
330
+ case "pageUp":
331
+ event.preventDefault();
332
+ this._moveFocusByKeydown(operation === "pageUp" ? -10 : 10);
333
+ break;
334
+ case "close":
335
+ event.preventDefault();
336
+ if (this.open) {
337
+ this._closePopup();
338
+ } else {
339
+ this._handleClearClick();
340
+ }
341
+ break;
342
+ }
343
+ }
344
+ /**
345
+ * Handle `floating-ready` event dispatched by `FloatingUIAutoUpdateController`.
346
+ * 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.
347
+ * 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.
348
+ */
349
+ _handleFloatingReady(event) {
350
+ const detail = event.detail;
351
+ const eventType = detail == null ? void 0 : detail.trigger;
352
+ if (eventType === "mouse") {
353
+ return;
354
+ }
355
+ const firstEnabledIndex = this._viewItems.findIndex(
356
+ (item) => !isItemDisabled(item)
357
+ );
358
+ if (firstEnabledIndex === -1) {
359
+ return;
360
+ }
361
+ if (this._currentFocusItemIndex !== null) {
362
+ return;
363
+ } else {
364
+ this._currentFocusItemIndex = firstEnabledIndex;
365
+ }
366
+ this._autoUpdateController.clearTriggerContext();
367
+ }
368
+ /**
369
+ * Handles the clear button click event.
370
+ * Clears the current value and triggers form value update.
371
+ */
372
+ _handleClearClick() {
373
+ this.value = "";
374
+ this.dispatchEvent(
375
+ new Event("input", {
376
+ bubbles: true,
377
+ composed: true
378
+ })
379
+ );
380
+ this.dispatchEvent(
381
+ new Event("change", {
382
+ bubbles: true
383
+ })
384
+ );
385
+ }
386
+ /**
387
+ * Synchronizes the display items based on the current filter state.
388
+ * @param type - Whether to show all items or apply filtering
389
+ */
390
+ _synchronizeShowItems(type = "all") {
391
+ this._viewItems = type === "all" ? this.items : this.filter(this.items, this.value);
392
+ }
393
+ /**
394
+ * Handles input events from the combobox input field.
395
+ * Updates the value, applies filtering, and opens dropdown if matches are found.
396
+ */
397
+ _handleInput(event) {
398
+ this.value = event.target.value;
399
+ this._synchronizeShowItems("filtered");
400
+ if (this._viewItems.length > 0) {
401
+ this.open = true;
402
+ }
403
+ }
404
+ /**
405
+ * Handles change events from the combobox input field.
406
+ * Dispatches a custom change event when the input value changes and loses focus.
407
+ */
408
+ _handleChange() {
409
+ this.dispatchEvent(
410
+ new Event("change", {
411
+ bubbles: true
412
+ })
413
+ );
414
+ }
415
+ render() {
416
+ return html`<div class="w-full relative" @keydown=${this._handleKeyDown}>
417
+ <span class="sr-only" aria-live="polite"
418
+ >${`${this._viewItems.length} available results`}</span
419
+ >
420
+ <div class="w-full relative">
421
+ <input
422
+ class=${cvaInput({
423
+ error: this.error,
424
+ placeholder: !this.value || this.value.length === 0
425
+ })}
426
+ role="combobox"
427
+ placeholder=${ifDefined(this.placeholder ?? void 0)}
428
+ name=${ifDefined(this.name)}
429
+ .value=${this.value}
430
+ ?disabled=${this.disabled}
431
+ aria-label=${ifDefined(this._label ?? void 0)}
432
+ aria-expanded=${this.open && !this.disabled}
433
+ aria-disabled=${this.disabled}
434
+ aria-controls="combobox-items"
435
+ aria-autocomplete="list"
436
+ aria-required=${this.required}
437
+ aria-haspopup="listbox"
438
+ aria-activedescendant=${ifDefined(
439
+ this._currentFocusItemIndex !== null ? `combobox-item-${this._currentFocusItemIndex}` : void 0
440
+ )}
441
+ @input=${this._handleInput}
442
+ @change=${this._handleChange}
443
+ @click=${this._handleClick}
444
+ @focusout=${this._handleFocusOut}
445
+ ${this._autoUpdateController.refReference()}
446
+ />
447
+ <div
448
+ class="absolute right-3 top-1/2 -translate-y-1/2 flex items-center gap-1"
449
+ >
450
+ ${!!this.value && !!this.value.length ? html`<daikin-icon-button
451
+ class="size-6 flex-shrink-0"
452
+ color="neutral"
453
+ variant="ghost"
454
+ ?disabled=${this.disabled}
455
+ button-aria-label="Clear"
456
+ icon="close"
457
+ @click=${this._handleClearClick}
458
+ @focusout=${this._handleFocusOut}
459
+ >
460
+ <span class="i-daikin-close"></span>
461
+ </daikin-icon-button>` : nothing}
462
+ <span
463
+ class=${cvaArrow({ open: this.open, disabled: this.disabled })}
464
+ button-aria-label=${this.open ? "Close" : "Open"}
465
+ @mousedown=${this._handleArrowClick}
466
+ @keydown=${this._handleKeyDown}
467
+ >
468
+ </span>
469
+ </div>
470
+ </div>
471
+ <div
472
+ id="combobox-items"
473
+ popover="manual"
474
+ class="flex flex-col overflow-hidden rounded border border-ddt-color-divider floating-unready:hidden absolute left-[--floating-x,0] top-[--floating-y,0] min-w-[--floating-width] max-h-[12.5rem] opacity-1 transition-[opacity] max-w-min"
475
+ @floating-ready=${this._handleFloatingReady}
476
+ ${this._autoUpdateController.refFloating()}
477
+ >
478
+ <div
479
+ class="flex-1 overflow-y-auto break-all"
480
+ aria-label=${ifDefined(this._label ?? void 0)}
481
+ role="listbox"
482
+ >
483
+ ${repeat(this._viewItems, (item, index) => {
484
+ const label = getItemLabel(item);
485
+ const value = getItemValue(item);
486
+ const disabled = isItemDisabled(item);
487
+ return html`<button
488
+ type="button"
489
+ class=${cvaOption({
490
+ selected: value === this.value,
491
+ disabled
492
+ })}
493
+ id=${`combobox-item-${index}`}
494
+ data-value=${value}
495
+ role="option"
496
+ aria-selected=${value === this.value}
497
+ tabindex="-1"
498
+ ?disabled=${disabled || this.disabled}
499
+ ?data-focus=${this._currentFocusItemIndex === index}
500
+ @click=${() => this._handleClickItem(item)}
501
+ >
502
+ ${label}
503
+ </button>`;
504
+ })}
505
+ </div>
506
+ </div>
507
+ ${// Activate auto update only when the combobox is open.
508
+ // TODO(DDS-1226): refactor here with CSS Anchor Positioning instead of using floating-ui
509
+ this._autoUpdateController.directive(
510
+ floatingPositionOptions,
511
+ this.open && !this.disabled
512
+ )}
513
+ ${// Listen to click outside only when the combobox is open.
514
+ this._clickOutsideController.directive(this.open && !this.disabled)}
515
+ </div>`;
516
+ }
517
+ /**
518
+ * Focuses on the input element.
519
+ * @param options focus options
520
+ */
521
+ focus(options) {
522
+ var _a;
523
+ (_a = this._input) == null ? void 0 : _a.focus(options);
524
+ }
525
+ updated(changedProperties) {
526
+ var _a;
527
+ if (changedProperties.has("items")) {
528
+ this._synchronizeShowItems();
529
+ }
530
+ if (changedProperties.has("value")) {
531
+ this._updateFormValue();
532
+ }
533
+ if (changedProperties.has("open") || changedProperties.has("disabled")) {
534
+ (_a = this._autoUpdateController.floatingElement) == null ? void 0 : _a.togglePopover(
535
+ this.open && !this.disabled
536
+ );
537
+ if (changedProperties.get("open") && !this.open && !this.disabled) {
538
+ this.focus();
539
+ }
540
+ }
541
+ }
542
+ /**
543
+ * This method is used by `daikin-input-group` to reflect it's attributes to this component.
544
+ * @private
545
+ */
546
+ reflectInputGroup(inputGroup) {
547
+ const isError = !inputGroup.disabled && !!inputGroup.error;
548
+ this.disabled = !!inputGroup.disabled;
549
+ this.required = !!inputGroup.required;
550
+ this.error = isError;
551
+ this._label = inputGroup.label;
552
+ }
553
+ };
554
+ DaikinCombobox.styles = css`
555
+ ${unsafeCSS(tailwindStyles)}
556
+
557
+ :host {
558
+ display: block;
559
+ width: 100%;
560
+ }
561
+
562
+ ::slotted {
563
+ width: 100%;
564
+ }
565
+ `;
566
+ __decorateClass([
567
+ property({ type: String, reflect: true })
568
+ ], DaikinCombobox.prototype, "placeholder", 2);
569
+ __decorateClass([
570
+ property({ type: Boolean, reflect: true })
571
+ ], DaikinCombobox.prototype, "disabled", 2);
572
+ __decorateClass([
573
+ property({ type: Boolean, reflect: true })
574
+ ], DaikinCombobox.prototype, "required", 2);
575
+ __decorateClass([
576
+ property({ type: Boolean, reflect: true })
577
+ ], DaikinCombobox.prototype, "error", 2);
578
+ __decorateClass([
579
+ property({ type: Boolean, reflect: true })
580
+ ], DaikinCombobox.prototype, "open", 2);
581
+ __decorateClass([
582
+ property({ type: Array, attribute: false })
583
+ ], DaikinCombobox.prototype, "items", 2);
584
+ __decorateClass([
585
+ state()
586
+ ], DaikinCombobox.prototype, "_viewItems", 2);
587
+ __decorateClass([
588
+ state()
589
+ ], DaikinCombobox.prototype, "_currentFocusItemIndex", 2);
590
+ __decorateClass([
591
+ property({ attribute: false })
592
+ ], DaikinCombobox.prototype, "filter", 2);
593
+ __decorateClass([
594
+ query("input")
595
+ ], DaikinCombobox.prototype, "_input", 2);
596
+ __decorateClass([
597
+ state()
598
+ ], DaikinCombobox.prototype, "_label", 2);
599
+ DaikinCombobox = __decorateClass([
600
+ ddsElement("daikin-combobox")
601
+ ], DaikinCombobox);
602
+ export {
603
+ DaikinCombobox,
604
+ defaultFilterFn
605
+ };
@@ -0,0 +1 @@
1
+ export * from "./daikin-combobox.js";
@@ -0,0 +1,5 @@
1
+ import { DaikinCombobox, defaultFilterFn } from "./daikin-combobox.js";
2
+ export {
3
+ DaikinCombobox,
4
+ defaultFilterFn
5
+ };
@@ -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;