@operato/data-grist 2.0.0-alpha.7 → 2.0.0-alpha.80

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 (267) hide show
  1. package/CHANGELOG.md +297 -0
  2. package/demo/data-grist-test.html +25 -14
  3. package/demo/index.html +25 -14
  4. package/demo/report-test.html +13 -2
  5. package/dist/src/accumulator/accumulator.js +4 -4
  6. package/dist/src/accumulator/accumulator.js.map +1 -1
  7. package/dist/src/configure/rows-option-builder.js +2 -1
  8. package/dist/src/configure/rows-option-builder.js.map +1 -1
  9. package/dist/src/configure/zero-config.js +1 -0
  10. package/dist/src/configure/zero-config.js.map +1 -1
  11. package/dist/src/data-card/data-card-gutter-menu.d.ts +1 -1
  12. package/dist/src/data-card/data-card-gutter-menu.js +5 -5
  13. package/dist/src/data-card/data-card-gutter-menu.js.map +1 -1
  14. package/dist/src/data-card/data-card.d.ts +2 -2
  15. package/dist/src/data-card/data-card.js +3 -3
  16. package/dist/src/data-card/data-card.js.map +1 -1
  17. package/dist/src/data-card/event-handlers/record-card-click-handler.js +1 -1
  18. package/dist/src/data-card/event-handlers/record-card-click-handler.js.map +1 -1
  19. package/dist/src/data-card/record-card.d.ts +2 -2
  20. package/dist/src/data-card/record-card.js +26 -26
  21. package/dist/src/data-card/record-card.js.map +1 -1
  22. package/dist/src/data-grid/data-grid-accum-field.js +8 -3
  23. package/dist/src/data-grid/data-grid-accum-field.js.map +1 -1
  24. package/dist/src/data-grid/data-grid-body.d.ts +3 -3
  25. package/dist/src/data-grid/data-grid-body.js +9 -4
  26. package/dist/src/data-grid/data-grid-body.js.map +1 -1
  27. package/dist/src/data-grid/data-grid-field.d.ts +1 -1
  28. package/dist/src/data-grid/data-grid-field.js +2 -2
  29. package/dist/src/data-grid/data-grid-field.js.map +1 -1
  30. package/dist/src/data-grid/data-grid-footer.d.ts +2 -2
  31. package/dist/src/data-grid/data-grid-footer.js +17 -9
  32. package/dist/src/data-grid/data-grid-footer.js.map +1 -1
  33. package/dist/src/data-grid/data-grid-header.d.ts +1 -1
  34. package/dist/src/data-grid/data-grid-header.js +37 -37
  35. package/dist/src/data-grid/data-grid-header.js.map +1 -1
  36. package/dist/src/data-grid/data-grid.d.ts +1 -1
  37. package/dist/src/data-grid/data-grid.js +1 -1
  38. package/dist/src/data-grid/data-grid.js.map +1 -1
  39. package/dist/src/data-grist.d.ts +226 -4
  40. package/dist/src/data-grist.js +217 -25
  41. package/dist/src/data-grist.js.map +1 -1
  42. package/dist/src/data-list/data-list-gutter.js +12 -0
  43. package/dist/src/data-list/data-list-gutter.js.map +1 -1
  44. package/dist/src/data-list/data-list.d.ts +2 -2
  45. package/dist/src/data-list/data-list.js +3 -3
  46. package/dist/src/data-list/data-list.js.map +1 -1
  47. package/dist/src/data-list/event-handlers/record-partial-click-handler.js +1 -1
  48. package/dist/src/data-list/event-handlers/record-partial-click-handler.js.map +1 -1
  49. package/dist/src/data-list/record-partial.d.ts +2 -2
  50. package/dist/src/data-list/record-partial.js +20 -18
  51. package/dist/src/data-list/record-partial.js.map +1 -1
  52. package/dist/src/data-manipulator.d.ts +6 -6
  53. package/dist/src/data-manipulator.js +44 -29
  54. package/dist/src/data-manipulator.js.map +1 -1
  55. package/dist/src/data-report/data-report-body.d.ts +1 -1
  56. package/dist/src/data-report/data-report-component.d.ts +1 -1
  57. package/dist/src/data-report.d.ts +1 -1
  58. package/dist/src/editors/ox-grist-editor-checkbox.d.ts +3 -2
  59. package/dist/src/editors/ox-grist-editor-checkbox.js +9 -2
  60. package/dist/src/editors/ox-grist-editor-checkbox.js.map +1 -1
  61. package/dist/src/editors/ox-grist-editor-color.d.ts +1 -1
  62. package/dist/src/editors/ox-grist-editor-date.d.ts +1 -1
  63. package/dist/src/editors/ox-grist-editor-datetime.d.ts +2 -2
  64. package/dist/src/editors/ox-grist-editor-datetime.js +1 -2
  65. package/dist/src/editors/ox-grist-editor-datetime.js.map +1 -1
  66. package/dist/src/editors/ox-grist-editor-email.d.ts +1 -1
  67. package/dist/src/editors/ox-grist-editor-file.d.ts +3 -2
  68. package/dist/src/editors/ox-grist-editor-file.js +8 -2
  69. package/dist/src/editors/ox-grist-editor-file.js.map +1 -1
  70. package/dist/src/editors/ox-grist-editor-image.d.ts +2 -2
  71. package/dist/src/editors/ox-grist-editor-image.js +8 -8
  72. package/dist/src/editors/ox-grist-editor-image.js.map +1 -1
  73. package/dist/src/editors/ox-grist-editor-month.d.ts +1 -1
  74. package/dist/src/editors/ox-grist-editor-multiple-select.d.ts +1 -1
  75. package/dist/src/editors/ox-grist-editor-number.d.ts +3 -2
  76. package/dist/src/editors/ox-grist-editor-number.js +10 -9
  77. package/dist/src/editors/ox-grist-editor-number.js.map +1 -1
  78. package/dist/src/editors/ox-grist-editor-password.d.ts +1 -1
  79. package/dist/src/editors/ox-grist-editor-select.d.ts +1 -1
  80. package/dist/src/editors/ox-grist-editor-tel.d.ts +1 -1
  81. package/dist/src/editors/ox-grist-editor-text.d.ts +2 -1
  82. package/dist/src/editors/ox-grist-editor-text.js +3 -0
  83. package/dist/src/editors/ox-grist-editor-text.js.map +1 -1
  84. package/dist/src/editors/ox-grist-editor-textarea.d.ts +2 -1
  85. package/dist/src/editors/ox-grist-editor-textarea.js +3 -0
  86. package/dist/src/editors/ox-grist-editor-textarea.js.map +1 -1
  87. package/dist/src/editors/ox-grist-editor-time.d.ts +1 -1
  88. package/dist/src/editors/ox-grist-editor-tree.d.ts +1 -1
  89. package/dist/src/editors/ox-grist-editor-week.d.ts +1 -1
  90. package/dist/src/editors/ox-grist-editor.d.ts +4 -4
  91. package/dist/src/editors/ox-grist-editor.js +14 -12
  92. package/dist/src/editors/ox-grist-editor.js.map +1 -1
  93. package/dist/src/editors/ox-input-tree.d.ts +1 -1
  94. package/dist/src/empty-note.d.ts +2 -2
  95. package/dist/src/empty-note.js +3 -3
  96. package/dist/src/empty-note.js.map +1 -1
  97. package/dist/src/filters/filter-range-date.js +12 -1
  98. package/dist/src/filters/filter-range-date.js.map +1 -1
  99. package/dist/src/filters/filters-form.d.ts +1 -0
  100. package/dist/src/filters/filters-form.js +41 -23
  101. package/dist/src/filters/filters-form.js.map +1 -1
  102. package/dist/src/gutters/gutter-button.d.ts +1 -1
  103. package/dist/src/gutters/gutter-button.js +3 -3
  104. package/dist/src/gutters/gutter-button.js.map +1 -1
  105. package/dist/src/gutters/gutter-dirty.d.ts +1 -1
  106. package/dist/src/gutters/gutter-dirty.js +5 -5
  107. package/dist/src/gutters/gutter-dirty.js.map +1 -1
  108. package/dist/src/handlers/contextmenu-tree-mutation.js +5 -23
  109. package/dist/src/handlers/contextmenu-tree-mutation.js.map +1 -1
  110. package/dist/src/index.d.ts +0 -1
  111. package/dist/src/index.js +0 -1
  112. package/dist/src/index.js.map +1 -1
  113. package/dist/src/record-view/record-creator.d.ts +2 -2
  114. package/dist/src/record-view/record-creator.js +1 -1
  115. package/dist/src/record-view/record-creator.js.map +1 -1
  116. package/dist/src/record-view/record-view-body.d.ts +3 -3
  117. package/dist/src/record-view/record-view-body.js +4 -4
  118. package/dist/src/record-view/record-view-body.js.map +1 -1
  119. package/dist/src/record-view/record-view.d.ts +2 -2
  120. package/dist/src/record-view/record-view.js +5 -5
  121. package/dist/src/record-view/record-view.js.map +1 -1
  122. package/dist/src/renderers/ox-grist-renderer-progress.d.ts +1 -1
  123. package/dist/src/renderers/ox-grist-renderer-tree.d.ts +1 -1
  124. package/dist/src/renderers/ox-grist-renderer.d.ts +2 -2
  125. package/dist/src/sorters/sorters-control.js +3 -3
  126. package/dist/src/sorters/sorters-control.js.map +1 -1
  127. package/dist/src/types.d.ts +1 -8
  128. package/dist/src/types.js.map +1 -1
  129. package/dist/stories/accumulator.stories.d.ts +1 -1
  130. package/dist/stories/accumulator.stories.js +126 -112
  131. package/dist/stories/accumulator.stories.js.map +1 -1
  132. package/dist/stories/barcode-input-filter.stories.d.ts +1 -1
  133. package/dist/stories/barcode-input-filter.stories.js +80 -72
  134. package/dist/stories/barcode-input-filter.stories.js.map +1 -1
  135. package/dist/stories/default-filters.stories.d.ts +1 -1
  136. package/dist/stories/default-filters.stories.js +80 -72
  137. package/dist/stories/default-filters.stories.js.map +1 -1
  138. package/dist/stories/dynamic-editable.stories.d.ts +1 -1
  139. package/dist/stories/dynamic-editable.stories.js +100 -79
  140. package/dist/stories/dynamic-editable.stories.js.map +1 -1
  141. package/dist/stories/empty-sorters.stories.d.ts +1 -1
  142. package/dist/stories/empty-sorters.stories.js +80 -71
  143. package/dist/stories/empty-sorters.stories.js.map +1 -1
  144. package/dist/stories/explicit-fetch.stories.d.ts +1 -1
  145. package/dist/stories/explicit-fetch.stories.js +81 -72
  146. package/dist/stories/explicit-fetch.stories.js.map +1 -1
  147. package/dist/stories/fixed-column.stories.d.ts +1 -1
  148. package/dist/stories/fixed-column.stories.js +122 -113
  149. package/dist/stories/fixed-column.stories.js.map +1 -1
  150. package/dist/stories/grist-modes.stories.d.ts +1 -1
  151. package/dist/stories/grist-modes.stories.js +155 -125
  152. package/dist/stories/grist-modes.stories.js.map +1 -1
  153. package/dist/stories/group-header.stories.d.ts +1 -1
  154. package/dist/stories/group-header.stories.js +122 -113
  155. package/dist/stories/group-header.stories.js.map +1 -1
  156. package/dist/stories/textarea.stories.d.ts +1 -1
  157. package/dist/stories/textarea.stories.js +113 -104
  158. package/dist/stories/textarea.stories.js.map +1 -1
  159. package/dist/stories/tree-column-with-checkbox.stories.d.ts +1 -1
  160. package/dist/stories/tree-column-with-checkbox.stories.js +126 -117
  161. package/dist/stories/tree-column-with-checkbox.stories.js.map +1 -1
  162. package/dist/stories/tree-column.stories.d.ts +1 -1
  163. package/dist/stories/tree-column.stories.js +126 -117
  164. package/dist/stories/tree-column.stories.js.map +1 -1
  165. package/dist/tsconfig.tsbuildinfo +1 -1
  166. package/docs/default-value/default-value.md +1 -1
  167. package/docs/default-value/value-generator/date-generator.md +2 -2
  168. package/docs/default-value/value-generator/month-date-generator.md +2 -2
  169. package/docs/default-value/value-generator/week-date-generator.md +2 -2
  170. package/docs/default-value/value-generator/year-date-generator.md +2 -2
  171. package/package.json +21 -20
  172. package/src/accumulator/accumulator.ts +4 -4
  173. package/src/configure/rows-option-builder.ts +11 -1
  174. package/src/configure/zero-config.ts +1 -0
  175. package/src/data-card/data-card-gutter-menu.ts +5 -5
  176. package/src/data-card/data-card.ts +3 -3
  177. package/src/data-card/event-handlers/record-card-click-handler.ts +1 -1
  178. package/src/data-card/record-card.ts +30 -32
  179. package/src/data-grid/data-grid-accum-field.ts +8 -3
  180. package/src/data-grid/data-grid-body.ts +10 -5
  181. package/src/data-grid/data-grid-field.ts +1 -1
  182. package/src/data-grid/data-grid-footer.ts +18 -11
  183. package/src/data-grid/data-grid-header.ts +67 -68
  184. package/src/data-grid/data-grid.ts +3 -3
  185. package/src/data-grist.ts +274 -27
  186. package/src/data-list/data-list-gutter.ts +12 -0
  187. package/src/data-list/data-list.ts +3 -3
  188. package/src/data-list/event-handlers/record-partial-click-handler.ts +1 -1
  189. package/src/data-list/record-partial.ts +22 -22
  190. package/src/data-manipulator.ts +52 -31
  191. package/src/editors/ox-grist-editor-checkbox.ts +12 -2
  192. package/src/editors/ox-grist-editor-datetime.ts +1 -2
  193. package/src/editors/ox-grist-editor-file.ts +12 -2
  194. package/src/editors/ox-grist-editor-image.ts +10 -7
  195. package/src/editors/ox-grist-editor-number.ts +11 -9
  196. package/src/editors/ox-grist-editor-text.ts +4 -0
  197. package/src/editors/ox-grist-editor-textarea.ts +4 -0
  198. package/src/editors/ox-grist-editor.ts +14 -10
  199. package/src/empty-note.ts +3 -3
  200. package/src/filters/filter-range-date.ts +16 -1
  201. package/src/filters/filters-form.ts +69 -46
  202. package/src/gutters/gutter-button.ts +3 -3
  203. package/src/gutters/gutter-dirty.ts +5 -5
  204. package/src/handlers/contextmenu-tree-mutation.ts +5 -23
  205. package/src/index.ts +0 -1
  206. package/src/record-view/record-creator.ts +1 -1
  207. package/src/record-view/record-view-body.ts +4 -4
  208. package/src/record-view/record-view.ts +5 -5
  209. package/src/sorters/sorters-control.ts +3 -3
  210. package/src/types.ts +1 -9
  211. package/stories/accumulator.stories.ts +128 -118
  212. package/stories/barcode-input-filter.stories.ts +91 -82
  213. package/stories/default-filters.stories.ts +91 -82
  214. package/stories/dynamic-editable.stories.ts +108 -86
  215. package/stories/empty-sorters.stories.ts +92 -82
  216. package/stories/explicit-fetch.stories.ts +93 -83
  217. package/stories/fixed-column.stories.ts +134 -124
  218. package/stories/grist-modes.stories.ts +167 -141
  219. package/stories/group-header.stories.ts +134 -124
  220. package/stories/textarea.stories.ts +115 -110
  221. package/stories/tree-column-with-checkbox.stories.ts +134 -124
  222. package/stories/tree-column.stories.ts +134 -124
  223. package/themes/grist-theme.css +1 -1
  224. package/dist/src/value-generator/date-generator.d.ts +0 -6
  225. package/dist/src/value-generator/date-generator.js +0 -30
  226. package/dist/src/value-generator/date-generator.js.map +0 -1
  227. package/dist/src/value-generator/hour-time-generator.d.ts +0 -7
  228. package/dist/src/value-generator/hour-time-generator.js +0 -29
  229. package/dist/src/value-generator/hour-time-generator.js.map +0 -1
  230. package/dist/src/value-generator/index.d.ts +0 -1
  231. package/dist/src/value-generator/index.js +0 -2
  232. package/dist/src/value-generator/index.js.map +0 -1
  233. package/dist/src/value-generator/minute-time-generator.d.ts +0 -7
  234. package/dist/src/value-generator/minute-time-generator.js +0 -29
  235. package/dist/src/value-generator/minute-time-generator.js.map +0 -1
  236. package/dist/src/value-generator/month-date-generator.d.ts +0 -7
  237. package/dist/src/value-generator/month-date-generator.js +0 -31
  238. package/dist/src/value-generator/month-date-generator.js.map +0 -1
  239. package/dist/src/value-generator/now-generator.d.ts +0 -4
  240. package/dist/src/value-generator/now-generator.js +0 -8
  241. package/dist/src/value-generator/now-generator.js.map +0 -1
  242. package/dist/src/value-generator/registry.d.ts +0 -11
  243. package/dist/src/value-generator/registry.js +0 -50
  244. package/dist/src/value-generator/registry.js.map +0 -1
  245. package/dist/src/value-generator/time-generator.d.ts +0 -6
  246. package/dist/src/value-generator/time-generator.js +0 -28
  247. package/dist/src/value-generator/time-generator.js.map +0 -1
  248. package/dist/src/value-generator/today-generator.d.ts +0 -4
  249. package/dist/src/value-generator/today-generator.js +0 -8
  250. package/dist/src/value-generator/today-generator.js.map +0 -1
  251. package/dist/src/value-generator/week-date-generator.d.ts +0 -7
  252. package/dist/src/value-generator/week-date-generator.js +0 -29
  253. package/dist/src/value-generator/week-date-generator.js.map +0 -1
  254. package/dist/src/value-generator/year-date-generator.d.ts +0 -7
  255. package/dist/src/value-generator/year-date-generator.js +0 -29
  256. package/dist/src/value-generator/year-date-generator.js.map +0 -1
  257. package/src/value-generator/date-generator.ts +0 -35
  258. package/src/value-generator/hour-time-generator.ts +0 -43
  259. package/src/value-generator/index.ts +0 -1
  260. package/src/value-generator/minute-time-generator.ts +0 -43
  261. package/src/value-generator/month-date-generator.ts +0 -38
  262. package/src/value-generator/now-generator.ts +0 -10
  263. package/src/value-generator/registry.ts +0 -58
  264. package/src/value-generator/time-generator.ts +0 -33
  265. package/src/value-generator/today-generator.ts +0 -10
  266. package/src/value-generator/week-date-generator.ts +0 -40
  267. package/src/value-generator/year-date-generator.ts +0 -36
