@operato/data-grist 1.3.4 → 1.3.11

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 (153) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/src/data-card/data-card-field.js +1 -2
  3. package/dist/src/data-card/data-card-field.js.map +1 -1
  4. package/dist/src/data-card/data-card-gutter.js +1 -2
  5. package/dist/src/data-card/data-card-gutter.js.map +1 -1
  6. package/dist/src/data-card/data-card.js +1 -2
  7. package/dist/src/data-card/data-card.js.map +1 -1
  8. package/dist/src/data-card/record-card.js +1 -2
  9. package/dist/src/data-card/record-card.js.map +1 -1
  10. package/dist/src/data-grid/data-grid-body.js +1 -2
  11. package/dist/src/data-grid/data-grid-body.js.map +1 -1
  12. package/dist/src/data-grid/data-grid-field.js +1 -2
  13. package/dist/src/data-grid/data-grid-field.js.map +1 -1
  14. package/dist/src/data-grid/data-grid-footer.js +1 -2
  15. package/dist/src/data-grid/data-grid-footer.js.map +1 -1
  16. package/dist/src/data-grid/data-grid-header.js +1 -2
  17. package/dist/src/data-grid/data-grid-header.js.map +1 -1
  18. package/dist/src/data-grid/data-grid.js +1 -2
  19. package/dist/src/data-grid/data-grid.js.map +1 -1
  20. package/dist/src/data-grist.js +1 -2
  21. package/dist/src/data-grist.js.map +1 -1
  22. package/dist/src/data-list/data-list-field.js +1 -2
  23. package/dist/src/data-list/data-list-field.js.map +1 -1
  24. package/dist/src/data-list/data-list-gutter.js +1 -2
  25. package/dist/src/data-list/data-list-gutter.js.map +1 -1
  26. package/dist/src/data-list/data-list.js +1 -2
  27. package/dist/src/data-list/data-list.js.map +1 -1
  28. package/dist/src/data-list/record-partial.js +1 -2
  29. package/dist/src/data-list/record-partial.js.map +1 -1
  30. package/dist/src/data-report/data-report-body.js +1 -2
  31. package/dist/src/data-report/data-report-body.js.map +1 -1
  32. package/dist/src/data-report/data-report-component.js +1 -2
  33. package/dist/src/data-report/data-report-component.js.map +1 -1
  34. package/dist/src/data-report/data-report-field.js +1 -2
  35. package/dist/src/data-report/data-report-field.js.map +1 -1
  36. package/dist/src/data-report.js +1 -2
  37. package/dist/src/data-report.js.map +1 -1
  38. package/dist/src/editors/ox-grist-editor-checkbox.js +1 -2
  39. package/dist/src/editors/ox-grist-editor-checkbox.js.map +1 -1
  40. package/dist/src/editors/ox-grist-editor-color.js +1 -2
  41. package/dist/src/editors/ox-grist-editor-color.js.map +1 -1
  42. package/dist/src/editors/ox-grist-editor-date.js +1 -2
  43. package/dist/src/editors/ox-grist-editor-date.js.map +1 -1
  44. package/dist/src/editors/ox-grist-editor-datetime.js +1 -2
  45. package/dist/src/editors/ox-grist-editor-datetime.js.map +1 -1
  46. package/dist/src/editors/ox-grist-editor-email.js +1 -2
  47. package/dist/src/editors/ox-grist-editor-email.js.map +1 -1
  48. package/dist/src/editors/ox-grist-editor-file.js +1 -2
  49. package/dist/src/editors/ox-grist-editor-file.js.map +1 -1
  50. package/dist/src/editors/ox-grist-editor-image.js +1 -2
  51. package/dist/src/editors/ox-grist-editor-image.js.map +1 -1
  52. package/dist/src/editors/ox-grist-editor-month.js +1 -2
  53. package/dist/src/editors/ox-grist-editor-month.js.map +1 -1
  54. package/dist/src/editors/ox-grist-editor-number.js +1 -2
  55. package/dist/src/editors/ox-grist-editor-number.js.map +1 -1
  56. package/dist/src/editors/ox-grist-editor-password.js +1 -2
  57. package/dist/src/editors/ox-grist-editor-password.js.map +1 -1
  58. package/dist/src/editors/ox-grist-editor-select.js +1 -2
  59. package/dist/src/editors/ox-grist-editor-select.js.map +1 -1
  60. package/dist/src/editors/ox-grist-editor-tel.js +1 -2
  61. package/dist/src/editors/ox-grist-editor-tel.js.map +1 -1
  62. package/dist/src/editors/ox-grist-editor-text.js +1 -2
  63. package/dist/src/editors/ox-grist-editor-text.js.map +1 -1
  64. package/dist/src/editors/ox-grist-editor-time.js +1 -2
  65. package/dist/src/editors/ox-grist-editor-time.js.map +1 -1
  66. package/dist/src/editors/ox-grist-editor-week.js +1 -2
  67. package/dist/src/editors/ox-grist-editor-week.js.map +1 -1
  68. package/dist/src/editors/ox-grist-editor.js +13 -7
  69. package/dist/src/editors/ox-grist-editor.js.map +1 -1
  70. package/dist/src/empty-note.js +1 -2
  71. package/dist/src/empty-note.js.map +1 -1
  72. package/dist/src/filters/filters-form.js +1 -2
  73. package/dist/src/filters/filters-form.js.map +1 -1
  74. package/dist/src/index.d.ts +1 -0
  75. package/dist/src/index.js +1 -0
  76. package/dist/src/index.js.map +1 -1
  77. package/dist/src/record-view/record-creator.js +1 -2
  78. package/dist/src/record-view/record-creator.js.map +1 -1
  79. package/dist/src/record-view/record-view-body.js +1 -2
  80. package/dist/src/record-view/record-view-body.js.map +1 -1
  81. package/dist/src/record-view/record-view.js +1 -2
  82. package/dist/src/record-view/record-view.js.map +1 -1
  83. package/dist/src/renderers/ox-grist-renderer-progress.js +1 -2
  84. package/dist/src/renderers/ox-grist-renderer-progress.js.map +1 -1
  85. package/dist/src/renderers/ox-grist-renderer.js +1 -2
  86. package/dist/src/renderers/ox-grist-renderer.js.map +1 -1
  87. package/dist/src/sorters/sorters-control.js +1 -2
  88. package/dist/src/sorters/sorters-control.js.map +1 -1
  89. package/dist/src/types.d.ts +12 -0
  90. package/dist/src/types.js.map +1 -1
  91. package/dist/src/value-generator/date-generator.d.ts +6 -0
  92. package/dist/src/value-generator/date-generator.js +30 -0
  93. package/dist/src/value-generator/date-generator.js.map +1 -0
  94. package/dist/src/value-generator/hour-time-generator.d.ts +7 -0
  95. package/dist/src/value-generator/hour-time-generator.js +29 -0
  96. package/dist/src/value-generator/hour-time-generator.js.map +1 -0
  97. package/dist/src/value-generator/index.d.ts +1 -0
  98. package/dist/src/value-generator/index.js +2 -0
  99. package/dist/src/value-generator/index.js.map +1 -0
  100. package/dist/src/value-generator/minute-time-generator.d.ts +7 -0
  101. package/dist/src/value-generator/minute-time-generator.js +29 -0
  102. package/dist/src/value-generator/minute-time-generator.js.map +1 -0
  103. package/dist/src/value-generator/month-date-generator.d.ts +7 -0
  104. package/dist/src/value-generator/month-date-generator.js +31 -0
  105. package/dist/src/value-generator/month-date-generator.js.map +1 -0
  106. package/dist/src/value-generator/now-generator.d.ts +4 -0
  107. package/dist/src/value-generator/now-generator.js +8 -0
  108. package/dist/src/value-generator/now-generator.js.map +1 -0
  109. package/dist/src/value-generator/registry.d.ts +11 -0
  110. package/dist/src/value-generator/registry.js +50 -0
  111. package/dist/src/value-generator/registry.js.map +1 -0
  112. package/dist/src/value-generator/time-generator.d.ts +6 -0
  113. package/dist/src/value-generator/time-generator.js +28 -0
  114. package/dist/src/value-generator/time-generator.js.map +1 -0
  115. package/dist/src/value-generator/today-generator.d.ts +4 -0
  116. package/dist/src/value-generator/today-generator.js +8 -0
  117. package/dist/src/value-generator/today-generator.js.map +1 -0
  118. package/dist/src/value-generator/week-date-generator.d.ts +7 -0
  119. package/dist/src/value-generator/week-date-generator.js +29 -0
  120. package/dist/src/value-generator/week-date-generator.js.map +1 -0
  121. package/dist/src/value-generator/year-date-generator.d.ts +7 -0
  122. package/dist/src/value-generator/year-date-generator.js +29 -0
  123. package/dist/src/value-generator/year-date-generator.js.map +1 -0
  124. package/dist/stories/grist-modes.stories.js +6 -2
  125. package/dist/stories/grist-modes.stories.js.map +1 -1
  126. package/dist/tsconfig.tsbuildinfo +1 -1
  127. package/docs/default-value/default-value.md +97 -0
  128. package/docs/default-value/value-generator/date-generator.md +40 -0
  129. package/docs/default-value/value-generator/default-value-generator.md +9 -0
  130. package/docs/default-value/value-generator/hour-time-generator.md +43 -0
  131. package/docs/default-value/value-generator/minute-time-generator.md +43 -0
  132. package/docs/default-value/value-generator/month-date-generator.md +43 -0
  133. package/docs/default-value/value-generator/now-generator.md +39 -0
  134. package/docs/default-value/value-generator/time-generator.md +40 -0
  135. package/docs/default-value/value-generator/today-generator.md +39 -0
  136. package/docs/default-value/value-generator/week-date-generator.md +43 -0
  137. package/docs/default-value/value-generator/year-date-generator.md +43 -0
  138. package/package.json +3 -3
  139. package/src/editors/ox-grist-editor.ts +16 -5
  140. package/src/index.ts +1 -0
  141. package/src/types.ts +16 -0
  142. package/src/value-generator/date-generator.ts +35 -0
  143. package/src/value-generator/hour-time-generator.ts +43 -0
  144. package/src/value-generator/index.ts +1 -0
  145. package/src/value-generator/minute-time-generator.ts +43 -0
  146. package/src/value-generator/month-date-generator.ts +38 -0
  147. package/src/value-generator/now-generator.ts +10 -0
  148. package/src/value-generator/registry.ts +58 -0
  149. package/src/value-generator/time-generator.ts +33 -0
  150. package/src/value-generator/today-generator.ts +10 -0
  151. package/src/value-generator/week-date-generator.ts +40 -0
  152. package/src/value-generator/year-date-generator.ts +36 -0
  153. package/stories/grist-modes.stories.ts +6 -2
