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