@@ -46,7 +46,7 @@ const gristConfig = {
46
46
  defaultValue: {
47
47
  name: 'getRelativeDate',
48
48
  params: [{
49
- relativeDate: -1 // yesterday
49
+ relativeDays: -1 // yesterday
50
50
  }]
51
51
  }
52
52
  }
@@ -12,7 +12,7 @@ function getRelativeDate(params: RelativeDateParams = {}): Date | number | strin
12
12
 
13
13
  이 함수는 `RelativeDateParams`라는 이름의 타입의 매개변수 객체를 받습니다. 이 객체의 필드에 대한 상세한 정보는 다음과 같습니다:
14
14
 
15
- - `relativeDate?: number`: 상대적인 날짜를 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 일 수를 나타냅니다. 예를 들어, 이 값이 3이면 현재 날짜로부터 3일 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 날짜를 의미합니다.
15
+ - `relativeDays?: number`: 상대적인 날짜를 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 일 수를 나타냅니다. 예를 들어, 이 값이 3이면 현재 날짜로부터 3일 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 날짜를 의미합니다.
16
16
 
17
17
  - `timeZone?: string`: 날짜를 얻고자 하는 시간대를 나타내는 문자열입니다. 이 값이 주어지지 않으면 사용자의 로컬 시간대가 사용됩니다.
