@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
@@ -9,9 +9,11 @@ export type HeaderType<T extends string = string> = {
9
9
  /**
10
10
  * The table component is a component that can display multiple data objects in a tabular format.
11
11
  *
12
- * It is modeled on the HTML `<table>` element. However, unlike a normal `<table>` element, this component does not require its child elements to have cells. Instead, it can be made to function as a table by giving the properties `headers` and `rows` appropriate arrays.
12
+ * It is modeled on the HTML `<table>` element. However, unlike a normal `<table>` element, this component generates table structure automatically from data. You must provide the `headers` and `rows` properties to define the table structure and content. You can also customize table cell content by providing custom content in slots.
13
13
  *
14
- * If the contents of the table are plain text only, give them to the `rows` property. However, if you want to give contents other than text, such as buttons or images, you will need to prepare a element with the corresponding `slot` attribute. The value of this attribute must be structured as follows: ``slot=${`cell:${headers[i].key}:${rows[i].id}`}``
14
+ * By specifying the `rows` property, you can only display plain text content. If you need to display richer content within the row cells, such as an icon or a button, provide custom content using the cell slot pattern: ``slot=${`cell:${rows[j].id}:${headers[i].key}`}``
15
+ *
16
+ * By specifying the headers property, you can only display plain text, define text alignment and sorting buttons. If you need to display richer content within the header cells, such as an icon or a button, provide custom content using the cell slot pattern: ``slot=${`header:${headers[i].key}`}``
15
17
  *
16
18
  * The table provides two functions: checkboxes and sorting, and you can select the functions you need.
17
19
  *
@@ -34,19 +36,8 @@ export type HeaderType<T extends string = string> = {
34
36
  * ```
35
37
  *
36
38
  * ```html
37
- * <daikin-table
38
- * .headers="[
39
- * { key: 'name', label: 'Name', sortable: true },
40
- * { key: 'season', label: 'Season', sortable: true },
41
- * { key: 'price', label: 'Price', alignment: 'right', sortable: false },
42
- * ]"
43
- * .rows="[
44
- * { id: '1', name: 'Apple', season: 'Autumn', price: '$2' },
45
- * { id: '2', name: 'Peach', season: 'Summer', price: '$4' },
46
- * { id: '3', name: 'Orange', season: 'Winter', price: '$1' },
47
- * { id: '4', name: 'Strawberry', season: 'Spring', price: '$4' },
48
- * ]"
49
- * >
39
+ * <daikin-table>
40
+ * <!-- By using a slot, you can add a subtitle below the content in the name column for each row. -->
50
41
  * <daikin-table-cell slot="cell:1:name">
51
42
  * Apple
52
43
  * <span slot="subtitle">This is a autumn fruit.</span>
@@ -64,6 +55,22 @@ export type HeaderType<T extends string = string> = {
64
55
  * <span slot="subtitle">This is a spring fruit.</span>
65
56
  * </daikin-table-cell>
66
57
  * </daikin-table>
58
+ *
59
+ * <script>
60
+ * // Set up the table data
61
+ * const tableElement = document.querySelector('daikin-table');
62
+ * tableElement.headers = [
63
+ * { key: 'name', label: 'Name', sortable: true },
64
+ * { key: 'season', label: 'Season', sortable: true },
65
+ * { key: 'price', label: 'Price', alignment: 'right', sortable: false },
66
+ * ];
67
+ * tableElement.rows = [
68
+ * { id: '1', name: 'Apple', season: 'Autumn', price: '$2' },
69
+ * { id: '2', name: 'Peach', season: 'Summer', price: '$4' },
70
+ * { id: '3', name: 'Orange', season: 'Winter', price: '$1' },
71
+ * { id: '4', name: 'Strawberry', season: 'Spring', price: '$4' },
72
+ * ];
73
+ * </script>
67
74
  * ```
68
75
  */
69
76
  export declare class DaikinTable<T extends {
@@ -72,51 +79,75 @@ export declare class DaikinTable<T extends {
72
79
  static readonly styles: import('lit').CSSResult;
73
80
  /**
74
81
  * Headers of the table.
75
- * - key: The value of `key` corresponds to the key, excluding the id of rows. As a whole array, the value of `key` must be unique. Also, only use alphanumeric characters, `$`, and `_` in the `key`.
76
- * - label: This is the text that is displayed in the header cells.
77
- * - alignment: The direction in which the characters are aligned can be omitted. If it is omitted, the characters will be aligned to the left.
78
- * - sortable: If sortable (`sortable = true`), this specifies whether sorting is performed on this column.
82
+ * An array of header configuration objects that define the table columns.
83
+ * Each object must have a unique `key` (used to match row data) and a `label` (displayed text).
84
+ *
85
+ * - key: The `key` value corresponds to the property name in the row data (excluding `id`). All `key` values must be unique within the headers array. Use only alphanumeric characters, `$`, and `_` in the `key`.
86
+ * - label: The text displayed in the header cells.
87
+ * - alignment: The text alignment direction. Defaults to left alignment if omitted.
88
+ * - sortable: When `sortable = true`, enables sorting for this column.
89
+ *
90
+ * @example
91
+ * [
92
+ * { key: 'name', label: 'Name', sortable: true },
93
+ * { key: 'price', label: 'Price', alignment: 'right', sortable: false },
94
+ * ]
79
95
  */
80
96
  headers: readonly HeaderType<Extract<keyof T, string>>[];
81
97
  /**
82
98
  * Rows of the table.
83
- * An array that uses the element `key` in the column as the key and stores the corresponding value.
84
- * As a whole array, the value of `id` should be unique.
99
+ * An array of data objects where each object represents a table row.
100
+ * Each object must have a unique `id` property and properties that match the `key` values defined in `headers`.
101
+ *
102
+ * @example
103
+ * [
104
+ * { id: '1', name: 'Apple', price: '$2' },
105
+ * { id: '2', name: 'Orange', price: '$1' },
106
+ * ]
85
107
  */
86
108
  rows: T[];
87
109
  /**
88
- * Whether or not to enable selection of rows.
89
- * If `true`, a checkbox will be displayed to the left of each row.
110
+ * Whether to enable row selection.
111
+ * When `true`, a checkbox will be displayed to the left of each row.
90
112
  */
91
113
  selectable: boolean;
92
114
  /**
93
- * Whether or not to enable sorting of the rows.
94
- * If `true`, a button for sorting will be displayed to the right of each header cell text.
115
+ * Whether to enable row sorting.
116
+ * When `true`, a sort button will be displayed to the right of each sortable header cell.
95
117
  */
96
118
  sortable: boolean;
97
119
  /**
98
- * An array of `id`s for the `rows` that have been checked.
120
+ * An array of `id` values for the selected rows.
99
121
  */
100
122
  selection: string[];
101
- /**
102
- * Sort order of the table.
103
- */
104
- order: "asc" | "desc" | null;
105
123
  /**
106
124
  * The `key` of the currently sorted column.
125
+ * Used with the `order` property to determine which column is sorted and in which direction.
126
+ *
127
+ * For example, if `sort = "name"` and `order = "asc"`, the table will be sorted by the "name" column in ascending order.
107
128
  */
108
129
  sort: keyof T | null;
109
130
  /**
110
- * Specify this when you want to customize the sort function.
111
- * The function must be ascending, and the return value must be `0`, `1` or `-1`.
131
+ * The sort order of the table.
132
+ * Used with the `sort` property.
133
+ *
134
+ * - "asc": ascending order
135
+ * - "desc": descending order
136
+ *
137
+ * For example, if `sort = "price"` and `order = "desc"`, the table will be sorted by the "price" column in descending order.
138
+ */
139
+ order: "asc" | "desc" | null;
140
+ /**
141
+ * Custom sort function for table columns.
142
+ * The function should return a comparison result for ascending order: `0`, `1`, or `-1`.
112
143
  */
113
144
  sortFunction: {
114
145
  [key in keyof T]?: (a: T, b: T, key: key) => number;
115
146
  } | ((a: T, b: T, key: keyof T) => number) | false | null;
116
147
  private _bulkRowsCheckState;
117
148
  /**
118
- * The rows displayed in the current table.
119
- * Currently this is a sorted `rows`, but pagination may be considered in the future.
149
+ * The rows currently displayed in the table.
150
+ * This is a sorted version of `rows`. Pagination may be added in the future.
120
151
  */
121
152
  private _currentView;
122
153
  private _currentTouchHoverRowId;
@@ -130,6 +161,8 @@ export declare class DaikinTable<T extends {
130
161
  private _handleTouchStart;
131
162
  private _handleTouchEnd;
132
163
  private _updateHeaderCheckboxState;
164
+ private _reflectSlotProperties;
165
+ private _handleSlotChange;
133
166
  render(): import('lit-html').TemplateResult<1>;
134
167
  protected willUpdate(changedProperties: PropertyValues<this>): void;
135
168
  protected updated(changedProperties: PropertyValues<this>): void;
@@ -46,11 +46,31 @@ const cvaHeaderCell = classVarianceAuthority.cva(
46
46
  "focus-visible:-outline-offset-2",
47
47
  "focus-visible:outline-ddt-color-common-border-focus",
48
48
  "after:flex-none",
49
- "after:size-6",
50
- "after:i-daikin-sort"
49
+ "after:size-6"
51
50
  ]
51
+ },
52
+ order: {
53
+ asc: [],
54
+ desc: []
52
55
  }
53
- }
56
+ },
57
+ compoundVariants: [
58
+ {
59
+ sortable: true,
60
+ order: null,
61
+ class: ["after:i-daikin-sort"]
62
+ },
63
+ {
64
+ sortable: true,
65
+ order: "asc",
66
+ class: ["after:i-daikin-chevron-up"]
67
+ },
68
+ {
69
+ sortable: true,
70
+ order: "desc",
71
+ class: ["after:i-daikin-chevron-up", "after:rotate-180"]
72
+ }
73
+ ]
54
74
  }