@@ -0,0 +1,40 @@
1
+ # 함수 설명: getRelativeDate
2
+
3
+ 이 함수는 현재 날짜를 기준으로 파라미터로 주어진 상대적인 날짜의 시작 시간을 제공합니다.
4
+
5
+ ## 함수 시그니처
6
+
7
+ ```typescript
8
+ function getRelativeDate(params: RelativeDateParams = {}): Date | number | string
9
+ ```
10
+
11
+ ## 매개변수
12
+
13
+ 이 함수는 `RelativeDateParams`라는 이름의 타입의 매개변수 객체를 받습니다. 이 객체의 필드에 대한 상세한 정보는 다음과 같습니다:
14
+
15
+ - `relativeDate?: number`: 상대적인 날짜를 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 일 수를 나타냅니다. 예를 들어, 이 값이 3이면 현재 날짜로부터 3일 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 날짜를 의미합니다.
16
+
17
+ - `timeZone?: string`: 날짜를 얻고자 하는 시간대를 나타내는 문자열입니다. 이 값이 주어지지 않으면 사용자의 로컬 시간대가 사용됩니다.
18
+
19
+ - `format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions`: 반환하려는 날짜의 형식을 결정합니다. 이 값은 다음 세 가지 중 하나일 수 있습니다:
20
+ - `'timestamp'`: 반환 값이 UNIX 타임스탬프 (1970년 1월 1일 00:00:00 UTC로부터의 밀리초)가 됩니다.
21
+ - `'date'`: 반환 값이 Date 객체가 됩니다.
22
+ - `Intl.DateTimeFormatOptions`: 반환 값이 이 옵션에 따라 포맷된 문자열이 됩니다. 이 값이 제공되지 않으면 기본적으로 Date 객체가 반환됩니다.
23
+
24
+ ## 반환 값
25
+
26
+ 이 함수는 `Date | number | string` 형식의 값을 반환합니다. 반환 값의 형식은 `format` 매개변수에 따라 결정됩니다.
27
+
28
+ ## 예제
29
+
30
+ ```typescript
31
+ const relativeDate = getRelativeDate({
32
+ relativeDate: 1,
33
+ timeZone: 'Asia/Seoul',
34
+ format: 'date'
35
+ })
36
+
37
+ console.log(relativeDate)
38
+ ```
39
+
40
+ 이 코드는 현재 시간으로부터 1일 뒤의 날짜를 `'Asia/Seoul'` 시간대에서의 Date 객체로 반환합니다.
@@ -0,0 +1,9 @@
1
+ ## Date Utility Functions
2
+
3
+ This is a collection of utility functions for working with dates and performing relative date calculations.
4
+
5
+ ### getCurrentTime
6
+
7
+ ```typescript
8
+ getCurrentTime(params?: { timeZone?: string; format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions }): Date | number | string
9
+ ```
@@ -0,0 +1,43 @@
1
+ # 함수 설명: getRelativeHourTime
2
+
3
+ 이 함수는 현재 시간을 기준으로 파라미터로 주어진 상대적인 시간(Hour)의 상대적인 초(Seconds)의 시작 시간을 제공합니다.
4
+
5
+ ## 함수 시그니처
6
+
7
+ ```typescript
8
+ function getRelativeHourTime(params: RelativeHourTimeParams = {}): string | number | Date
9
+ ```
10
+
11
+ ## 매개변수
12
+
13
+ 이 함수는 `RelativeHourTimeParams`라는 이름의 타입의 매개변수 객체를 받습니다. 이 객체의 필드에 대한 상세한 정보는 다음과 같습니다:
14
+
15
+ - `relativeHour?: number`: 상대적인 시간을 나타내는 숫자입니다. 이 값은 현재 시간으로부터의 시간 수를 나타냅니다. 예를 들어, 이 값이 3이면 현재 시간으로부터 3시간 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 시간을 의미합니다.
16
+
17
+ - `relativeSeconds?: number`: 상대적인 초를 나타내는 숫자입니다. 이 값은 현재 시간으로부터의 초 수를 나타냅니다. 예를 들어, 이 값이 120이면 현재 시간으로부터 2분 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 시간을 의미합니다.
18
+
19
+ - `timeZone?: string`: 시간을 얻고자 하는 시간대를 나타내는 문자열입니다. 이 값이 주어지지 않으면 사용자의 로컬 시간대가 사용됩니다.
20
+
21
+ - `format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions`: 반환하려는 시간의 형식을 결정합니다. 이 값은 다음 세 가지 중 하나일 수 있습니다:
22
+ - `'timestamp'`: 반환 값이 UNIX 타임스탬프 (1970년 1월 1일 00:00:00 UTC로부터의 밀리초)가 됩니다.
23
+ - `'date'`: 반환 값이 Date 객체가 됩니다.
24
+ - `Intl.DateTimeFormatOptions`: 반환 값이 이 옵션에 따라 포맷된 문자열이 됩니다. 이 값이 제공되지 않으면 기본적으로 Date 객체가 반환됩니다.
25
+
26
+ ## 반환 값
27
+
28
+ 이 함수는 `string | number | Date` 형식의 값을 반환합니다. 반환 값의 형식은 `format` 매개변수에 따라 결정됩니다.
29
+
30
+ ## 예제
31
+
32
+ ```typescript
33
+ const relativeHourTime = getRelativeHourTime({
34
+ relativeHour: 2,
35
+ relativeSeconds: 120,
36
+ timeZone: 'Asia/Seoul',
37
+ format: 'date'
38
+ })
39
+
40
+ console.log(relativeHourTime)
41
+ ```
42
+
43
+ 이 코드는 현재 시간으로부터 2시간 후와 2분 후의 시간을 `'Asia/Seoul'` 시간대에서의 Date 객체로 반환합니다.
@@ -0,0 +1,43 @@
1
+ # 함수 설명: getRelativeMinuteTime
2
+
3
+ 이 함수는 현재 시간을 기준으로 파라미터로 주어진 상대적인 분(Minute)의 상대적인 초(Seconds)의 시작 시간을 제공합니다.
4
+
5
+ ## 함수 시그니처
6
+
7
+ ```typescript
8
+ function getRelativeMinuteTime(params: RelativeMinuteTimeParams = {}): string | number | Date
9
+ ```
10
+
11
+ ## 매개변수
12
+
13
+ 이 함수는 `RelativeMinuteTimeParams`라는 이름의 타입의 매개변수 객체를 받습니다. 이 객체의 필드에 대한 상세한 정보는 다음과 같습니다:
14
+
15
+ - `relativeMinutes?: number`: 상대적인 분을 나타내는 숫자입니다. 이 값은 현재 시간으로부터의 분 수를 나타냅니다. 예를 들어, 이 값이 15이면 현재 시간으로부터 15분 후를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 시간을 의미합니다.
16
+
17
+ - `relativeSeconds?: number`: 상대적인 초를 나타내는 숫자입니다. 이 값은 현재 시간으로부터의 초 수를 나타냅니다. 예를 들어, 이 값이 30이면 현재 시간으로부터 30초 후를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 시간을 의미합니다.
18
+
19
+ - `timeZone?: string`: 시간을 얻고자 하는 시간대를 나타내는 문자열입니다. 이 값이 주어지지 않으면 사용자의 로컬 시간대가 사용됩니다.
20
+
21
+ - `format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions`: 반환하려는 시간의 형식을 결정합니다. 이 값은 다음 세 가지 중 하나일 수 있습니다:
22
+ - `'timestamp'`: 반환 값이 UNIX 타임스탬프 (1970년 1월 1일 00:00:00 UTC로부터의 밀리초)가 됩니다.
23
+ - `'date'`: 반환 값이 Date 객체가 됩니다.
24
+ - `Intl.DateTimeFormatOptions`: 반환 값이 이 옵션에 따라 포맷된 문자열이 됩니다. 이 값이 제공되지 않으면 기본적으로 Date 객체가 반환됩니다.
25
+
26
+ ## 반환 값
27
+
28
+ 이 함수는 `string | number | Date` 형식의 값을 반환합니다. 반환 값의 형식은 `format` 매개변수에 따라 결정됩니다.
29
+
30
+ ## 예제
31
+
32
+ ```typescript
33
+ const relativeMinuteTime = getRelativeMinuteTime({
34
+ relativeMinutes: 15,
35
+ relativeSeconds: 30,
36
+ timeZone: 'Asia/Seoul',
37
+ format: 'date'
38
+ })
39
+
40
+ console.log(relativeMinuteTime)
41
+ ```
42
+
43
+ 이 코드는 현재 시간으로부터 15분 30초 후의 시간을 `'Asia/Seoul'` 시간대에서의 Date 객체로 반환합니다.
@@ -0,0 +1,43 @@
1
+ # 함수 설명: getRelativeMonthDate
2
+
3
+ 이 함수는 현재 날짜를 기준으로 파라미터로 주어진 상대적인 달(Month)의 상대적인 날짜(Date)의 시작 시간을 제공합니다.
4
+
5
+ ## 함수 시그니처
6
+
7
+ ```typescript
8
+ function getRelativeMonthDate(params: RelativeMonthDateParams = {}): string | number | Date
9
+ ```
10
+
11
+ ## 매개변수
12
+
13
+ 이 함수는 `RelativeMonthDateParams`라는 이름의 타입의 매개변수 객체를 받습니다. 이 객체의 필드에 대한 상세한 정보는 다음과 같습니다:
14
+
15
+ - `relativeMonths?: number`: 상대적인 월을 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 월 수를 나타냅니다. 예를 들어, 이 값이 3이면 현재 날짜로부터 3개월 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 월을 의미합니다.
16
+
17
+ - `relativeDates?: number`: 상대적인 일수를 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 일 수를 나타냅니다. 예를 들어, 이 값이 2이면 현재 날짜로부터 2일 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 날짜를 의미합니다.
18
+
19
+ - `timeZone?: string`: 날짜를 얻고자 하는 시간대를 나타내는 문자열입니다. 이 값이 주어지지 않으면 사용자의 로컬 시간대가 사용됩니다.
20
+
21
+ - `format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions`: 반환하려는 날짜의 형식을 결정합니다. 이 값은 다음 세 가지 중 하나일 수 있습니다:
22
+ - `'timestamp'`: 반환 값이 UNIX 타임스탬프 (1970년 1월 1일 00:00:00 UTC로부터의 밀리초)가 됩니다.
23
+ - `'date'`: 반환 값이 Date 객체가 됩니다.
24
+ - `Intl.DateTimeFormatOptions`: 반환 값이 이 옵션에 따라 포맷된 문자열이 됩니다. 이 값이 제공되지 않으면 기본적으로 Date 객체가 반환됩니다.
25
+
26
+ ## 반환 값
27
+
28
+ 이 함수는 `string | number | Date` 형식의 값을 반환합니다. 반환 값의 형식은 `format` 매개변수에 따라 결정됩니다.
29
+
30
+ ## 예제
31
+
32
+ ```typescript
33
+ const relativeMonthDate = getRelativeMonthDate({
34
+ relativeMonths: 2,
35
+ relativeDates: 3,
36
+ timeZone: 'Asia/Seoul',
37
+ format: 'date'
38
+ })
39
+
40
+ console.log(relativeMonthDate)
41
+ ```
42
+
43
+ 이 코드는 현재 시간으로부터 2개월 후와 3일 후의 날짜를 `'Asia/Seoul'` 시간대에서의 Date 객체로 반환합니다.
@@ -0,0 +1,39 @@
1
+ # 함수 설명: getCurrentTime
2
+
3
+ 이 함수는 현재 시간을 제공합니다.
4
+
5
+ ## 함수 시그니처
6
+
7
+ ```typescript
8
+ function getCurrentTime(
9
+ params: { timeZone?: string; format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions } = {}
10
+ ): Date | number | string
11
+ ```
12
+
13
+ ## 매개변수
14
+
15
+ 이 함수는 객체를 매개변수로 받습니다. 이 객체의 필드에 대한 상세한 정보는 다음과 같습니다:
16
+
17
+ - `timeZone?: string`: 시간을 얻고자 하는 시간대를 나타내는 문자열입니다. 이 값이 주어지지 않으면 사용자의 로컬 시간대가 사용됩니다.
18
+
19
+ - `format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions`: 반환하려는 시간의 형식을 결정합니다. 이 값은 다음 세 가지 중 하나일 수 있습니다:
20
+ - `'timestamp'`: 반환 값이 UNIX 타임스탬프 (1970년 1월 1일 00:00:00 UTC로부터의 밀리초)가 됩니다.
21
+ - `'date'`: 반환 값이 Date 객체가 됩니다.
22
+ - `Intl.DateTimeFormatOptions`: 반환 값이 이 옵션에 따라 포맷된 문자열이 됩니다. 이 값이 제공되지 않으면 기본적으로 Date 객체가 반환됩니다.
23
+
24
+ ## 반환 값
25
+
26
+ 이 함수는 `string | number | Date` 형식의 값을 반환합니다. 반환 값의 형식은 `format` 매개변수에 따라 결정됩니다.
27
+
28
+ ## 예제
29
+
30
+ ```typescript
31
+ const currentTime = getCurrentTime({
32
+ timeZone: 'Asia/Seoul',
33
+ format: 'date'
34
+ })
35
+
36
+ console.log(currentTime)
37
+ ```
38
+
39
+ 이 코드는 현재 시간을 `'Asia/Seoul'` 시간대에서의 Date 객체로 반환합니다.
@@ -0,0 +1,40 @@
1
+ # 함수 설명: getRelativeTime
2
+
3
+ 이 함수는 현재 시간을 기준으로 파라미터로 주어진 상대적인 초의 시간을 제공합니다.
4
+
5
+ ## 함수 시그니처
6
+
7
+ ```typescript
8
+ function getRelativeTime(params: RelativeTimeParams = {}): string | number | Date
9
+ ```
10
+
11
+ ## 매개변수
12
+
13
+ 이 함수는 `RelativeTimeParams`라는 이름의 타입의 매개변수 객체를 받습니다. 이 객체의 필드에 대한 상세한 정보는 다음과 같습니다:
14
+
15
+ - `relativeSeconds?: number`: 상대적인 시간을 나타내는 초 단위의 숫자입니다. 이 값은 현재 시간으로부터의 초 수를 나타냅니다. 예를 들어, 이 값이 3600이면 현재 시간으로부터 1시간 후를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 시간을 의미합니다.
16
+
17
+ - `timeZone?: string`: 시간을 얻고자 하는 시간대를 나타내는 문자열입니다. 이 값이 주어지지 않으면 사용자의 로컬 시간대가 사용됩니다.
18
+
19
+ - `format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions`: 반환하려는 시간의 형식을 결정합니다. 이 값은 다음 세 가지 중 하나일 수 있습니다:
20
+ - `'timestamp'`: 반환 값이 UNIX 타임스탬프 (1970년 1월 1일 00:00:00 UTC로부터의 밀리초)가 됩니다.
21
+ - `'date'`: 반환 값이 Date 객체가 됩니다.
22
+ - `Intl.DateTimeFormatOptions`: 반환 값이 이 옵션에 따라 포맷된 문자열이 됩니다. 이 값이 제공되지 않으면 기본적으로 타임스탬프 값이 반환됩니다.
23
+
24
+ ## 반환 값
25
+
26
+ 이 함수는 `string | number | Date` 형식의 값을 반환합니다. 반환 값의 형식은 `format` 매개변수에 따라 결정됩니다.
27
+
28
+ ## 예제
29
+
30
+ ```typescript
31
+ const relativeTime = getRelativeTime({
32
+ relativeSeconds: 3600,
33
+ timeZone: 'Asia/Seoul',
34
+ format: 'date'
35
+ })
36
+
37
+ console.log(relativeTime)
38
+ ```
39
+
40
+ 이 코드는 현재 시간으로부터 1시간 후의 시간을 `'Asia/Seoul'` 시간대에서의 Date 객체로 반환합니다.
@@ -0,0 +1,39 @@
1
+ # 함수 설명: getToday
2
+
3
+ 이 함수는 오늘 날자의 시작시간을 제공합니다.
4
+
5
+ ## 함수 시그니처
6
+
7
+ ```typescript
8
+ function getToday(
9
+ params: { timeZone?: string; format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions } = {}
10
+ ): Date | number | string
11
+ ```
12
+
13
+ ## 매개변수
14
+
15
+ 이 함수는 객체를 매개변수로 받습니다. 이 객체의 필드에 대한 상세한 정보는 다음과 같습니다:
16
+
17
+ - `timeZone?: string`: 시간을 얻고자 하는 시간대를 나타내는 문자열입니다. 이 값이 주어지지 않으면 사용자의 로컬 시간대가 사용됩니다.
18
+
19
+ - `format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions`: 반환하려는 시간의 형식을 결정합니다. 이 값은 다음 세 가지 중 하나일 수 있습니다:
20
+ - `'timestamp'`: 반환 값이 UNIX 타임스탬프 (1970년 1월 1일 00:00:00 UTC로부터의 밀리초)가 됩니다.
21
+ - `'date'`: 반환 값이 Date 객체가 됩니다.
22
+ - `Intl.DateTimeFormatOptions`: 반환 값이 이 옵션에 따라 포맷된 문자열이 됩니다. 이 값이 제공되지 않으면 기본적으로 Date 객체가 반환됩니다.
23
+
24
+ ## 반환 값
25
+
26
+ 이 함수는 `string | number | Date` 형식의 값을 반환합니다. 반환 값의 형식은 `format` 매개변수에 따라 결정됩니다.
27
+
28
+ ## 예제
29
+
30
+ ```typescript
31
+ const todayDate = getToday({
32
+ timeZone: 'Asia/Seoul',
33
+ format: 'date'
34
+ })
35
+
36
+ console.log(todayDate)
37
+ ```
38
+
39
+ 이 코드는 오늘의 날짜를 `'Asia/Seoul'` 시간대에서의 Date 객체로 반환합니다.
@@ -0,0 +1,43 @@
1
+ # 함수 설명: getRelativeWeekDate
2
+
3
+ 이 함수는 현재 날짜를 기준으로 파라미터로 주어진 상대적인 주(Week)의 상대적인 날짜(Date)의 시작 시간을 제공합니다.
4
+
5
+ ## 함수 시그니처
6
+
7
+ ```typescript
8
+ function getRelativeWeekDate(params: RelativeWeekDateParams = {}): string | number | Date
9
+ ```
10
+
11
+ ## 매개변수
12
+
13
+ 이 함수는 `RelativeWeekDateParams`라는 이름의 타입의 매개변수 객체를 받습니다. 이 객체의 필드에 대한 상세한 정보는 다음과 같습니다:
14
+
15
+ - `relativeWeeks?: number`: 상대적인 주를 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 주 수를 나타냅니다. 예를 들어, 이 값이 3이면 현재 날짜로부터 3주 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 주를 의미합니다.
16
+
17
+ - `relativeDates?: number`: 상대적인 일수를 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 일 수를 나타냅니다. 예를 들어, 이 값이 2이면 현재 날짜로부터 2일 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 날짜를 의미합니다.
18
+
19
+ - `timeZone?: string`: 날짜를 얻고자 하는 시간대를 나타내는 문자열입니다. 이 값이 주어지지 않으면 사용자의 로컬 시간대가 사용됩니다.
20
+
21
+ - `format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions`: 반환하려는 날짜의 형식을 결정합니다. 이 값은 다음 세 가지 중 하나일 수 있습니다:
22
+ - `'timestamp'`: 반환 값이 UNIX 타임스탬프 (1970년 1월 1일 00:00:00 UTC로부터의 밀리초)가 됩니다.
23
+ - `'date'`: 반환 값이 Date 객체가 됩니다.
24
+ - `Intl.DateTimeFormatOptions`: 반환 값이 이 옵션에 따라 포맷된 문자열이 됩니다. 이 값이 제공되지 않으면 기본적으로 타임스탬프 값이 반환됩니다.
25
+
26
+ ## 반환 값
27
+
28
+ 이 함수는 `string | number | Date` 형식의 값을 반환합니다. 반환 값의 형식은 `format` 매개변수에 따라 결정됩니다.
29
+
30
+ ## 예제
31
+
32
+ ```typescript
33
+ const relativeWeekDate = getRelativeWeekDate({
34
+ relativeWeeks: 2,
35
+ relativeDates: 3,
36
+ timeZone: 'Asia/Seoul',
37
+ format: 'date'
38
+ })
39
+
40
+ console.log(relativeWeekDate)
41
+ ```
42
+
43
+ 이 코드는 현재 시간으로부터 2주 후와 3일 후의 날짜를 `'Asia/Seoul'` 시간대에서의 Date 객체로 반환합니다.
@@ -0,0 +1,43 @@
1
+ # 함수 설명: getRelativeYearDate
2
+
3
+ 이 함수는 현재 날짜를 기준으로 파라미터로 주어진 상대적인 해(Year)의 상대적인 날짜(Date)의 시작 시간을 제공합니다.
4
+
5
+ ## 함수 시그니처
6
+
7
+ ```typescript
8
+ function getRelativeYearDate(params: RelativeYearDateParams = {}): string | number | Date
9
+ ```
10
+
11
+ ## 매개변수
12
+
13
+ 이 함수는 `RelativeYearDateParams`라는 이름의 타입의 매개변수 객체를 받습니다. 이 객체의 필드에 대한 상세한 정보는 다음과 같습니다:
14
+
15
+ - `relativeYears?: number`: 상대적인 연도를 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 연도 수를 나타냅니다. 예를 들어, 이 값이 3이면 현재 날짜로부터 3년 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 연도를 의미합니다.
16
+
17
+ - `relativeDates?: number`: 상대적인 일수를 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 일 수를 나타냅니다. 예를 들어, 이 값이 2이면 현재 날짜로부터 2일 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 날짜를 의미합니다.
18
+
19
+ - `timeZone?: string`: 날짜를 얻고자 하는 시간대를 나타내는 문자열입니다. 이 값이 주어지지 않으면 사용자의 로컬 시간대가 사용됩니다.
20
+
21
+ - `format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions`: 반환하려는 날짜의 형식을 결정합니다. 이 값은 다음 세 가지 중 하나일 수 있습니다:
22
+ - `'timestamp'`: 반환 값이 UNIX 타임스탬프 (1970년 1월 1일 00:00:00 UTC로부터의 밀리초)가 됩니다.
23
+ - `'date'`: 반환 값이 Date 객체가 됩니다.
24
+ - `Intl.DateTimeFormatOptions`: 반환 값이 이 옵션에 따라 포맷된 문자열이 됩니다. 이 값이 제공되지 않으면 기본적으로 Date 객체가 반환됩니다.
25
+
26
+ ## 반환 값
27
+
28
+ 이 함수는 `string | number | Date` 형식의 값을 반환합니다. 반환 값의 형식은 `format` 매개변수에 따라 결정됩니다.
29
+
30
+ ## 예제
31
+
32
+ ```typescript
33
+ const relativeYearDate = getRelativeYearDate({
34
+ relativeYears: 2,
35
+ relativeDates: 3,
36
+ timeZone: 'Asia/Seoul',
37
+ format: 'date'
38
+ })
39
+
40
+ console.log(relativeYearDate)
41
+ ```
42
+
43
+ 이 코드는 현재 시간으로부터 2년 후와 3일 후의 날짜를 `'Asia/Seoul'` 시간대에서의 Date 객체로 반환합니다.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@operato/data-grist",
3
- "version": "1.3.4",
3
+ "version": "1.3.11",
4
4
  "description": "User interface for grid (desktop) and list (mobile)",