18
18
 
@@ -29,7 +29,7 @@ function getRelativeDate(params: RelativeDateParams = {}): Date | number | strin
29
29
 
30
30
  ```typescript
31
31
  const relativeDate = getRelativeDate({
32
- relativeDate: 1,
32
+ relativeDays: 1,
33
33
  timeZone: 'Asia/Seoul',
34
34
  format: 'date'
35
35
  })
@@ -14,7 +14,7 @@ function getRelativeMonthDate(params: RelativeMonthDateParams = {}): string | nu
14
14
 
15
15
  - `relativeMonths?: number`: 상대적인 월을 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 월 수를 나타냅니다. 예를 들어, 이 값이 3이면 현재 날짜로부터 3개월 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 월을 의미합니다.
16
16
 
17
- - `relativeDates?: number`: 상대적인 일수를 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 일 수를 나타냅니다. 예를 들어, 이 값이 2이면 현재 날짜로부터 2일 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 날짜를 의미합니다.
17
+ - `relativeDays?: number`: 상대적인 일수를 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 일 수를 나타냅니다. 예를 들어, 이 값이 2이면 현재 날짜로부터 2일 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 날짜를 의미합니다.
18
18
 
19
19
  - `timeZone?: string`: 날짜를 얻고자 하는 시간대를 나타내는 문자열입니다. 이 값이 주어지지 않으면 사용자의 로컬 시간대가 사용됩니다.
20
20
 
@@ -32,7 +32,7 @@ function getRelativeMonthDate(params: RelativeMonthDateParams = {}): string | nu
32
32
  ```typescript