55
75
  );
56
76
  exports.DaikinTableHeaderCell = class DaikinTableHeaderCell extends ddsElement.DDSElement {
@@ -58,14 +78,16 @@ exports.DaikinTableHeaderCell = class DaikinTableHeaderCell extends ddsElement.D
58
78
  super(...arguments);
59
79
  this.alignment = "left";
60
80
  this.sortable = false;
81
+ this.order = null;
61
82
  }
62
83
  render() {
63
84
  const headerCellCN = cvaHeaderCell({
64
85
  alignment: this.alignment,
65
- sortable: this.sortable
86
+ sortable: this.sortable,
87
+ order: this.order === "asc" || this.order === "desc" ? this.order : null
66
88
  });
67
- const content = lit.html`<slot name="left-icon" class="icon-size-6"></slot>
68
- <slot></slot>`;
89
+ const content = lit.html`<slot name="left-icon" class="icon-size-6"></slot
90
+ ><slot></slot>`;
69
91
  return this.sortable ? lit.html`<button
70
92
  type="button"
71
93
  class=${headerCellCN}
@@ -90,6 +112,9 @@ __decorateClass([
90
112
  __decorateClass([
91
113
  decorators_js.property({ type: Boolean, reflect: true })
92
114
  ], exports.DaikinTableHeaderCell.prototype, "sortable", 2);
115
+ __decorateClass([
116
+ decorators_js.property({ type: String, reflect: true })
117
+ ], exports.DaikinTableHeaderCell.prototype, "order", 2);
93
118
  exports.DaikinTableHeaderCell = __decorateClass([
94
119
  decorators.ddsElement("daikin-table-header-cell")
95
120
  ], exports.DaikinTableHeaderCell);
@@ -3,6 +3,7 @@ import { MergeVariantProps } from "../../type-utils.cjs";
3
3
  declare const cvaHeaderCell: (props?: ({
4
4
  alignment?: "center" | "right" | "left" | null | undefined;
5
5
  sortable?: boolean | null | undefined;
6
+ order?: "desc" | "asc" | null | undefined;
6
7
  } & import('class-variance-authority/types').ClassProp) | undefined) => string;
7
8
  type TableHeaderCellVariantProps = MergeVariantProps<typeof cvaHeaderCell>;
8
9
  /**
@@ -44,6 +45,12 @@ export declare class DaikinTableHeaderCell extends DDSElement {
44
45
  * It also makes the component emit the `change-sort` event when clicked.
45
46
  */
46
47
  sortable: boolean;
48
+ /**
49
+ * The current sort order of the column.
50
+ * Can be "asc", "desc", or null if not sorted.
51
+ * Controlled by `daikin-table`.
52
+ */
53
+ order: TableHeaderCellVariantProps["order"] | null;
47
54
  render(): import('lit-html').TemplateResult<1>;
48
55
  }
49
56
  declare global {
@@ -9,7 +9,9 @@ const decorators = require("../../base/decorators.cjs");
9
9
  require("../../base/define.cjs");
10
10
  const ddsFormElement = require("../../base/dds-form-element.cjs");
11
11
  const tailwind = require("../../tailwind.css.cjs");
12
+ const isSimpleKey = require("../../utils/is-simple-key.cjs");
12
13
  require("../icon-button/daikin-icon-button.cjs");
14
+ const numberUtils = require("./number-utils.cjs");
13
15
  var __defProp = Object.defineProperty;
14
16
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
15
17
  var __decorateClass = (decorators2, target, key, kind) => {
@@ -26,6 +28,8 @@ const cvaInput = classVarianceAuthority.cva(
26
28
  "items-center",
27
29
  "w-full",
28
30
  "h-full",
31
+ "pl-[--pl,1rem]",
32
+ "pr-[--pr,1rem]",
29
33
  "bg-ddt-color-common-background-default",
30
34
  "relative",
31
35
  "rounded",
@@ -64,21 +68,38 @@ const cvaInput = classVarianceAuthority.cva(
64
68
  true: ["enabled:var-color-ddt-color-common-danger-default/color-base"]
65
69
  },
66
70
  leftIcon: {
67
- false: ["pl-4"],
68
- true: ["pl-11"]
71
+ false: [],
72
+ true: []
69
73
  },
70
74
  rightIcon: {
71
- false: ["pr-4"],
72
- true: ["pr-11"]
75
+ false: [],
76
+ true: []
73
77
  },
74
78
  type: {
75
79
  text: [],
76
- password: [],
80
+ number: ["[--pr:5.5rem]"],
81
+ password: ["[--pr:2.75rem]"],
77
82
  email: [],
78
83
  tel: [],
79
- search: ["[&::-webkit-search-cancel-button]:appearance-none"]
84
+ search: [
85
+ "[&::-webkit-search-cancel-button]:appearance-none",
86
+ "[--pl:2.75rem]",
87
+ "[--pr:2.75rem]"
88
+ ]
80
89
  }
81
- }
90
+ },
91
+ compoundVariants: [
92
+ {
93
+ type: ["text", "email", "tel", "number", "password"],
94
+ leftIcon: true,
95
+ class: ["[--pl:2.75rem]"]
96
+ },
97
+ {
98
+ type: ["text", "email", "tel"],
99
+ rightIcon: true,
100
+ class: ["[--pr:2.75rem]"]
101
+ }
102
+ ]
82
103
  }
83
104
  );
84
105
  const cvaIcon = classVarianceAuthority.cva(
@@ -115,6 +136,9 @@ exports.DaikinTextField = class DaikinTextField extends ddsFormElement.DDSFormEl
115
136
  this.error = false;
116
137
  this.minlength = null;
117
138
  this.maxlength = null;
139
+ this.step = null;
140
+ this.min = null;
141
+ this.max = null;
118
142
  this.pattern = null;
119
143
  this.showPassword = false;
120
144
  this._label = null;
@@ -139,26 +163,140 @@ exports.DaikinTextField = class DaikinTextField extends ddsFormElement.DDSFormEl
139
163
  }
140
164
  _handleInput(event) {
141
165
  this.value = event.target.value;
142
- this.setFormValue(this.value);
143
166
  }
144
167
  _handleClearClick() {
145
168
  this.value = "";
169
+ this.dispatchEvent(
170
+ new Event("input", {
171
+ bubbles: true,
172
+ composed: true
173
+ })
174
+ );
175
+ this.dispatchEvent(
176
+ new Event("change", {
177
+ bubbles: true
178
+ })
179
+ );
180
+ }
181
+ _handleKeyDown(event) {
182
+ if (this.type === "number") {
183
+ if (isSimpleKey.isSimpleKeyEvent(event) && event.key.length === 1) {
184
+ const { value, selectionStart, selectionEnd } = event.target;
185
+ const selectionText = value.substring(
186
+ selectionStart ?? 0,
187
+ selectionEnd ?? 0
188
+ );
189
+ if (/^[0-9]$/.test(event.key)) {
190
+ return;
191
+ }
192
+ if (event.key === "-") {
193
+ if ((!value.includes("-") || selectionText.includes("-")) && selectionStart === 0) {
194
+ return;
195
+ }
196
+ }
197
+ if (event.key === ".") {
198
+ if (!value.includes(".") || selectionText.includes(".")) {
199
+ return;
200
+ }
201
+ }
202
+ event.preventDefault();
203
+ return;
204
+ }
205
+ const direction = {
206
+ ArrowUp: 1,
207
+ ArrowDown: -1
208
+ }[event.key];
209
+ if (direction != null) {
210
+ event.preventDefault();
211
+ this._updateNumberValue(direction);
212
+ }
213
+ }
214
+ }
215
+ _updateNumberValue(sign) {
216
+ const newValue = numberUtils.updateNumberValue(this.value || "0", sign, {
217
+ step: this.step,
218
+ min: this.min,
219
+ max: this.max
220
+ });
221
+ if (newValue === this.value) {
222
+ return;
223
+ }
224
+ this.value = newValue;
225
+ this.dispatchEvent(
226
+ new Event("input", {
227
+ bubbles: true,
228
+ composed: true
229
+ })
230
+ );
231
+ this.dispatchEvent(
232
+ new Event("change", {
233
+ bubbles: true
234
+ })
235
+ );
146
236
  }
147
237
  _createIcon() {
238
+ const leftIconSlot = lit.html`<span
239
+ class=${cvaIcon({
240
+ icon: "left",
241
+ disabled: this.disabled
242
+ })}
243
+ >
244
+ <slot
245
+ name="left-icon"
246
+ class="icon-size-6"
247
+ @slotchange=${this._handleSlotChange}
248
+ ></slot>
249
+ </span>`;
250
+ const rightIconSlot = lit.html`<span
251
+ class=${cvaIcon({
252
+ icon: "right",
253
+ disabled: this.disabled
254
+ })}
255
+ >
256
+ <slot
257
+ name="right-icon"
258
+ class="icon-size-6"
259
+ @slotchange=${this._handleSlotChange}
260
+ ></slot>
261
+ </span>`;
148
262
  switch (this.type) {
263
+ case "number":
264
+ return lit.html`${leftIconSlot}
265
+ <span class="inline-flex items-center gap-1 absolute right-2">
266
+ <daikin-icon-button
267
+ color="neutral"
268
+ variant="ghost"
269
+ ?disabled=${this.disabled}
270
+ button-aria-label="Decrease"
271
+ tabindex="-1"
272
+ @click=${() => this._updateNumberValue(-1)}
273
+ >
274
+ <span class="i-daikin-number-minus icon-size-6"></span>
275
+ </daikin-icon-button>
276
+ <daikin-icon-button
277
+ color="neutral"
278
+ variant="ghost"
279
+ ?disabled=${this.disabled}
280
+ button-aria-label="Increase"
281
+ tabindex="-1"
282
+ @click=${() => this._updateNumberValue(1)}
283
+ >
284
+ <span class="i-daikin-number-plus icon-size-6"></span>
285
+ </daikin-icon-button>
286
+ </span>`;
149
287
  case "password":
150
- return lit.html`<daikin-icon-button
151
- color="neutral"
152
- variant="ghost"
153
- ?disabled=${this.disabled}
154
- button-aria-label=${this.showPassword ? "Hide password" : "Show password"}
155
- class="absolute right-3"
156
- @click=${this._handleShowPasswordClick}
157
- >
158
- <span
159
- class=${cvaShowPasswordIcon({ showPassword: this.showPassword })}
160
- ></span>
161
- </daikin-icon-button>`;
288
+ return lit.html`${leftIconSlot}<daikin-icon-button
289
+ color="neutral"
290
+ variant="ghost"
291
+ ?disabled=${this.disabled}
292
+ button-aria-label=${this.showPassword ? "Hide password" : "Show password"}
293
+ class="absolute right-3"
294
+ @click=${this._handleShowPasswordClick}
295
+ >
296
+ <span
297
+ class=${cvaShowPasswordIcon({ showPassword: this.showPassword })}
298
+ ></span>
299
+ </daikin-icon-button>`;
162
300
  case "search":
163
301
  return lit.html`<span
164
302
  class=${cvaIcon({
@@ -179,30 +317,7 @@ exports.DaikinTextField = class DaikinTextField extends ddsFormElement.DDSFormEl
179
317
  <span class="i-daikin-close"></span>
180
318
  </daikin-icon-button>` : lit.nothing}`;
181
319
  default:
182
- return lit.html`<span
183
- class=${cvaIcon({
184
- icon: "left",
185
- disabled: this.disabled
186
- })}
187
- >
188
- <slot
189
- name="left-icon"
190
- class="icon-size-6"
191
- @slotchange=${this._handleSlotChange}
192
- ></slot>
193
- </span>
194
- <span
195
- class=${cvaIcon({
196
- icon: "right",
197
- disabled: this.disabled
198
- })}
199
- >
200
- <slot
201
- name="right-icon"
202
- class="icon-size-6"
203
- @slotchange=${this._handleSlotChange}
204
- ></slot>
205
- </span>`;
320
+ return lit.html`${leftIconSlot}${rightIconSlot}`;
206
321
  }
207
322
  }
208
323
  _handleShowPasswordClick() {
@@ -211,38 +326,49 @@ exports.DaikinTextField = class DaikinTextField extends ddsFormElement.DDSFormEl
211
326
  }
212
327
  render() {
213
328
  const error = !this.disabled && this.error;
214
- const hasLeftSlot = this._hasLeftSlot;
215
- const hasRightSlot = this._hasRightSlot;
216
- const [leftIcon, rightIcon] = {
217
- password: [false, true],
218
- search: [true, !!this.value.length],
219
- email: [hasLeftSlot, hasRightSlot],
220
- tel: [hasLeftSlot, hasRightSlot],
221
- text: [hasLeftSlot, hasRightSlot]
222
- }[this.type];
223
- const type = this.type === "password" && this.showPassword ? "text" : this.type;
329
+ const type = this.type === "password" && this.showPassword ? "text" : this.type === "number" ? "text" : this.type;
330
+ const role = this.type === "number" ? "spinbutton" : void 0;
331
+ const inputMode = this.type === "number" ? "numeric" : void 0;
224
332
  return lit.html`<input
225
333
  class=${cvaInput({
226
334
  error,
227
- leftIcon,
228
- rightIcon,
335
+ leftIcon: this._hasLeftSlot,
336
+ rightIcon: this._hasRightSlot,
229
337
  type: this.type
230
338
  })}
339
+ role=${ifDefined_js.ifDefined(role)}
231
340
  type=${type}
341
+ inputmode=${ifDefined_js.ifDefined(inputMode)}
232
342
  placeholder=${ifDefined_js.ifDefined(this.placeholder ?? void 0)}
233
343
  name=${ifDefined_js.ifDefined(this.name)}
234
344
  minlength=${ifDefined_js.ifDefined(this.minlength ?? void 0)}
235
345
  maxlength=${ifDefined_js.ifDefined(this.maxlength ?? void 0)}
346
+ step=${ifDefined_js.ifDefined(
347
+ this.type === "number" && this.step != null ? (
348
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
349
+ this.step
350
+ ) : void 0
351
+ )}
236
352
  pattern=${ifDefined_js.ifDefined(this.pattern ?? void 0)}
237
353
  autocomplete=${// eslint-disable-next-line @typescript-eslint/no-explicit-any -- workaround lit-analyzer checking
238
354
  ifDefined_js.ifDefined(this.autocomplete)}
239
355
  aria-label=${ifDefined_js.ifDefined(this._label ?? void 0)}
356
+ aria-valuemin=${ifDefined_js.ifDefined(
357
+ this.type === "number" && this.min != null ? this.min : void 0
358
+ )}
359
+ aria-valuemax=${ifDefined_js.ifDefined(
360
+ this.type === "number" && this.max != null ? this.max : void 0
361
+ )}
362
+ aria-valuenow=${ifDefined_js.ifDefined(
363
+ this.type === "number" ? this.value : void 0
364
+ )}
240
365
  .value=${this.value}
241
366
  ?disabled=${this.disabled}
242
367
  ?readonly=${this.readonly}
243
368
  ?required=${this.required}
244
369
  @change=${this._handleChange}
245
370
  @input=${this._handleInput}
371
+ @keydown=${this._handleKeyDown}
246
372
  />
247
373
  ${this._createIcon()}`;
248
374
  }
@@ -306,6 +432,15 @@ __decorateClass([
306
432
  __decorateClass([
307
433
  decorators_js.property({ type: Number, reflect: true })
308
434
  ], exports.DaikinTextField.prototype, "maxlength", 2);
435
+ __decorateClass([
436
+ decorators_js.property({ type: String, reflect: true })
437
+ ], exports.DaikinTextField.prototype, "step", 2);
438
+ __decorateClass([
439
+ decorators_js.property({ type: String, reflect: true })
440
+ ], exports.DaikinTextField.prototype, "min", 2);
441
+ __decorateClass([
442
+ decorators_js.property({ type: String, reflect: true })
443
+ ], exports.DaikinTextField.prototype, "max", 2);
309
444
  __decorateClass([
310
445
  decorators_js.property({ type: String, reflect: true })
311
446
  ], exports.DaikinTextField.prototype, "pattern", 2);
@@ -15,10 +15,18 @@ import { DaikinInputGroup } from "../input-group/index.cjs";
15
15
  * @fires toggle - Emitted when the user toggles the password mask.
16
16
  *
17
17
  * @slot left-icon - Specify the icon you want to use on the left. You can also use something other than `daikin-icon`.
18
- * Ignored if the type is "search" since the default icon is used.
18
+ * Available only if the type is one of:
19
+ * - `"text"`
20
+ * - `"number"`
21
+ * - `"password"`
22
+ * - `"email"`
23
+ * - `"tel"`
19
24
  *
20
25
  * @slot right-icon - Specify the icon you want to use on the right. You can also use something other than `daikin-icon`.
21
- * Ignored if the type is "search" since the default icon is used.
26
+ * Available only if the type is one of:
27
+ * - `"text"`
28
+ * - `"email"`
29
+ * - `"tel"`
22
30
  *
23
31
  * @example
24
32
  *
@@ -35,8 +43,15 @@ export declare class DaikinTextField extends DDSFormElement {
35
43
  static readonly styles: import('lit').CSSResult;
36
44
  /**
37
45
  * Type of field.
46
+ *
47
+ * - `"text"`: Basic text input with optional left and right icon slots.
48
+ * - `"number"`: Numeric input with increment/decrement buttons, arrow key support, and optional left icon slot.
49
+ * - `"password"`: Password input with show/hide toggle button to control mask of password and optional left icon slot.
50
+ * - `"email"`: Email input with optional left and right icon slots.
51
+ * - `"tel"`: Telephone input with optional left and right icon slots.
52
+ * - `"search"`: Search input with built-in search icon and clear button when value is present.
38
53
  */
39
- type: "text" | "password" | "email" | "tel" | "search";
54
+ type: "text" | "number" | "password" | "email" | "tel" | "search";
40
55
  /**
41
56
  * Placeholder text.
42
57
  */
@@ -69,6 +84,18 @@ export declare class DaikinTextField extends DDSFormElement {
69
84
  * Maximum length of value.
70
85
  */
71
86
  maxlength: number | null;
87
+ /**
88
+ * Interval between values. This is valid when `type="number"`.
89
+ */
90
+ step: string | null;
91
+ /**
92
+ * The minimum value. This is valid when `type="number"`.
93
+ */
94
+ min: string | null;
95
+ /**
96
+ * The maximum value. This is valid when `type="number"`.
97
+ */
98
+ max: string | null;
72
99
  /**
73
100
  * The pattern of value.
74
101
  */
@@ -92,6 +119,8 @@ export declare class DaikinTextField extends DDSFormElement {
92
119
  private _handleSlotChange;
93
120
  private _handleInput;
94
121
  private _handleClearClick;
122
+ private _handleKeyDown;
123
+ private _updateNumberValue;
95
124
  private _createIcon;
96
125
  private _handleShowPasswordClick;
97
126
  render(): TemplateResult<1>;