@operato/data-grist 2.0.0-alpha.98 → 2.0.0-beta.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.
- package/CHANGELOG.md +441 -0
- package/demo/data-grist-test.html +1 -1
- package/demo/index.html +1 -1
- package/dist/src/data-card/data-card-field.js +2 -2
- package/dist/src/data-card/data-card-field.js.map +1 -1
- package/dist/src/data-card/data-card-gutter-menu.js +5 -5
- package/dist/src/data-card/data-card-gutter-menu.js.map +1 -1
- package/dist/src/data-card/data-card-gutter.js +6 -6
- package/dist/src/data-card/data-card-gutter.js.map +1 -1
- package/dist/src/data-card/data-card.js +7 -9
- package/dist/src/data-card/data-card.js.map +1 -1
- package/dist/src/data-card/record-card.js +9 -10
- package/dist/src/data-card/record-card.js.map +1 -1
- package/dist/src/data-grid/data-grid-accum-field.js +12 -5
- package/dist/src/data-grid/data-grid-accum-field.js.map +1 -1
- package/dist/src/data-grid/data-grid-body-style.js +12 -0
- package/dist/src/data-grid/data-grid-body-style.js.map +1 -1
- package/dist/src/data-grid/data-grid-body.d.ts +0 -1
- package/dist/src/data-grid/data-grid-body.js +14 -21
- package/dist/src/data-grid/data-grid-body.js.map +1 -1
- package/dist/src/data-grid/data-grid-field.js +8 -2
- package/dist/src/data-grid/data-grid-field.js.map +1 -1
- package/dist/src/data-grid/data-grid-footer.js +4 -2
- package/dist/src/data-grid/data-grid-footer.js.map +1 -1
- package/dist/src/data-grid/data-grid-header.js +9 -6
- package/dist/src/data-grid/data-grid-header.js.map +1 -1
- package/dist/src/data-grid/data-grid.js +23 -1
- package/dist/src/data-grid/data-grid.js.map +1 -1
- package/dist/src/data-grid/event-handlers/data-grid-body-click-handler.js +3 -0
- package/dist/src/data-grid/event-handlers/data-grid-body-click-handler.js.map +1 -1
- package/dist/src/data-grist.d.ts +10 -2
- package/dist/src/data-grist.js +71 -8
- package/dist/src/data-grist.js.map +1 -1
- package/dist/src/data-list/data-list-field.js +5 -5
- package/dist/src/data-list/data-list-field.js.map +1 -1
- package/dist/src/data-list/data-list-gutter.js +3 -3
- package/dist/src/data-list/data-list-gutter.js.map +1 -1
- package/dist/src/data-list/data-list.js +4 -4
- package/dist/src/data-list/data-list.js.map +1 -1
- package/dist/src/data-list/record-partial.js +9 -10
- package/dist/src/data-list/record-partial.js.map +1 -1
- package/dist/src/data-manipulator.d.ts +1 -1
- package/dist/src/data-manipulator.js +5 -5
- package/dist/src/data-manipulator.js.map +1 -1
- package/dist/src/data-report/data-report-field.js +2 -1
- package/dist/src/data-report/data-report-field.js.map +1 -1
- package/dist/src/data-report/data-report-header.js +2 -2
- package/dist/src/data-report/data-report-header.js.map +1 -1
- package/dist/src/editors/ox-grist-editor-select.js +37 -25
- package/dist/src/editors/ox-grist-editor-select.js.map +1 -1
- package/dist/src/editors/ox-input-tree.js +8 -8
- package/dist/src/editors/ox-input-tree.js.map +1 -1
- package/dist/src/filters/filter-input-barcode.js +1 -0
- package/dist/src/filters/filter-input-barcode.js.map +1 -1
- package/dist/src/filters/filter-select.js +30 -16
- package/dist/src/filters/filter-select.js.map +1 -1
- package/dist/src/filters/filter-styles.js +46 -31
- package/dist/src/filters/filter-styles.js.map +1 -1
- package/dist/src/filters/filters-form.d.ts +15 -4
- package/dist/src/filters/filters-form.js +205 -70
- package/dist/src/filters/filters-form.js.map +1 -1
- package/dist/src/gutters/gutter-dirty.js +2 -2
- package/dist/src/gutters/gutter-dirty.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/personalizer/index.d.ts +1 -0
- package/dist/src/personalizer/index.js +2 -0
- package/dist/src/personalizer/index.js.map +1 -0
- package/dist/src/personalizer/ox-grist-filter-personalizer.d.ts +8 -0
- package/dist/src/personalizer/ox-grist-filter-personalizer.js +177 -0
- package/dist/src/personalizer/ox-grist-filter-personalizer.js.map +1 -0
- package/dist/src/personalizer/ox-grist-personalizer.d.ts +8 -0
- package/dist/src/personalizer/ox-grist-personalizer.js +178 -0
- package/dist/src/personalizer/ox-grist-personalizer.js.map +1 -0
- package/dist/src/record-view/record-creator.js +2 -2
- package/dist/src/record-view/record-creator.js.map +1 -1
- package/dist/src/renderers/ox-grist-renderer-select.js +34 -4
- package/dist/src/renderers/ox-grist-renderer-select.js.map +1 -1
- package/dist/src/renderers/ox-grist-renderer-tree.js +8 -8
- package/dist/src/renderers/ox-grist-renderer-tree.js.map +1 -1
- package/dist/src/sorters/sorters-control.js +3 -3
- package/dist/src/sorters/sorters-control.js.map +1 -1
- package/dist/src/types.d.ts +41 -2
- package/dist/src/types.js.map +1 -1
- package/dist/stories/{accumulator.stories.d.ts → accumulator-format.stories.d.ts} +9 -0
- package/dist/stories/{accumulator.stories.js → accumulator-format.stories.js} +24 -12
- package/dist/stories/accumulator-format.stories.js.map +1 -0
- package/dist/stories/barcode-input-filter.stories.d.ts +5 -0
- package/dist/stories/barcode-input-filter.stories.js +29 -5
- package/dist/stories/barcode-input-filter.stories.js.map +1 -1
- package/dist/stories/bounded-select-filters.stories.d.ts +30 -0
- package/dist/stories/bounded-select-filters.stories.js +288 -0
- package/dist/stories/bounded-select-filters.stories.js.map +1 -0
- package/dist/stories/bounded-select-record.stories.d.ts +30 -0
- package/dist/stories/bounded-select-record.stories.js +291 -0
- package/dist/stories/bounded-select-record.stories.js.map +1 -0
- package/dist/stories/click-event.stories.d.ts +41 -0
- package/dist/stories/click-event.stories.js +234 -0
- package/dist/stories/click-event.stories.js.map +1 -0
- package/dist/stories/creatable-only-column.stories.d.ts +5 -0
- package/dist/stories/creatable-only-column.stories.js +46 -21
- package/dist/stories/creatable-only-column.stories.js.map +1 -1
- package/dist/stories/default-filters.stories.d.ts +5 -0
- package/dist/stories/default-filters.stories.js +84 -17
- package/dist/stories/default-filters.stories.js.map +1 -1
- package/dist/stories/dynamic-editable.stories.d.ts +5 -0
- package/dist/stories/dynamic-editable.stories.js +44 -21
- package/dist/stories/dynamic-editable.stories.js.map +1 -1
- package/dist/stories/empty-sorters.stories.d.ts +7 -1
- package/dist/stories/empty-sorters.stories.js +41 -17
- package/dist/stories/empty-sorters.stories.js.map +1 -1
- package/dist/stories/explicit-fetch.stories.d.ts +5 -0
- package/dist/stories/explicit-fetch.stories.js +40 -17
- package/dist/stories/explicit-fetch.stories.js.map +1 -1
- package/dist/stories/fixed-column.stories.d.ts +5 -0
- package/dist/stories/fixed-column.stories.js +53 -30
- package/dist/stories/fixed-column.stories.js.map +1 -1
- package/dist/stories/grid-setting.stories.d.ts +20 -4
- package/dist/stories/grid-setting.stories.js +96 -51
- package/dist/stories/grid-setting.stories.js.map +1 -1
- package/dist/stories/grist-modes.stories.d.ts +8 -2
- package/dist/stories/grist-modes.stories.js +58 -35
- package/dist/stories/grist-modes.stories.js.map +1 -1
- package/dist/stories/group-header.stories.d.ts +5 -0
- package/dist/stories/group-header.stories.js +53 -30
- package/dist/stories/group-header.stories.js.map +1 -1
- package/dist/stories/textarea.stories.d.ts +8 -2
- package/dist/stories/textarea.stories.js +37 -13
- package/dist/stories/textarea.stories.js.map +1 -1
- package/dist/stories/tree-column-with-checkbox.stories.d.ts +5 -0
- package/dist/stories/tree-column-with-checkbox.stories.js +44 -21
- package/dist/stories/tree-column-with-checkbox.stories.js.map +1 -1
- package/dist/stories/tree-column.stories.d.ts +5 -0
- package/dist/stories/tree-column.stories.js +44 -21
- package/dist/stories/tree-column.stories.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/docs/default-value/value-generator/date-generator.md +29 -0
- package/docs/default-value/value-generator/hour-time-generator.md +33 -0
- package/docs/default-value/value-generator/minute-time-generator.md +33 -0
- package/docs/default-value/value-generator/month-date-generator.md +2 -0
- package/docs/default-value/value-generator/now-generator.md +29 -0
- package/docs/default-value/value-generator/time-generator.md +31 -0
- package/docs/default-value/value-generator/today-generator.md +29 -0
- package/docs/default-value/value-generator/week-date-generator.md +31 -0
- package/docs/default-value/value-generator/year-date-generator.md +31 -0
- package/package.json +15 -10
- package/src/data-card/data-card-field.ts +2 -2
- package/src/data-card/data-card-gutter-menu.ts +5 -5
- package/src/data-card/data-card-gutter.ts +6 -6
- package/src/data-card/data-card.ts +7 -9
- package/src/data-card/record-card.ts +9 -10
- package/src/data-grid/data-grid-accum-field.ts +11 -5
- package/src/data-grid/data-grid-body-style.ts +12 -0
- package/src/data-grid/data-grid-body.ts +16 -29
- package/src/data-grid/data-grid-field.ts +7 -2
- package/src/data-grid/data-grid-footer.ts +4 -2
- package/src/data-grid/data-grid-header.ts +8 -6
- package/src/data-grid/data-grid.ts +23 -1
- package/src/data-grid/event-handlers/data-grid-body-click-handler.ts +4 -0
- package/src/data-grist.ts +88 -8
- package/src/data-list/data-list-field.ts +5 -5
- package/src/data-list/data-list-gutter.ts +3 -3
- package/src/data-list/data-list.ts +4 -4
- package/src/data-list/record-partial.ts +9 -10
- package/src/data-manipulator.ts +5 -5
- package/src/data-report/data-report-field.ts +2 -1
- package/src/data-report/data-report-header.ts +2 -2
- package/src/editors/ox-grist-editor-select.ts +41 -28
- package/src/editors/ox-input-tree.ts +8 -8
- package/src/filters/filter-input-barcode.ts +1 -0
- package/src/filters/filter-select.ts +41 -28
- package/src/filters/filter-styles.ts +46 -31
- package/src/filters/filters-form.ts +273 -119
- package/src/gutters/gutter-dirty.ts +2 -2
- package/src/index.ts +1 -0
- package/src/personalizer/index.ts +1 -0
- package/src/personalizer/ox-grist-filter-personalizer.ts +191 -0
- package/src/personalizer/ox-grist-personalizer.ts +192 -0
- package/src/record-view/record-creator.ts +2 -2
- package/src/renderers/ox-grist-renderer-select.ts +41 -6
- package/src/renderers/ox-grist-renderer-tree.ts +8 -8
- package/src/sorters/sorters-control.ts +3 -3
- package/src/types.ts +53 -2
- package/stories/{accumulator.stories.ts → accumulator-format.stories.ts} +33 -12
- package/stories/barcode-input-filter.stories.ts +31 -6
- package/stories/bounded-select-filters.stories.ts +339 -0
- package/stories/bounded-select-record.stories.ts +342 -0
- package/stories/click-event.stories.ts +269 -0
- package/stories/creatable-only-column.stories.ts +54 -28
- package/stories/default-filters.stories.ts +92 -24
- package/stories/dynamic-editable.stories.ts +52 -28
- package/stories/empty-sorters.stories.ts +51 -25
- package/stories/explicit-fetch.stories.ts +48 -24
- package/stories/fixed-column.stories.ts +62 -39
- package/stories/grid-setting.stories.ts +120 -63
- package/stories/grist-modes.stories.ts +74 -46
- package/stories/group-header.stories.ts +61 -39
- package/stories/textarea.stories.ts +49 -17
- package/stories/tree-column-with-checkbox.stories.ts +52 -28
- package/stories/tree-column.stories.ts +52 -28
- package/themes/dark-hc.css +151 -0
- package/themes/dark-mc.css +151 -0
- package/themes/dark.css +151 -0
- package/themes/grist-theme.css +103 -100
- package/themes/light-hc.css +151 -0
- package/themes/light-mc.css +151 -0
- package/themes/light.css +151 -0
- package/themes/md-typescale-styles.css +100 -0
- package/themes/spacing.css +43 -0
- package/themes/state-color.css +6 -0
- package/dist/stories/accumulator.stories.js.map +0 -1
- package/themes/app-theme.css +0 -145
- package/themes/form-theme.css +0 -75
- package/themes/oops-theme.css +0 -26
- package/themes/report-theme.css +0 -47
@@ -30,14 +30,47 @@ function getRelativeHourTime(params: RelativeHourTimeParams = {}): string | numb
|
|
30
30
|
## 예제
|
31
31
|
|
32
32
|
```typescript
|
33
|
+
/* get Date() object */
|
33
34
|
const relativeHourTime = getRelativeHourTime({
|
34
35
|
relativeHour: 2,
|
35
36
|
relativeSeconds: 120,
|
36
37
|
timeZone: 'Asia/Seoul',
|
38
|
+
loclae: 'en-CA',
|
37
39
|
format: 'date'
|
38
40
|
})
|
39
41
|
|
40
42
|
console.log(relativeHourTime)
|
41
43
|
```
|
42
44
|
|
45
|
+
```typescript
|
46
|
+
/* text format style */
|
47
|
+
const relativeHourTime = getRelativeHourTime({
|
48
|
+
relativeHour: 2,
|
49
|
+
relativeSeconds: 120,
|
50
|
+
timeZone: 'Asia/Seoul',
|
51
|
+
format: 'h:mm:ss'
|
52
|
+
})
|
53
|
+
|
54
|
+
console.log(relativeHourTime)
|
55
|
+
```
|
56
|
+
|
57
|
+
```typescript
|
58
|
+
/* Intl.DateTimeFormat style */
|
59
|
+
const relativeHourTime = getRelativeHourTime({
|
60
|
+
relativeHour: 2,
|
61
|
+
relativeSeconds: 120,
|
62
|
+
timeZone: 'Asia/Seoul',
|
63
|
+
loclae: 'en-CA',
|
64
|
+
format: {
|
65
|
+
hour: 'numeric',
|
66
|
+
minute: 'numeric',
|
67
|
+
second: 'numeric',
|
68
|
+
hour12: false,
|
69
|
+
timeZone: 'America/Los_Angeles'
|
70
|
+
}
|
71
|
+
})
|
72
|
+
|
73
|
+
console.log(relativeHourTime)
|
74
|
+
```
|
75
|
+
|
43
76
|
이 코드는 현재 시간으로부터 2시간 후와 2분 후의 시간을 `'Asia/Seoul'` 시간대에서의 Date 객체로 반환합니다.
|
@@ -30,14 +30,47 @@ function getRelativeMinuteTime(params: RelativeMinuteTimeParams = {}): string |
|
|
30
30
|
## 예제
|
31
31
|
|
32
32
|
```typescript
|
33
|
+
/* get Date() object */
|
33
34
|
const relativeMinuteTime = getRelativeMinuteTime({
|
34
35
|
relativeMinutes: 15,
|
35
36
|
relativeSeconds: 30,
|
36
37
|
timeZone: 'Asia/Seoul',
|
38
|
+
loclae: 'en-CA',
|
37
39
|
format: 'date'
|
38
40
|
})
|
39
41
|
|
40
42
|
console.log(relativeMinuteTime)
|
41
43
|
```
|
42
44
|
|
45
|
+
```typescript
|
46
|
+
/* text format style */
|
47
|
+
const relativeMinuteTime = getRelativeMinuteTime({
|
48
|
+
relativeMinutes: 15,
|
49
|
+
relativeSeconds: 30,
|
50
|
+
timeZone: 'Asia/Seoul',
|
51
|
+
format: 'mm:ss'
|
52
|
+
})
|
53
|
+
|
54
|
+
console.log(relativeMinuteTime)
|
55
|
+
```
|
56
|
+
|
57
|
+
```typescript
|
58
|
+
/* Intl.DateTimeFormat style */
|
59
|
+
const relativeMinuteTime = getRelativeMinuteTime({
|
60
|
+
relativeMinutes: 15,
|
61
|
+
relativeSeconds: 30,
|
62
|
+
timeZone: 'Asia/Seoul',
|
63
|
+
loclae: 'en-CA',
|
64
|
+
format: {
|
65
|
+
hour: 'numeric',
|
66
|
+
minute: 'numeric',
|
67
|
+
second: 'numeric',
|
68
|
+
hour12: false,
|
69
|
+
timeZone: 'America/Los_Angeles'
|
70
|
+
}
|
71
|
+
})
|
72
|
+
|
73
|
+
console.log(relativeMinuteTime)
|
74
|
+
```
|
75
|
+
|
43
76
|
이 코드는 현재 시간으로부터 15분 30초 후의 시간을 `'Asia/Seoul'` 시간대에서의 Date 객체로 반환합니다.
|
@@ -30,10 +30,12 @@ function getRelativeMonthDate(params: RelativeMonthDateParams = {}): string | nu
|
|
30
30
|
## 예제
|
31
31
|
|
32
32
|
```typescript
|
33
|
+
/* get Date() object */
|
33
34
|
const relativeMonthDate = getRelativeMonthDate({
|
34
35
|
relativeMonths: 2,
|
35
36
|
relativeDays: 3,
|
36
37
|
timeZone: 'Asia/Seoul',
|
38
|
+
loclae: 'en-CA',
|
37
39
|
format: 'date'
|
38
40
|
})
|
39
41
|
|
@@ -28,12 +28,41 @@ function getCurrentTime(
|
|
28
28
|
## 예제
|
29
29
|
|
30
30
|
```typescript
|
31
|
+
/* get Date() object */
|
31
32
|
const currentTime = getCurrentTime({
|
32
33
|
timeZone: 'Asia/Seoul',
|
34
|
+
loclae: 'en-CA',
|
33
35
|
format: 'date'
|
34
36
|
})
|
35
37
|
|
36
38
|
console.log(currentTime)
|
37
39
|
```
|
38
40
|
|
41
|
+
```typescript
|
42
|
+
/* text format style */
|
43
|
+
const relativeDate = getCurrentTime({
|
44
|
+
relativeDays: 1,
|
45
|
+
timeZone: 'Asia/Seoul',
|
46
|
+
format: 'YYYY-MM-DD'
|
47
|
+
})
|
48
|
+
|
49
|
+
console.log(relativeDate)
|
50
|
+
```
|
51
|
+
|
52
|
+
```typescript
|
53
|
+
/* Intl.DateTimeFormat style */
|
54
|
+
const relativeDate = getCurrentTime({
|
55
|
+
relativeDays: 1,
|
56
|
+
timeZone: 'Asia/Seoul',
|
57
|
+
loclae: 'en-CA' /* YYYY-MM-DD format */,
|
58
|
+
format: {
|
59
|
+
year: 'numeric',
|
60
|
+
month: '2-digit',
|
61
|
+
day: '2-digit'
|
62
|
+
}
|
63
|
+
})
|
64
|
+
|
65
|
+
console.log(relativeDate)
|
66
|
+
```
|
67
|
+
|
39
68
|
이 코드는 현재 시간을 `'Asia/Seoul'` 시간대에서의 Date 객체로 반환합니다.
|
@@ -28,13 +28,44 @@ function getRelativeTime(params: RelativeTimeParams = {}): string | number | Dat
|
|
28
28
|
## 예제
|
29
29
|
|
30
30
|
```typescript
|
31
|
+
/* get Date() object */
|
31
32
|
const relativeTime = getRelativeTime({
|
32
33
|
relativeSeconds: 3600,
|
33
34
|
timeZone: 'Asia/Seoul',
|
35
|
+
loclae: 'en-CA',
|
34
36
|
format: 'date'
|
35
37
|
})
|
36
38
|
|
37
39
|
console.log(relativeTime)
|
38
40
|
```
|
39
41
|
|
42
|
+
```typescript
|
43
|
+
/* text format style */
|
44
|
+
const relativeTime = getRelativeTime({
|
45
|
+
relativeSeconds: 3600,
|
46
|
+
timeZone: 'Asia/Seoul',
|
47
|
+
format: 'hh:mm:ss'
|
48
|
+
})
|
49
|
+
|
50
|
+
console.log(relativeTime)
|
51
|
+
```
|
52
|
+
|
53
|
+
```typescript
|
54
|
+
/* Intl.DateTimeFormat style */
|
55
|
+
const relativeTime = getRelativeTime({
|
56
|
+
relativeSeconds: 3600,
|
57
|
+
timeZone: 'Asia/Seoul',
|
58
|
+
loclae: 'en-CA',
|
59
|
+
format: {
|
60
|
+
hour: 'numeric',
|
61
|
+
minute: 'numeric',
|
62
|
+
second: 'numeric',
|
63
|
+
hour12: false,
|
64
|
+
timeZone: 'America/Los_Angeles'
|
65
|
+
}
|
66
|
+
})
|
67
|
+
|
68
|
+
console.log(relativeTime)
|
69
|
+
```
|
70
|
+
|
40
71
|
이 코드는 현재 시간으로부터 1시간 후의 시간을 `'Asia/Seoul'` 시간대에서의 Date 객체로 반환합니다.
|
@@ -28,12 +28,41 @@ function getToday(
|
|
28
28
|
## 예제
|
29
29
|
|
30
30
|
```typescript
|
31
|
+
/* get Date() object */
|
31
32
|
const todayDate = getToday({
|
32
33
|
timeZone: 'Asia/Seoul',
|
34
|
+
loclae: 'en-CA',
|
33
35
|
format: 'date'
|
34
36
|
})
|
35
37
|
|
36
38
|
console.log(todayDate)
|
37
39
|
```
|
38
40
|
|
41
|
+
```typescript
|
42
|
+
/* text format style */
|
43
|
+
const relativeDate = getToday({
|
44
|
+
relativeDays: 1,
|
45
|
+
timeZone: 'Asia/Seoul',
|
46
|
+
format: 'YYYY-MM-DD'
|
47
|
+
})
|
48
|
+
|
49
|
+
console.log(relativeDate)
|
50
|
+
```
|
51
|
+
|
52
|
+
```typescript
|
53
|
+
/* Intl.DateTimeFormat style */
|
54
|
+
const relativeDate = getToday({
|
55
|
+
relativeDays: 1,
|
56
|
+
timeZone: 'Asia/Seoul',
|
57
|
+
loclae: 'en-CA' /* YYYY-MM-DD format */,
|
58
|
+
format: {
|
59
|
+
year: 'numeric',
|
60
|
+
month: '2-digit',
|
61
|
+
day: '2-digit'
|
62
|
+
}
|
63
|
+
})
|
64
|
+
|
65
|
+
console.log(relativeDate)
|
66
|
+
```
|
67
|
+
|
39
68
|
이 코드는 오늘의 날짜를 `'Asia/Seoul'` 시간대에서의 Date 객체로 반환합니다.
|
@@ -30,14 +30,45 @@ function getRelativeWeekDate(params: RelativeWeekDateParams = {}): string | numb
|
|
30
30
|
## 예제
|
31
31
|
|
32
32
|
```typescript
|
33
|
+
/* get Date() object */
|
33
34
|
const relativeWeekDate = getRelativeWeekDate({
|
34
35
|
relativeWeeks: 2,
|
35
36
|
relativeDays: 3,
|
36
37
|
timeZone: 'Asia/Seoul',
|
38
|
+
loclae: 'en-CA',
|
37
39
|
format: 'date'
|
38
40
|
})
|
39
41
|
|
40
42
|
console.log(relativeWeekDate)
|
41
43
|
```
|
42
44
|
|
45
|
+
```typescript
|
46
|
+
/* text format style */
|
47
|
+
const relativeWeekDate = getRelativeWeekDate({
|
48
|
+
relativeWeeks: 2,
|
49
|
+
relativeDays: 3,
|
50
|
+
timeZone: 'Asia/Seoul',
|
51
|
+
format: 'YYYY-MM-DD'
|
52
|
+
})
|
53
|
+
|
54
|
+
console.log(relativeWeekDate)
|
55
|
+
```
|
56
|
+
|
57
|
+
```typescript
|
58
|
+
/* Intl.DateTimeFormat style */
|
59
|
+
const relativeWeekDate = getRelativeWeekDate({
|
60
|
+
relativeWeeks: 2,
|
61
|
+
relativeDays: 3,
|
62
|
+
timeZone: 'Asia/Seoul',
|
63
|
+
loclae: 'en-CA' /* YYYY-MM-DD format */,
|
64
|
+
format: {
|
65
|
+
year: 'numeric',
|
66
|
+
month: '2-digit',
|
67
|
+
day: '2-digit'
|
68
|
+
}
|
69
|
+
})
|
70
|
+
|
71
|
+
console.log(relativeWeekDate)
|
72
|
+
```
|
73
|
+
|
43
74
|
이 코드는 현재 시간으로부터 2주 후와 3일 후의 날짜를 `'Asia/Seoul'` 시간대에서의 Date 객체로 반환합니다.
|
@@ -30,14 +30,45 @@ function getRelativeYearDate(params: RelativeYearDateParams = {}): string | numb
|
|
30
30
|
## 예제
|
31
31
|
|
32
32
|
```typescript
|
33
|
+
/* get Date() object */
|
33
34
|
const relativeYearDate = getRelativeYearDate({
|
34
35
|
relativeYears: 2,
|
35
36
|
relativeDays: 3,
|
36
37
|
timeZone: 'Asia/Seoul',
|
38
|
+
loclae: 'en-CA',
|
37
39
|
format: 'date'
|
38
40
|
})
|
39
41
|
|
40
42
|
console.log(relativeYearDate)
|
41
43
|
```
|
42
44
|
|
45
|
+
```typescript
|
46
|
+
/* text format style */
|
47
|
+
const relativeYearDate = getRelativeYearDate({
|
48
|
+
relativeYears: 2,
|
49
|
+
relativeDays: 3,
|
50
|
+
timeZone: 'Asia/Seoul',
|
51
|
+
format: 'YYYY-MM-DD'
|
52
|
+
})
|
53
|
+
|
54
|
+
console.log(relativeYearDate)
|
55
|
+
```
|
56
|
+
|
57
|
+
```typescript
|
58
|
+
/* Intl.DateTimeFormat style */
|
59
|
+
const relativeYearDate = getRelativeYearDate({
|
60
|
+
relativeYears: 2,
|
61
|
+
relativeDays: 3,
|
62
|
+
timeZone: 'Asia/Seoul',
|
63
|
+
loclae: 'en-CA' /* YYYY-MM-DD format */,
|
64
|
+
format: {
|
65
|
+
year: 'numeric',
|
66
|
+
month: '2-digit',
|
67
|
+
day: '2-digit'
|
68
|
+
}
|
69
|
+
})
|
70
|
+
|
71
|
+
console.log(relativeYearDate)
|
72
|
+
```
|
73
|
+
|
43
74
|
이 코드는 현재 시간으로부터 2년 후와 3일 후의 날짜를 `'Asia/Seoul'` 시간대에서의 Date 객체로 반환합니다.
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@operato/data-grist",
|
3
|
-
"version": "2.0.0-
|
3
|
+
"version": "2.0.0-beta.0",
|
4
4
|
"description": "User interface for grid (desktop) and list (mobile)",
|
5
5
|
"author": "heartyoh",
|
6
6
|
"main": "dist/index.js",
|
@@ -21,7 +21,8 @@
|
|
21
21
|
"./ox-report.js": "./dist/src/data-report.js",
|
22
22
|
"./ox-filters-form.js": "./dist/src/filters/filters-form.js",
|
23
23
|
"./ox-sorters-control.js": "./dist/src/sorters/sorters-control.js",
|
24
|
-
"./ox-record-creator.js": "./dist/src/record-view/record-creator.js"
|
24
|
+
"./ox-record-creator.js": "./dist/src/record-view/record-creator.js",
|
25
|
+
"./ox-grist-personalizer.js": "./dist/src/personalizer/ox-grist-personalizer.js"
|
25
26
|
},
|
26
27
|
"typesVersions": {
|
27
28
|
"*": {
|
@@ -39,6 +40,9 @@
|
|
39
40
|
],
|
40
41
|
"ox-record-creator.js": [
|
41
42
|
"dist/src/record-view/record-creator.d.ts"
|
43
|
+
],
|
44
|
+
"ox-grist-personalizer.js": [
|
45
|
+
"dist/src/personalizer/ox-grist-personalizer.d.ts"
|
42
46
|
]
|
43
47
|
}
|
44
48
|
},
|
@@ -56,13 +60,14 @@
|
|
56
60
|
},
|
57
61
|
"dependencies": {
|
58
62
|
"@material/web": "^1.4.0",
|
59
|
-
"@operato/headroom": "^2.0.0-
|
60
|
-
"@operato/input": "^2.0.0-
|
61
|
-
"@operato/
|
62
|
-
"@operato/
|
63
|
-
"@operato/
|
64
|
-
"@operato/
|
65
|
-
"@operato/
|
63
|
+
"@operato/headroom": "^2.0.0-beta.0",
|
64
|
+
"@operato/input": "^2.0.0-beta.0",
|
65
|
+
"@operato/p13n": "^2.0.0-beta.0",
|
66
|
+
"@operato/popup": "^2.0.0-beta.0",
|
67
|
+
"@operato/pull-to-refresh": "^2.0.0-beta.0",
|
68
|
+
"@operato/styles": "^2.0.0-beta.0",
|
69
|
+
"@operato/time-calculator": "^2.0.0-beta.0",
|
70
|
+
"@operato/utils": "^2.0.0-beta.0",
|
66
71
|
"i18next": "^21.5.4",
|
67
72
|
"json5": "^2.2.0",
|
68
73
|
"lit": "^3.1.2",
|
@@ -101,5 +106,5 @@
|
|
101
106
|
"prettier --write"
|
102
107
|
]
|
103
108
|
},
|
104
|
-
"gitHead": "
|
109
|
+
"gitHead": "1c7306d2c3170b773e16d5d4ef79b490584d5441"
|
105
110
|
}
|
@@ -34,7 +34,7 @@ export class DataCardField extends LitElement {
|
|
34
34
|
}
|
35
35
|
|
36
36
|
:host > * {
|
37
|
-
margin:
|
37
|
+
margin: var(--spacing-none);
|
38
38
|
|
39
39
|
overflow: hidden;
|
40
40
|
|
@@ -44,7 +44,7 @@ export class DataCardField extends LitElement {
|
|
44
44
|
|
45
45
|
:host > *[center] {
|
46
46
|
flex: none;
|
47
|
-
margin:
|
47
|
+
margin: var(--spacing-none) auto;
|
48
48
|
}
|
49
49
|
|
50
50
|
:host([name]) label {
|
@@ -16,22 +16,22 @@ class DataCardGutterMenu extends LitElement {
|
|
16
16
|
}
|
17
17
|
|
18
18
|
::slotted(ox-popup) {
|
19
|
-
padding:
|
19
|
+
padding: var(--spacing-small);
|
20
20
|
}
|
21
21
|
|
22
22
|
md-icon {
|
23
23
|
flex: 1;
|
24
|
-
margin:
|
25
|
-
margin-bottom: 1px;
|
24
|
+
margin: var(--spacing-none);
|
26
25
|
border: var(--data-card-item-btn-border);
|
27
26
|
border-radius: var(--data-card-item-btn-border-radius);
|
28
27
|
padding: var(--data-card-item-btn-padding);
|
29
|
-
font-size: var(--
|
28
|
+
font-size: var(--md-sys-typescale-label-large-size, 0.875rem);
|
30
29
|
}
|
31
30
|
|
32
31
|
md-icon:hover {
|
33
32
|
cursor: pointer;
|
34
|
-
color: var(--
|
33
|
+
background-color: var(--md-sys-color-primary);
|
34
|
+
color: var(--md-sys-color-on-primary);
|
35
35
|
}
|
36
36
|
`
|
37
37
|
|
@@ -12,7 +12,7 @@ export class DataCardGutter extends LitElement {
|
|
12
12
|
css`
|
13
13
|
:host {
|
14
14
|
background-color: transparent;
|
15
|
-
|
15
|
+
align-content: center;
|
16
16
|
font-size: var(--grid-record-wide-fontsize);
|
17
17
|
text-overflow: ellipsis;
|
18
18
|
color: var(--grid-record-color);
|
@@ -20,22 +20,22 @@ export class DataCardGutter extends LitElement {
|
|
20
20
|
|
21
21
|
* {
|
22
22
|
flex: 1;
|
23
|
-
margin:
|
24
|
-
margin-bottom: 1px;
|
23
|
+
margin: var(--spacing-tiny);
|
25
24
|
border: var(--data-card-item-btn-border);
|
26
25
|
border-radius: var(--data-card-item-btn-border-radius);
|
27
26
|
padding: var(--data-card-item-btn-padding);
|
28
|
-
font-size: var(--
|
27
|
+
font-size: var(--md-sys-typescale-label-large-size, 0.875rem);
|
29
28
|
}
|
30
29
|
|
31
30
|
*:hover {
|
32
31
|
cursor: pointer;
|
33
|
-
color: var(--
|
32
|
+
background-color: var(--md-sys-color-primary);
|
33
|
+
color: var(--md-sys-color-on-primary);
|
34
34
|
}
|
35
35
|
|
36
36
|
*[center] {
|
37
37
|
flex: none;
|
38
|
-
margin:
|
38
|
+
margin: var(--spacing-none) auto;
|
39
39
|
}
|
40
40
|
`
|
41
41
|
]
|
@@ -13,16 +13,13 @@ export class DataCard extends DataManipulator {
|
|
13
13
|
static styles = [
|
14
14
|
css`
|
15
15
|
:host {
|
16
|
-
background-color: var(--data-card-background-color);
|
17
16
|
overflow-y: auto;
|
18
|
-
padding: var(--
|
17
|
+
padding: var(--spacing-medium);
|
19
18
|
|
20
19
|
display: grid;
|
21
20
|
grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
|
22
|
-
|
23
21
|
grid-template-rows: min-content;
|
24
|
-
|
25
|
-
grid-gap: var(--margin-wide);
|
22
|
+
grid-gap: var(--spacing-large);
|
26
23
|
}
|
27
24
|
|
28
25
|
ox-record-card {
|
@@ -33,24 +30,25 @@ export class DataCard extends DataManipulator {
|
|
33
30
|
border-radius: var(--data-card-record-card-border-radius);
|
34
31
|
}
|
35
32
|
ox-record-card:hover {
|
33
|
+
background-color: var(--md-sys-color-inverse-primary);
|
36
34
|
border: var(--data-card-record-card-border-hover);
|
37
35
|
box-shadow: var(--data-card-record-card-boxshadow-hover);
|
38
36
|
}
|
39
37
|
|
40
38
|
[selected-row] {
|
41
|
-
background-color: var(--
|
39
|
+
background-color: var(--grid-record-selected-background-color);
|
42
40
|
}
|
43
41
|
|
44
42
|
#upward {
|
45
|
-
--md-icon-size:
|
43
|
+
--md-icon-size: var(--icon-size-large);
|
46
44
|
position: absolute;
|
47
45
|
top: var(--data-card-fab-position-vertical);
|
48
46
|
right: var(--data-card-fab-position-horizontal);
|
49
47
|
background-color: rgba(255, 255, 255, 0.7);
|
50
|
-
border-radius:
|
48
|
+
border-radius: var(--md-sys-shape-corner-large);
|
51
49
|
color: var(--data-card-fab-color);
|
52
50
|
box-shadow: var(--data-card-fab-shadow);
|
53
|
-
padding:
|
51
|
+
padding: var(--spacing-small);
|
54
52
|
}
|
55
53
|
|
56
54
|
slot {
|
@@ -41,24 +41,24 @@ export class RecordCard extends LitElement {
|
|
41
41
|
:host([dirty])::before {
|
42
42
|
content: '';
|
43
43
|
position: absolute;
|
44
|
-
left:
|
45
|
-
top:
|
44
|
+
left: var(--spacing-none);
|
45
|
+
top: var(--spacing-none);
|
46
46
|
|
47
|
-
width:
|
48
|
-
height:
|
47
|
+
width: var(--spacing-none);
|
48
|
+
height: var(--spacing-none);
|
49
49
|
border-top: var(--grid-record-dirty-border-top);
|
50
50
|
border-right: var(--grid-record-dirty-border-left);
|
51
51
|
}
|
52
52
|
|
53
53
|
[dirty] {
|
54
54
|
position: absolute;
|
55
|
-
margin:
|
55
|
+
margin: var(--spacing-none);
|
56
56
|
height: 20px;
|
57
57
|
|
58
58
|
font: var(--grid-record-dirty-icon-font);
|
59
59
|
text-indent: 1px;
|
60
|
-
left:
|
61
|
-
top:
|
60
|
+
left: var(--spacing-none);
|
61
|
+
top: var(--spacing-none);
|
62
62
|
color: var(--grid-record-dirty-color);
|
63
63
|
}
|
64
64
|
|
@@ -67,13 +67,12 @@ export class RecordCard extends LitElement {
|
|
67
67
|
height: var(--data-card-thumbnail-height);
|
68
68
|
border-top-left-radius: var(--data-card-record-card-border-radius);
|
69
69
|
border-top-right-radius: var(--data-card-record-card-border-radius);
|
70
|
-
border-bottom: var(--data-card-thumbnail-border-bottom);
|
71
70
|
overflow: hidden;
|
72
71
|
}
|
73
72
|
|
74
73
|
[content] {
|
75
74
|
display: grid;
|
76
|
-
gap:
|
75
|
+
gap: var(--spacing-tiny) var(--spacing-medium);
|
77
76
|
grid-template:
|
78
77
|
'brief gutters'
|
79
78
|
'detail detail';
|
@@ -84,7 +83,7 @@ export class RecordCard extends LitElement {
|
|
84
83
|
[brief] {
|
85
84
|
display: flex;
|
86
85
|
flex-direction: column;
|
87
|
-
gap:
|
86
|
+
gap: var(--spacing-tiny);
|
88
87
|
grid-area: brief;
|
89
88
|
overflow: hidden;
|
90
89
|
}
|
@@ -22,13 +22,17 @@ export class DataGridAccumField extends LitElement {
|
|
22
22
|
position: relative;
|
23
23
|
|
24
24
|
white-space: nowrap;
|
25
|
-
background-color: var(--
|
26
|
-
border:
|
25
|
+
background-color: var(--md-sys-color-inverse-primary);
|
26
|
+
border: var(--grid-record-border-bottom);
|
27
27
|
border-width: 1px 0;
|
28
|
-
|
28
|
+
padding: var(--spacing-small);
|
29
29
|
|
30
30
|
font-size: var(--grid-record-wide-fontsize);
|
31
|
-
|
31
|
+
color: var(--md-sys-color-primary);
|
32
|
+
font-weight: var(--md-sys-typescale-label-large-weight, var(--md-ref-typeface-weight-medium, 500));
|
33
|
+
|
34
|
+
min-height: 30px;
|
35
|
+
box-sizing: border-box;
|
32
36
|
}
|
33
37
|
|
34
38
|
span,
|
@@ -62,7 +66,7 @@ export class DataGridAccumField extends LitElement {
|
|
62
66
|
@property({ type: Boolean }) editing = false
|
63
67
|
@property({ type: Object }) value = {}
|
64
68
|
@property({ attribute: false }) emphasized: any = false
|
65
|
-
@property({ type: String }) fixed?: string
|
69
|
+
@property({ type: String, attribute: true }) fixed?: string
|
66
70
|
|
67
71
|
render(): TemplateResult {
|
68
72
|
if (!this.column || !this.column.accumulator) {
|
@@ -100,6 +104,8 @@ export class DataGridAccumField extends LitElement {
|
|
100
104
|
if (changes.has('fixed')) {
|
101
105
|
if (this.fixed) {
|
102
106
|
this.style.left = this.fixed + 'px'
|
107
|
+
} else {
|
108
|
+
this.style.left = 'unset'
|
103
109
|
}
|
104
110
|
}
|
105
111
|
}
|
@@ -70,4 +70,16 @@ export const dataGridBodyStyle = css`
|
|
70
70
|
background-color: transparent;
|
71
71
|
}
|
72
72
|
}
|
73
|
+
|
74
|
+
@media (prefers-color-scheme: dark) {
|
75
|
+
ox-grid-field[focused-row] {
|
76
|
+
background-blend-mode: lighten;
|
77
|
+
}
|
78
|
+
}
|
79
|
+
|
80
|
+
@media (prefers-color-scheme: light) {
|
81
|
+
ox-grid-field[focused-row] {
|
82
|
+
background-blend-mode: darken;
|
83
|
+
}
|
84
|
+
}
|
73
85
|
`
|