33
33
  const relativeMonthDate = getRelativeMonthDate({
34
34
  relativeMonths: 2,
35
- relativeDates: 3,
35
+ relativeDays: 3,
36
36
  timeZone: 'Asia/Seoul',
37
37
  format: 'date'
38
38
  })
@@ -14,7 +14,7 @@ function getRelativeWeekDate(params: RelativeWeekDateParams = {}): string | numb
14
14
 
15
15
  - `relativeWeeks?: number`: 상대적인 주를 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 주 수를 나타냅니다. 예를 들어, 이 값이 3이면 현재 날짜로부터 3주 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 주를 의미합니다.
16
16
 
17
- - `relativeDates?: number`: 상대적인 일수를 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 일 수를 나타냅니다. 예를 들어, 이 값이 2이면 현재 날짜로부터 2일 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 날짜를 의미합니다.
17
+ - `relativeDays?: number`: 상대적인 일수를 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 일 수를 나타냅니다. 예를 들어, 이 값이 2이면 현재 날짜로부터 2일 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 날짜를 의미합니다.
18
18
 
19
19
  - `timeZone?: string`: 날짜를 얻고자 하는 시간대를 나타내는 문자열입니다. 이 값이 주어지지 않으면 사용자의 로컬 시간대가 사용됩니다.
20
20
 