5
5
  "author": "heartyoh",
6
6
  "main": "dist/index.js",
@@ -57,7 +57,7 @@
57
57
  "dependencies": {
58
58
  "@material/mwc-icon": "^0.27.0",
59
59
  "@operato/headroom": "^1.3.2",
60
- "@operato/input": "^1.3.2",
60
+ "@operato/input": "^1.3.5",
61
61
  "@operato/popup": "^1.3.2",
62
62
  "@operato/pull-to-refresh": "^1.3.2",
63
63
  "@operato/styles": "^1.3.2",
@@ -100,5 +100,5 @@
100
100
  "prettier --write"
101
101
  ]
102
102
  },
103
- "gitHead": "05e81b4a374750b17aafea18d99ea19a45974dd9"
103
+ "gitHead": "4eafc978b1ab42661fd67dc2e30714d266d2c4de"
104
104
  }
@@ -4,6 +4,7 @@ import { customElement, property } from 'lit/decorators.js'
4
4
  import { ZERO_COLUMN, ZERO_RECORD } from '../configure/zero-config'
5
5
  import { DataGridField } from '../data-grid/data-grid-field'
6
6
  import { ColumnConfig, GristRecord } from '../types'
7
+ import { getDefaultValue } from '../value-generator'
7
8
 
8
9
  const STYLE = css`
9
10
  :host {
@@ -106,14 +107,21 @@ export class OxGristEditor extends LitElement {
106
107
  this.addEventListener('mousemove', (e: Event) => e.stopPropagation())
107
108
  this.addEventListener('mouseup', (e: Event) => e.stopPropagation())
108
109
 
109
- const align = this.column.record.align
110
+ const { name = '' } = this.column
111
+ const { align, defaultValue } = this.column.record
112
+
110
113
  if (align) {
111
114
  this.style.textAlign = align
112
115
  this.style.textAlignLast = align /* for select */
113
116
  }
114
117
 
115
- const name = this.column.name || ''
116
- this.value = this._dirtyValue = this.formatForEditor(this.record[name])
118
+ var currentValue = this.record[name]
119
+
120
+ if (typeof currentValue == 'undefined' && defaultValue) {
121
+ currentValue = getDefaultValue(defaultValue, this.record)
122
+ }
123
+
124
+ this.value = this._dirtyValue = this.formatForEditor(currentValue)
117
125
 
118
126
  requestAnimationFrame(() => {
119
127
  this.focus()
@@ -144,13 +152,16 @@ export class OxGristEditor extends LitElement {
144
152
  }
145
153
 
146
154
  _onfocusout() {
147
- if (this._dirtyValue !== this.value) {
155
+ const { name = '' } = this.column
156
+ var currentValue = this.record[name]
157
+
158
+ if (this._dirtyValue !== currentValue) {
148
159
  this.dispatchEvent(
149
160
  new CustomEvent('field-change', {
150
161
  bubbles: true,
151
162
  composed: true,
152
163
  detail: {
153
- before: this.value,
164
+ before: currentValue,
154
165
  after: this._dirtyValue,
155
166
  column: this.column,
156
167
  record: this.record,
package/src/index.ts CHANGED
@@ -12,5 +12,6 @@ export * from './gutters'
12
12
  export * from './filters'
13
13
  export * from './sorters/sorters-control'
14
14
  export * from './record-view'
15
+ export * from './value-generator'
15
16
 
16
17
  export * from './utils/list-param'
package/src/types.ts CHANGED
@@ -151,6 +151,21 @@ export type HeaderConfig = {
151
151
  }
152
152
  export type HeaderRenderer = (column: ColumnConfig) => any
153
153
 
154
+ export type ValueGeneratorFn = (...args: any[]) => any
155
+ export type DefaultValueFnConfig =
156
+ | {
157
+ /**
158
+ * The name of the default value function to be used for the column.
159
+ */
160
+ name: string
161
+
162
+ /**
163
+ * The parameters to be passed to the default value function.
164
+ */
165
+ params?: any[]
166
+ }
167
+ | Function
168
+
154
169
  export type RecordConfig = {
155
170
  renderer: FieldRenderer
156
171
  editor?: FieldEditor
@@ -160,6 +175,7 @@ export type RecordConfig = {
160
175
  align?: 'left' | 'right' | 'center'
161
176
  options: { [key: string]: any }
162
177
  rowOptionField?: string
178
+ defaultValue?: DefaultValueFnConfig
163
179
  [extended: string]: any
164
180
  }
165
181
 
@@ -0,0 +1,35 @@
1
+ export type RelativeDateParams = {
2
+ relativeDate?: number
3
+ timeZone?: string
4
+ format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions
5
+ }
6
+
7
+ export const getRelativeDate = (params: RelativeDateParams = {}): Date | number | string => {
8
+ const { relativeDate = 0, timeZone, format } = params
9
+ const relativeSeconds = relativeDate * 24 * 60 * 60
10
+
11
+ const now = new Date()
12
+ let currentDate: Date
13
+
14
+ if (timeZone) {
15
+ const options: Intl.DateTimeFormatOptions = { timeZone }
16
+ const currentDateISOString = now.toLocaleString('en-US', options).split(',')[0]
17
+ currentDate = new Date(currentDateISOString)
18
+ } else {
19
+ currentDate = now
20
+ }
21
+
22
+ const startOfDay = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate())
23
+ const targetTime = startOfDay.getTime() + relativeSeconds * 1000
24
+
25
+ if (format === 'date') {
26
+ return new Date(targetTime)
27
+ } else if (format === 'timestamp') {
28
+ return targetTime
29
+ } else if (format) {
30
+ const formatter = new Intl.DateTimeFormat(undefined, format)
31
+ return formatter.format(new Date(targetTime))
32
+ } else {
33
+ return new Date(targetTime)
34
+ }
35
+ }
@@ -0,0 +1,43 @@
1
+ export type RelativeHourTimeParams = {
2
+ timeZone?: string
3
+ format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions
4
+ relativeHour?: number
5
+ relativeSeconds?: number
6
+ }
7
+
8
+ export const getRelativeHourTime = (params: RelativeHourTimeParams = {}): Date | number | string => {
9
+ const { relativeHour = 0, relativeSeconds = 0, timeZone, format } = params
10
+
11
+ const now = new Date()
12
+ let currentDate: Date
13
+
14
+ if (timeZone) {
15
+ const options: Intl.DateTimeFormatOptions = { timeZone }
16
+ const currentDateISOString = now.toLocaleString('en-US', options).split(',')[0]
17
+ currentDate = new Date(currentDateISOString)
18
+ } else {
19
+ currentDate = now
20
+ }
21
+
22
+ const startOfHour = new Date(
23
+ currentDate.getFullYear(),
24
+ currentDate.getMonth(),
25
+ currentDate.getDate(),
26
+ currentDate.getHours(),
27
+ 0,
28
+ 0,
29
+ 0
30
+ )
31
+ const targetTime = startOfHour.getTime() + relativeHour * 60 * 60 * 1000 + relativeSeconds * 1000
32
+
33
+ if (format === 'date') {
34
+ return new Date(targetTime)
35
+ } else if (format === 'timestamp') {
36
+ return targetTime
37
+ } else if (format) {
38
+ const formatter = new Intl.DateTimeFormat(undefined, format)
39
+ return formatter.format(new Date(targetTime))
40
+ } else {
41
+ return new Date(targetTime)
42
+ }
43
+ }
@@ -0,0 +1 @@
1
+ export * from './registry'
@@ -0,0 +1,43 @@
1
+ export type RelativeMinuteTimeParams = {
2
+ timeZone?: string
3
+ format?: 'timestamp' | 'date' | Intl.DateTimeFormatOptions
4
+ relativeMinutes?: number
5
+ relativeSeconds?: number
6
+ }
7
+
8
+ export const getRelativeMinuteTime = (params: RelativeMinuteTimeParams = {}): Date | number | string => {
9
+ const { relativeMinutes = 0, relativeSeconds = 0, timeZone, format } = params
10
+
11
+ const now = new Date()
12
+ let currentDate: Date
13
+
14
+ if (timeZone) {
15
+ const options: Intl.DateTimeFormatOptions = { timeZone }
16
+ const currentDateISOString = now.toLocaleString('en-US', options).split(',')[0]
17
+ currentDate = new Date(currentDateISOString)
18
+ } else {
19
+ currentDate = now
20
+ }
21
+
22
+ const startOfMinute = new Date(
23
+ currentDate.getFullYear(),
24
+ currentDate.getMonth(),
25
+ currentDate.getDate(),
26
+ currentDate.getHours(),
27
+ currentDate.getMinutes(),
28
+ 0,
29
+ 0
30
+ )
31
+ const targetTime = startOfMinute.getTime() + relativeMinutes * 60 * 1000 + relativeSeconds * 1000
32
+
33
+ if (format === 'date') {
34
+ return new Date(targetTime)
35
+ } else if (format === 'timestamp') {
36
+ return targetTime
37
+ } else if (format) {
38
+ const formatter = new Intl.DateTimeFormat(undefined, format)
39
+ return formatter.format(new Date(targetTime))
40
+ } else {
41
+ return new Date(targetTime)
42
+ }
43
+ }