@@ -32,7 +32,7 @@ function getRelativeWeekDate(params: RelativeWeekDateParams = {}): string | numb
32
32
  ```typescript
33
33
  const relativeWeekDate = getRelativeWeekDate({
34
34
  relativeWeeks: 2,
35
- relativeDates: 3,
35
+ relativeDays: 3,
36
36
  timeZone: 'Asia/Seoul',
37
37
  format: 'date'
38
38
  })
@@ -14,7 +14,7 @@ function getRelativeYearDate(params: RelativeYearDateParams = {}): string | numb
14
14
 
15
15
  - `relativeYears?: number`: 상대적인 연도를 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 연도 수를 나타냅니다. 예를 들어, 이 값이 3이면 현재 날짜로부터 3년 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 연도를 의미합니다.
16
16
 
17
- - `relativeDates?: number`: 상대적인 일수를 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 일 수를 나타냅니다. 예를 들어, 이 값이 2이면 현재 날짜로부터 2일 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 날짜를 의미합니다.
17
+ - `relativeDays?: number`: 상대적인 일수를 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 일 수를 나타냅니다. 예를 들어, 이 값이 2이면 현재 날짜로부터 2일 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 날짜를 의미합니다.
18
18
 
19
19
  - `timeZone?: string`: 날짜를 얻고자 하는 시간대를 나타내는 문자열입니다. 이 값이 주어지지 않으면 사용자의 로컬 시간대가 사용됩니다.
20
20
 
@@ -32,7 +32,7 @@ function getRelativeYearDate(params: RelativeYearDateParams = {}): string | numb
32
32
  ```typescript
33
33
  const relativeYearDate = getRelativeYearDate({
34
34
  relativeYears: 2,
35
- relativeDates: 3,
35
+ relativeDays: 3,
36
36
  timeZone: 'Asia/Seoul',
37
37
  format: 'date'
38
38
  })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@operato/data-grist",
3
- "version": "2.0.0-alpha.7",
3
+ "version": "2.0.0-alpha.80",
4
4
  "description": "User interface for grid (desktop) and list (mobile)",
5
5
  "author": "heartyoh",
6
6
  "main": "dist/index.js",
@@ -55,35 +55,36 @@
55
55
  "storybook:build": "tsc && build-storybook"
56
56
  },
57
57
  "dependencies": {
58
- "@material/mwc-icon": "^0.27.0",
59
- "@operato/headroom": "^2.0.0-alpha.0",
60
- "@operato/input": "^2.0.0-alpha.4",
61
- "@operato/popup": "^2.0.0-alpha.4",
62
- "@operato/pull-to-refresh": "^2.0.0-alpha.0",
63
- "@operato/styles": "^2.0.0-alpha.0",
64
- "@operato/utils": "^2.0.0-alpha.0",
58
+ "@material/web": "^1.4.0",
59
+ "@operato/headroom": "^2.0.0-alpha.57",
60
+ "@operato/input": "^2.0.0-alpha.80",
61
+ "@operato/popup": "^2.0.0-alpha.80",
62
+ "@operato/pull-to-refresh": "^2.0.0-alpha.57",
63
+ "@operato/styles": "^2.0.0-alpha.80",
64
+ "@operato/time-calculator": "^2.0.0-alpha.57",
65
+ "@operato/utils": "^2.0.0-alpha.68",
65
66
  "i18next": "^21.5.4",
66
67
  "json5": "^2.2.0",
67
- "lit": "^2.5.0",
68
+ "lit": "^3.1.2",
68
69
  "lodash-es": "^4.17.21"
69
70
  },
70
71
  "devDependencies": {
71
- "@custom-elements-manifest/analyzer": "^0.8.1",
72
+ "@custom-elements-manifest/analyzer": "^0.9.2",
72
73
  "@hatiolab/prettier-config": "^1.0.0",
73
- "@open-wc/eslint-config": "^10.0.0",
74
+ "@open-wc/eslint-config": "^12.0.3",
74
75
  "@open-wc/testing": "^3.1.6",
75
76
  "@types/lodash-es": "^4.17.5",
76
- "@typescript-eslint/eslint-plugin": "^5.59.1",
77
- "@typescript-eslint/parser": "^5.59.1",
77
+ "@typescript-eslint/eslint-plugin": "^7.0.1",
78
+ "@typescript-eslint/parser": "^7.0.1",
78
79
  "@web/dev-server": "^0.3.0",
79
- "@web/dev-server-storybook": "^0.7.4",
80
- "@web/test-runner": "^0.17.0",
80
+ "@web/dev-server-storybook": "^2.0.1",
81
+ "@web/test-runner": "^0.18.0",
81
82
  "concurrently": "^8.0.1",
82
83
  "eslint": "^8.39.0",
83
- "eslint-config-prettier": "^8.3.0",
84
- "husky": "^8.0.1",
85
- "lint-staged": "^13.2.2",
86
- "prettier": "^2.4.1",
84
+ "eslint-config-prettier": "^9.1.0",
85
+ "husky": "^9.0.11",
86
+ "lint-staged": "^15.2.2",
87
+ "prettier": "^3.2.5",
87
88
  "tslib": "^2.3.1",
88
89
  "typescript": "^5.0.4"
89
90
  },
@@ -100,5 +101,5 @@
100
101
  "prettier --write"
101
102
  ]
102
103
  },
103
- "gitHead": "2507b451915b745adb249bf59eef586d7683531a"
104
+ "gitHead": "9405ad5252a157db9c9680256a6cb65f764a890b"
104
105
  }
@@ -6,7 +6,7 @@ function sum(data: GristData, column: ColumnConfig): number {
6
6
  return data.records
7
7
  .filter(record => !Number.isNaN(record[name]))
8
8
  .reduce((sum, record) => {
9
- return sum + Number(record[name])
9
+ return sum + Number(record[name] || 0)
10
10
  }, 0)
11
11
  }
12
12
 
@@ -16,7 +16,7 @@ function avg(data: GristData, column: ColumnConfig): number {
16
16
 
17
17
  return (
18
18
  effectiveRecords.reduce((sum, record) => {
19
- return sum + Number(record[name])
19
+ return sum + Number(record[name] || 0)
20
20
  }, 0) / effectiveRecords.length
21
21
  )
22
22
  }
@@ -30,7 +30,7 @@ function min(data: GristData, column: ColumnConfig): number {
30
30
 
31
31
  return Math.min.apply(
32
32
  null,
33
- data.records.filter(record => !Number.isNaN(record[name])).map(record => Number(record[name]))
33
+ data.records.filter(record => !Number.isNaN(record[name])).map(record => Number(record[name] || 0))
34
34
  )
35
35
  }
36
36
 
@@ -39,7 +39,7 @@ function max(data: GristData, column: ColumnConfig): number {
39
39
 
40
40
  return Math.max.apply(
41
41
  null,
42
- data.records.filter(record => !Number.isNaN(record[name])).map(record => Number(record[name]))
42
+ data.records.filter(record => !Number.isNaN(record[name])).map(record => Number(record[name] || 0))
43
43
  )
44
44
  }
45
45
 
@@ -3,7 +3,16 @@ import { RowsConfig } from '../types'
3
3
  import { getGristEventHandler } from '../handlers'
4
4
 
5
5
  export const buildRowsOptions = (rows: any): RowsConfig => {
6
- var { appendable = true, insertable = false, selectable, groups = [], totals = [], classifier, accumulator } = rows
6
+ var {
7
+ appendable = true,
8
+ editable = true,
9
+ insertable = false,
10
+ selectable,
11
+ groups = [],
12
+ totals = [],
13
+ classifier,
14
+ accumulator
15
+ } = rows
7
16
 
8
17
  /* handler */
9
18
  var { click, dblclick, focus } = rows.handlers || {}
@@ -14,6 +23,7 @@ export const buildRowsOptions = (rows: any): RowsConfig => {
14
23
  return {
15
24
  accumulator,
16
25
  appendable,
26
+ editable,
17
27
  insertable,
18
28
  selectable,
19
29
  groups,
@@ -45,6 +45,7 @@ export const ZERO_COLUMN: ColumnConfig = {
45
45
  export const ZERO_ROWS: RowsConfig = {
46
46
  appendable: false,
47
47
  insertable: false,
48
+ editable: false,
48
49
  groups: ZERO_GROUPS,
49
50
  totals: ZERO_TOTALS,
50
51
  classifier: ZERO_CLASSIFIER,
@@ -1,4 +1,4 @@
1
- import '@material/mwc-icon'
1
+ import '@material/web/icon/icon.js'
2
2
  import './data-card-gutter.js'
3
3
 
4
4
  import { css, html, LitElement } from 'lit'
@@ -19,7 +19,7 @@ class DataCardGutterMenu extends LitElement {
19
19
  padding: 4px;
20
20
  }
21
21
 
22
- mwc-icon {
22
+ md-icon {
23
23
  flex: 1;
24
24
  margin: 0;
25
25
  margin-bottom: 1px;
@@ -29,7 +29,7 @@ class DataCardGutterMenu extends LitElement {
29
29
  font-size: var(--grid-record-fontsize);
30
30
  }
31
31
 
32
- mwc-icon:hover {
32
+ md-icon:hover {
33
33
  cursor: pointer;
34
34
  color: var(--grid-record-color-hover);
35
35
  }
@@ -41,11 +41,11 @@ class DataCardGutterMenu extends LitElement {
41
41
  @property() clickHandler!: EventListener
42
42
  @property() dblclickHandler!: EventListener
43
43
 
44
- @query('mwc-icon') icon!: Element
44
+ @query('md-icon') icon!: Element
45
45
 
46
46
  render() {
47
47
  return html`
48
- <mwc-icon @click=${(e: Event) => this.open(e)}>more_horiz</mwc-icon>
48
+ <md-icon @click=${(e: Event) => this.open(e)}>more_horiz</md-icon>
49
49
  <slot></slot>
50
50
  `
51
51
  }
@@ -1,4 +1,4 @@
1
- import '@material/mwc-icon'
1
+ import '@material/web/icon/icon.js'
2
2
  import '../empty-note'
3
3
  import './record-card'
4
4
 
@@ -42,7 +42,7 @@ export class DataCard extends DataManipulator {
42
42
  }
43
43
 
44
44
  #upward {
45
- --mdc-icon-size: 26px;
45
+ --md-icon-size: 26px;
46
46
  position: absolute;
47
47
  top: var(--data-card-fab-position-vertical);
48
48
  right: var(--data-card-fab-position-horizontal);
@@ -142,7 +142,7 @@ export class DataCard extends DataManipulator {
142
142
  ${this.empty ? html` <ox-empty-note title="NO RECORDS"></ox-empty-note> ` : html``}
143
143
  ${this.isTop
144
144
  ? html``
145
- : html` <mwc-icon id="upward" @click=${(e: Event) => this.gotoTop(e)}>arrow_upward</mwc-icon> `}
145
+ : html` <md-icon id="upward" @click=${(e: Event) => this.gotoTop(e)}>arrow_upward</md-icon> `}
146
146
  `
147
147
  }
148
148
 
@@ -29,6 +29,6 @@ export function recordCardClickHandler(this: RecordCard, e: MouseEvent): void {
29
29
  rowsClick(this.config.columns, this.data, column, this.record, rowIndex, target)
30
30
  } else {
31
31
  /* content 가 클릭된 경우 - 레코드뷰 팝업을 실행한다. */
32
- this.popupRecordView()
32
+ this.config.rows.editable && this.popupRecordView()
33
33
  }
34
34
  }
@@ -1,4 +1,4 @@
1
- import '@material/mwc-icon'
1
+ import '@material/web/icon/icon.js'
2
2
  import './data-card-field'
3
3
  import '../record-view'
4
4
  import './data-card-gutter'
@@ -183,7 +183,7 @@ export class RecordCard extends LitElement {
183
183
  }
184
184
 
185
185
  return html`
186
- ${dirtyIcon ? html` <mwc-icon dirty>${dirtyIcon}</mwc-icon> ` : html``}
186
+ ${dirtyIcon ? html` <md-icon dirty>${dirtyIcon}</md-icon> ` : html``}
187
187
  ${thumbnailColumn
188
188
  ? html` <ox-card-field
189
189
  thumbnail
@@ -216,46 +216,44 @@ export class RecordCard extends LitElement {
216
216
  ></ox-card-gutter>
217
217
  `
218
218
  : gutters.length > 2
219
- ? html`
220
- <ox-card-gutter-menu
221
- .gutters=${gutters}
222
- .rowIndex=${rowIndex}
223
- .record=${record}
224
- .clickHandler=${this.clickHandler}
225
- .dblclickHandler=${this.dblclickHandler}
226
- ></ox-card-gutter-menu>
227
- `
228
- : html``}
219
+ ? html`
220
+ <ox-card-gutter-menu
221
+ .gutters=${gutters}
222
+ .rowIndex=${rowIndex}
223
+ .record=${record}
224
+ .clickHandler=${this.clickHandler}
225
+ .dblclickHandler=${this.dblclickHandler}
226
+ ></ox-card-gutter-menu>
227
+ `
228
+ : html``}
229
229
  </div>
230
230
 
231
231
  <div brief>
232
232
  ${briefFields.map(
233
- (column, idx) =>
234
- html`
235
- <ox-card-field
236
- .rowIndex=${rowIndex}
237
- .column=${column}
238
- .record=${record}
239
- .value=${record[column?.name || '']}
240
- ?name=${idx == 0}
241
- ?desc=${idx == 1}
242
- ></ox-card-field>
243
- `
233
+ (column, idx) => html`
234
+ <ox-card-field
235
+ .rowIndex=${rowIndex}
236
+ .column=${column}
237
+ .record=${record}
238
+ .value=${record[column?.name || '']}
239
+ ?name=${idx == 0}
240
+ ?desc=${idx == 1}
241
+ ></ox-card-field>
242
+ `
244
243
  )}
245
244
  </div>
246
245
  ${detailFields.length > 0
247
246
  ? html`
248
247
  <div detail>
249
248
  ${detailFields.map(
250
- (column, idx) =>
251
- html`
252
- <ox-card-field
253
- .rowIndex=${rowIndex}
254
- .column=${column}
255
- .record=${record}
256
- .value=${record[column?.name || '']}
257
- ></ox-card-field>
258
- `
249
+ (column, idx) => html`
250
+ <ox-card-field
251
+ .rowIndex=${rowIndex}
252
+ .column=${column}
253
+ .record=${record}
254
+ .value=${record[column?.name || '']}
255
+ ></ox-card-field>
256
+ `
259
257
  )}
260
258
  </div>
261
259
  `
@@ -47,6 +47,10 @@ export class DataGridAccumField extends LitElement {
47
47
  flex: none;
48
48
  margin: 0 auto;
49
49
  }
50
+
51
+ md-icon {
52
+ font-size: 1.5em;
53
+ }
50
54
  `
51
55
  ]
52
56
 
@@ -62,7 +66,7 @@ export class DataGridAccumField extends LitElement {
62
66
 
63
67
  render(): TemplateResult {
64
68
  if (!this.column || !this.column.accumulator) {
65
- return this.columnIndex == 0 ? html`<mwc-icon>functions</mwc-icon>` : html`${nothing}`
69
+ return this.columnIndex == 0 ? html`<md-icon>functions</md-icon>` : html`${nothing}`
66
70
  }
67
71
 
68
72
  var { value, column, record, rowIndex } = this
@@ -70,11 +74,12 @@ export class DataGridAccumField extends LitElement {
70
74
 
71
75
  // tag가 true이면 value 앞에 (sum) 같은 태그 생성
72
76
  var { accumulator } = column
77
+ let tag = ''
73
78
  if (typeof accumulator === 'object' && typeof accumulator.type === 'string' && accumulator?.tag) {
74
- value = `(${i18next.t(`label.accumulator_${accumulator.type}`)}) ${value}`
79
+ tag = `(${i18next.t(`label.accumulator_${accumulator.type}`)})`
75
80
  }
76
81
 
77
- return html`${renderer?.call(this, value, column, record, rowIndex, this)}`
82
+ return html`${tag}&nbsp;${renderer?.call(this, value, column, record, rowIndex, this)}`
78
83
  }
79
84
 
80
85
  updated(changes: PropertyValues<this>) {
@@ -100,7 +100,7 @@ export class DataGridBody extends LitElement {
100
100
  @property({ type: Array }) columns: ColumnConfig[] = []
101
101
  @property({ type: Object }) data: GristData = ZERO_DATA
102
102
  @property({ type: Object }) focused: { row: number; column: number } = ZERO_FOCUS
103
- @property({ type: Object }) editTarget: { row: number; column: number; valueWithEdit: string | null } | null = null
103
+ @property({ type: Object }) editTarget: { row: number; column: number; valueWith: string | null } | null = null
104
104
  @property({ type: Number }) from = -1
105
105
  @property({ type: Number }) to = -1
106
106
  @property({ type: Array }) fixedLefts: number[] = []
@@ -135,7 +135,7 @@ export class DataGridBody extends LitElement {
135
135
  render() {
136
136
  // block이 선택되어 있으면, focused row/column은 표현하지 않는다.
137
137
  var { row: focusedRow, column: focusedColumn } = (!this._selectBlock && this.focused) || {}
138
- var { row: editingRow, column: editingColumn, valueWithEdit = null } = this.editTarget || {}
138
+ var { row: editingRow, column: editingColumn, valueWith = null } = this.editTarget || {}
139
139
 
140
140
  var columns = this.columns.filter(column => !column.hidden)
141
141
  var data = this.data
@@ -182,7 +182,7 @@ export class DataGridBody extends LitElement {
182
182
  ?selected-row=${attrSelected}
183
183
  ?focused=${idxRow === focusedRow && idxColumn === focusedColumn}
184
184
  ?editing=${idxRow === editingRow && idxColumn === editingColumn}
185
- .valueWithEdit=${valueWithEdit}
185
+ .valueWith=${valueWith}
186
186
  .value=${record[column.name]}
187
187
  ?dirty=${!!dirtyFields[column.name]}
188
188
  fixed=${ifDefined(this.fixedLefts[idxColumn])}
@@ -400,7 +400,7 @@ export class DataGridBody extends LitElement {
400
400
  }
401
401
  }
402
402
 
403
- startEditTarget(row: number, column: number, valueWithEdit: string | null = null) {
403
+ startEditTarget(row: number, column: number, valueWith: string | null = null) {
404
404
  var { editable } = this.columns.filter(column => !column.hidden)[column].record
405
405
  if (typeof editable === 'function') {
406
406
  const curRow = this.data.records[row] || {}
@@ -419,7 +419,7 @@ export class DataGridBody extends LitElement {
419
419
  this.editTarget = {
420
420
  row,
421
421
  column,
422
- valueWithEdit
422
+ valueWith
423
423
  }
424
424
  }
425
425
 
@@ -647,14 +647,19 @@ export class DataGridBody extends LitElement {
647
647
 
648
648
  switch (type) {
649
649
  case 'object':
650
+ case 'parameters':
650
651
  try {
651
652
  value = JSON.parse(value || 'null')
652
653
  } catch (err) {}
653
654
  break
654
655
  case 'boolean':
656
+ case 'checkbox':
655
657
  value = !!value && !!String(value).match(/true/i)
656
658
  break
657
659
  case 'number':
660
+ case 'float':
661
+ case 'integer':
662
+ case 'progress':
658
663
  value = parseToNumberOrNull(value)
659
664
  break
660
665
  default:
@@ -87,7 +87,7 @@ export class DataGridField extends LitElement {
87
87
  @property({ type: Number }) columnIndex = 0
88
88
  @property({ type: Boolean }) editing = false
89
89
  @property({ type: Object }) value = {}
90
- @property({ type: String }) valueWithEdit: string | null = null
90
+ @property({ type: String }) valueWith: string | null = null
91
91
  @property({ attribute: false }) emphasized: any = false
92
92
  @property({ type: String }) fixed?: string
93
93
  @property({ type: String }) type?: string
@@ -1,4 +1,4 @@
1
- import '@material/mwc-icon'
1
+ import '@material/web/icon/icon.js'
2
2
 
3
3
  import { css, html, LitElement } from 'lit'
4
4
  import { customElement, property } from 'lit/decorators.js'
@@ -14,17 +14,18 @@ export class DataGridFooter extends LitElement {
14
14
  :host {
15
15
  display: flex;
16
16
  flex-direction: row;
17
+ gap: 4px;
17
18
  overflow: hidden;
18
19
 
19
20
  padding: var(--grid-footer-padding);
20
21
  background-color: var(--grid-footer-background-color);
21
22
  font-size: var(--grid-footer-font-size);
23
+ align-items: center;
22
24
  }
23
25
 
24
26
  :host * {
25
27
  white-space: nowrap;
26
28
  overflow: hidden;
27
- padding: 0 2px;
28
29
 
29
30
  text-overflow: ellipsis;
30
31
  text-align: center;
@@ -35,11 +36,18 @@ export class DataGridFooter extends LitElement {
35
36
  flex: 1;
36
37
  }
37
38
 
38
- mwc-icon {
39
+ md-icon {
39
40
  font-size: 1.5em;
40
41
  vertical-align: middle;
41
42
  }
42
43
 
44
+ .limit {
45
+ display: flex;
46
+ flex-direction: row;
47
+ gap: 6px;
48
+ align-items: center;
49
+ }
50
+
43
51
  .limit a {
44
52
  color: var(--grid-footer-limit-color);
45
53
  }
@@ -82,20 +90,19 @@ export class DataGridFooter extends LitElement {
82
90
  var totalPage = Math.max(1, Math.ceil(total / limit))
83
91
 
84
92
  return html`
85
- <a ?inactive=${page <= 1} @click=${() => this._gotoPage(1)}><mwc-icon>skip_previous</mwc-icon></a>
86
- <a ?inactive=${page <= 1} @click=${() => this._gotoPage(page - 1)}><mwc-icon>navigate_before</mwc-icon></a>
93
+ <a ?inactive=${page <= 1} @click=${() => this._gotoPage(1)}><md-icon>skip_previous</md-icon></a>
94
+ <a ?inactive=${page <= 1} @click=${() => this._gotoPage(page - 1)}><md-icon>navigate_before</md-icon></a>
87
95
  <span>page <strong>${page}</strong>&nbsp;/&nbsp;${totalPage}</span>
88
- <a ?inactive=${page >= totalPage} @click=${() => this._gotoPage(page + 1)}><mwc-icon>navigate_next</mwc-icon></a>
89
- <a ?inactive=${page >= totalPage} @click=${() => this._gotoPage(totalPage)}><mwc-icon>skip_next</mwc-icon></a>
96
+ <a ?inactive=${page >= totalPage} @click=${() => this._gotoPage(page + 1)}><md-icon>navigate_next</md-icon></a>
97
+ <a ?inactive=${page >= totalPage} @click=${() => this._gotoPage(totalPage)}><md-icon>skip_next</md-icon></a>
90
98
 
91
99
  <span class="filler"></span>
92
100
 
93
101
  <span class="limit">
94
102
  ${pages.map(
95
- size =>
96
- html`
97
- <a ?selected=${limit == size} @click=${() => this._changeLimit(size)}>${stringifyBigNumber(size)}</a>
98
- `
103
+ size => html`
104
+ <a ?selected=${limit == size} @click=${() => this._changeLimit(size)}>${stringifyBigNumber(size)}</a>
105
+ `
99
106
  )}
100
107
  records
101
108
  </span>