@operato/context 2.0.0-alpha.8 → 2.0.0-alpha.81

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 (62) hide show
  1. package/CHANGELOG.md +394 -0
  2. package/demo/index.html +13 -2
  3. package/dist/src/layouts/ox-context-page-toolbar.d.ts +9 -4
  4. package/dist/src/layouts/ox-context-page-toolbar.js +30 -10
  5. package/dist/src/layouts/ox-context-page-toolbar.js.map +1 -1
  6. package/dist/src/layouts/ox-context-toolbar.d.ts +2 -2
  7. package/dist/src/layouts/ox-context-toolbar.js +106 -70
  8. package/dist/src/layouts/ox-context-toolbar.js.map +1 -1
  9. package/dist/src/styles/ox-context-toolbar-overlay-style.js +2 -2
  10. package/dist/src/styles/ox-context-toolbar-overlay-style.js.map +1 -1
  11. package/dist/src/tools/ox-page-action-context-bar.d.ts +12 -5
  12. package/dist/src/tools/ox-page-action-context-bar.js +43 -48
  13. package/dist/src/tools/ox-page-action-context-bar.js.map +1 -1
  14. package/dist/src/tools/ox-page-action-overlay-template.d.ts +2 -2
  15. package/dist/src/tools/ox-page-action-overlay-template.js +22 -31
  16. package/dist/src/tools/ox-page-action-overlay-template.js.map +1 -1
  17. package/dist/src/tools/ox-page-title-bar.d.ts +2 -2
  18. package/dist/src/tools/ox-page-title-bar.js +6 -8
  19. package/dist/src/tools/ox-page-title-bar.js.map +1 -1
  20. package/dist/src/tools/ox-title-bar.d.ts +2 -2
  21. package/dist/src/tools/ox-title-bar.js +6 -8
  22. package/dist/src/tools/ox-title-bar.js.map +1 -1
  23. package/dist/stories/ox-context-page-toolbar-select-buttons.stories.d.ts +25 -0
  24. package/dist/stories/ox-context-page-toolbar-select-buttons.stories.js +127 -0
  25. package/dist/stories/ox-context-page-toolbar-select-buttons.stories.js.map +1 -0
  26. package/dist/stories/ox-context-page-toolbar-select.stories.d.ts +24 -0
  27. package/dist/stories/ox-context-page-toolbar-select.stories.js +85 -0
  28. package/dist/stories/ox-context-page-toolbar-select.stories.js.map +1 -0
  29. package/dist/stories/ox-context-page-toolbar.stories.d.ts +24 -0
  30. package/dist/stories/ox-context-page-toolbar.stories.js +90 -0
  31. package/dist/stories/ox-context-page-toolbar.stories.js.map +1 -0
  32. package/dist/stories/ox-context-toolbar-complex.stories.d.ts +19 -0
  33. package/dist/stories/ox-context-toolbar-complex.stories.js +147 -0
  34. package/dist/stories/ox-context-toolbar-complex.stories.js.map +1 -0
  35. package/dist/stories/ox-context-toolbar-empty.stories.d.ts +19 -0
  36. package/dist/stories/ox-context-toolbar-empty.stories.js +49 -0
  37. package/dist/stories/ox-context-toolbar-empty.stories.js.map +1 -0
  38. package/dist/stories/ox-context-toolbar-overflow.stories.d.ts +19 -0
  39. package/dist/stories/ox-context-toolbar-overflow.stories.js +128 -0
  40. package/dist/stories/ox-context-toolbar-overflow.stories.js.map +1 -0
  41. package/dist/stories/ox-context-toolbar.stories.d.ts +19 -0
  42. package/dist/stories/ox-context-toolbar.stories.js +83 -0
  43. package/dist/stories/ox-context-toolbar.stories.js.map +1 -0
  44. package/dist/tsconfig.tsbuildinfo +1 -1
  45. package/package.json +20 -20
  46. package/src/layouts/ox-context-page-toolbar.ts +33 -10
  47. package/src/layouts/ox-context-toolbar.ts +106 -70
  48. package/src/styles/ox-context-toolbar-overlay-style.ts +2 -2
  49. package/src/tools/ox-page-action-context-bar.ts +71 -67
  50. package/src/tools/ox-page-action-overlay-template.ts +42 -51
  51. package/src/tools/ox-page-title-bar.ts +6 -8
  52. package/src/tools/ox-title-bar.ts +6 -8
  53. package/stories/ox-context-page-toolbar-select-buttons.stories.ts +141 -0
  54. package/stories/ox-context-page-toolbar-select.stories.ts +99 -0
  55. package/stories/ox-context-page-toolbar.stories.ts +104 -0
  56. package/stories/ox-context-toolbar-complex.stories.ts +159 -0
  57. package/stories/ox-context-toolbar-empty.stories.ts +62 -0
  58. package/stories/ox-context-toolbar-overflow.stories.ts +140 -0
  59. package/stories/ox-context-toolbar.stories.ts +95 -0
  60. package/themes/app-theme.css +162 -0
  61. package/themes/context-theme.css +74 -0
  62. package/themes/material-theme.css +38 -0
@@ -0,0 +1,95 @@
1
+ import '@material/web/icon/icon.js'
2
+ import '../src/layouts/ox-context-toolbar.js'
3
+ import '../src/tools/ox-page-action-context-bar.js'
4
+ import { TOOL_POSITION } from '@operato/layout'
5
+
6
+ import '@operato/styles'
7
+
8
+ import { css, html, render, TemplateResult } from 'lit'
9
+
10
+ export default {
11
+ title: 'ox-context-toolbar',
12
+ component: 'ox-context-toolbar',
13
+ argTypes: {}
14
+ }
15
+
16
+ interface Story<T> {
17
+ (args: T): TemplateResult
18
+ args?: Partial<T>
19
+ argTypes?: Record<string, unknown>
20
+ }
21
+
22
+ interface ArgTypes {}
23
+
24
+ const Template: Story<ArgTypes> = () => html`
25
+ <link href="/themes/app-theme.css" rel="stylesheet" />
26
+ <link href="/themes/material-theme.css" rel="stylesheet" />
27
+ <link href="/themes/context-theme.css" rel="stylesheet" />
28
+
29
+ <link
30
+ href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
31
+ rel="stylesheet"
32
+ />
33
+ <link
34
+ href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL@20..48,100..700,0..1"
35
+ rel="stylesheet"
36
+ />
37
+ <link
38
+ href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
39
+ rel="stylesheet"
40
+ />
41
+
42
+ <style>
43
+ body {
44
+ background-color: white;
45
+ }
46
+ </style>
47
+
48
+ <div style="height:100px; padding: 10px; background-color: black;">
49
+ <ox-context-toolbar
50
+ .tools=${[
51
+ {
52
+ position: TOOL_POSITION.FRONT,
53
+ template: html` <md-icon>download</md-icon> `,
54
+ context: 'exportable'
55
+ },
56
+ {
57
+ position: TOOL_POSITION.FRONT,
58
+ template: html` <md-icon>upload</md-icon> `,
59
+ context: 'importable'
60
+ },
61
+ {
62
+ position: TOOL_POSITION.CENTER,
63
+ template: html`<ox-page-action-context-bar
64
+ .actions=${[
65
+ {
66
+ title: 'save',
67
+ action: () => {},
68
+ icon: 'save'
69
+ },
70
+ {
71
+ title: 'copy',
72
+ action: () => {},
73
+ icon: 'content_copy'
74
+ },
75
+ {
76
+ title: 'delete',
77
+ action: () => {},
78
+ icon: 'delete'
79
+ }
80
+ ]}
81
+ ></ox-page-action-context-bar>`
82
+ }
83
+ ]}
84
+ .context=${{
85
+ exportable: true,
86
+ importable: true,
87
+ toolbar: true
88
+ }}
89
+ >
90
+ </ox-context-toolbar>
91
+ </div>
92
+ `
93
+
94
+ export const Regular = Template.bind({})
95
+ Regular.args = {}
@@ -0,0 +1,162 @@
1
+ body {
2
+ /***********************************************
3
+ * 버전: 2.2024-1
4
+ * 작성일: 2024-04-14
5
+ * 작성자: Hoppaang
6
+ * color속성은 앱별 차별성이 크므로 가능하면 62라인 'app layout style'이후부터 수정/복사 등을 권장합니다
7
+ *
8
+ * 주요 변경 사항:
9
+ * - icon style 변수 추가
10
+ * - material design component themes의 변수명 mdc..에서 md로 교정
11
+ * - button style에 변수 추가 및 기 속성값 변경
12
+
13
+ ***********************************************/
14
+
15
+ /* theme color */
16
+ --primary-color-rgb: 130, 105, 96;
17
+ --primary-color: rgb(var(--primary-color-rgb));
18
+ --secondary-color-rgb: 78, 78, 90;
19
+ --secondary-color: rgb(var(--secondary-color-rgb));
20
+ --focus-color: var(--theme-white-color);
21
+ --primary-background-color: var(--secondary-color);
22
+ --secondary-background-color: #283644;
23
+ --main-section-background-color: #f5f2ee;
24
+ --theme-white-color: #fff;
25
+ --theme-black-color: rgba(0, 0, 0, 0.9);
26
+
27
+ --focus-background-color: var(--primary-color);
28
+ --primary-text-color: #3c3938;
29
+ --secondary-text-color: var(--primary-color);
30
+
31
+ --opacity-dark-color: rgba(0, 0, 0, 0.4);
32
+ --opacity-light-color: rgba(255, 255, 255, 0.8);
33
+
34
+ /* status color */
35
+ --status-success-color: #35a24a;
36
+ --status-warning-color: #ee8d03;
37
+ --status-danger-color: #d14946;
38
+ --status-info-color: #398ace;
39
+
40
+ /* common style */
41
+ --border-radius: 4px;
42
+ --border-dark-color: 1px solid rgba(0, 0, 0, 0.15);
43
+ --border-light-color: 1px solid rgba(255, 255, 255, 0.3);
44
+
45
+ --box-shadow: 2px 2px 3px 0px rgba(0, 0, 0, 0.1);
46
+
47
+ --theme-font: 'Noto', Helvetica;
48
+
49
+ --margin-default: 9px;
50
+ --margin-narrow: 4px;
51
+ --margin-wide: 15px;
52
+ --padding-default: var(--margin-default);
53
+ --padding-narrow: var(--margin-narrow);
54
+ --padding-wide: var(--margin-wide);
55
+
56
+ --scrollbar-thumb-color: rgba(57, 78, 100, 0.5);
57
+ --scrollbar-thumb-hover-color: var(--primary-color);
58
+
59
+ --fontsize-default: 14px;
60
+ --fontsize-small: 13px;
61
+ --fontsize-large: 16px;
62
+
63
+ /* app layout style */
64
+ --app-grid-template-area: 'header header header' 'nav main aside' 'nav footer aside';
65
+
66
+ /* title & description style */
67
+ --title-margin: var(--margin-narrow) 0;
68
+ --title-font: bold 24px var(--theme-font);
69
+ --title-text-color: var(--secondary-color);
70
+ --title-font-mobile: bold 20px var(--theme-font);
71
+
72
+ --page-description-margin: var(--margin-narrow) 0 var(--margin-wide) 0;
73
+ --page-description-font: normal var(--fontsize-default) / 1.2rem var(--theme-font);
74
+ --page-description-color: var(--secondary-text-color);
75
+
76
+ --subtitle-padding: 12px 5px 3px 5px;
77
+ --subtitle-font: bold 18px var(--theme-font);
78
+ --subtitle-text-color: var(--primary-color);
79
+ --subtitle-border-bottom: 1px solid var(--primary-color);
80
+
81
+ /* icon style */
82
+ --icon-tiny-size: 24px;
83
+ --icon-default-size: 36px;
84
+ --icon-big-size: 48px;
85
+ --icon-default-color: var(--theme-white-color);
86
+ --iconbtn-size: 18px; /* added by Hoppaang for new style ver */
87
+
88
+ /* material design component themes */
89
+ --md-theme-on-primary: var(--theme-white-color);
90
+ --md-theme-primary: var(--secondary-text-color);
91
+ --md-theme-on-secondary: var(--theme-white-color);
92
+ --md-theme-secondary: var(--primary-color);
93
+ --md-button-outline-color: var(--primary-color);
94
+ --md-danger-button-primary-color: var(--status-danger-color);
95
+ --md-danger-button-outline-color: var(--status-danger-color);
96
+ --md-button-outline-width: 1px;
97
+ :16px;
98
+
99
+ /* button style */
100
+ --button-background-color: #fafbfc;
101
+ --button-background-focus-color: var(--primary-color);
102
+ --button-border: var(--border-dark-color);
103
+ --button-border-radius: var(--border-radius);
104
+ --button-margin: var(--margin-default) var(--margin-default) var(--margin-default) 0;
105
+ --button-padding: calc(var(--padding-narrow) * 1.5) var(--padding-wide); /* Modified by Hoppaang for new style ver */
106
+ --button-color: var(--secondary-color);
107
+ --button-font: 600 var(--fontsize-default) var(--theme-font); /* Modified by Hoppaang for new style ver */
108
+ --button-text-transform: capitalize;
109
+ --button-active-box-shadow: 1px 1px 1px 0px rgba(0, 0, 0, 0.2);
110
+ --button-activ-border: 1px solid var(--primary-color); /* added by Hoppaang for new style ver */
111
+ --button-activ-background-color: var(--primary-color); /* added by Hoppaang for new style ver */
112
+ --button-activ-color: var(--theme-white-color); /* added by Hoppaang for new style ver */
113
+ --iconbtn-padding: var(--padding-narrow); /* added by Hoppaang for new style ver */
114
+
115
+ --button-primary-background-color: var(--primary-color);
116
+ --button-primary-active-background-color: var(--status-success-color);
117
+ --button-primary-padding: var(--margin-default) var(--margin-wide);
118
+ --button-primary-color: var(--theme-white-color);
119
+ --button-primary-font: bold 16px var(--theme-font);
120
+
121
+ /* table style */
122
+ --th-padding: var(--padding-default);
123
+ --th-border-top: 2px solid var(--secondary-color);
124
+ --th-text-transform: capitalize;
125
+ --th-font: bold var(--fontsize-small) var(--theme-font);
126
+ --th-color: rgba(var(--secondary-color-rgb), 0.8);
127
+
128
+ --tr-background-color: var(--theme-white-color);
129
+ --tr-background-odd-color: rgba(255, 255, 255, 0.4);
130
+ --tr-background-hover-color: #e1f5fe;
131
+ --td-border-line: 1px solid rgba(0, 0, 0, 0.05);
132
+ --td-border-bottom: 1px solid rgba(0, 0, 0, 0.09);
133
+ --td-padding: var(--padding-default);
134
+ --td-font: normal 13px var(--theme-font);
135
+ --td-color: var(--secondary-color);
136
+
137
+ --label-cell-background-color: #f6f6f6; /* th or td common background color */
138
+
139
+ /* form style */
140
+ --label-font: normal var(--fontsize-default) var(--theme-font);
141
+ --label-color: var(--secondary-color);
142
+ --label-text-transform: capitalize;
143
+ --input-margin: var(--margin-narrow) 0;
144
+ --input-padding: var(--padding-default);
145
+ --input-min-width: 200px;
146
+ --input-font: normal var(--fontsize-default) var(--theme-font);
147
+ --input-hint-font: normal var(--fontsize-small) var(--theme-font);
148
+ --input-hint-color: #666;
149
+ --input-container-max-width: 900px;
150
+ --fieldset-margin: var(--padding-wide) 0;
151
+ --fieldset-padding: 0 var(--padding-wide) var(--padding-wide) var(--padding-wide);
152
+ --legend-padding: var(--padding-default) 0;
153
+ --legend-color: var(--secondary-text-color);
154
+ --legend-font: bold 16px var(--theme-font);
155
+ }
156
+
157
+ @media only screen and (max-width: 460px) {
158
+ body {
159
+ /* subtitle style */
160
+ --subtitle-margin: 0;
161
+ }
162
+ }
@@ -0,0 +1,74 @@
1
+ body {
2
+ --context-toolbar-background-color: var(--main-section-background-color);
3
+ --context-toolbar-button-background-color: #fff;
4
+ --context-toolbar-border: 1px solid rgba(57, 78, 100, 0.5);
5
+ --context-toolbar-border-hover: 1px solid var(--primary-color);
6
+ --context-toolbar-button-max-width: auto;
7
+ --context-toolbar-button-height: 36px;
8
+ --context-toolbar-button-margin: var(--margin-narrow) 0 var(--margin-wide) 0;
9
+ --context-toolbar-button-padding: 0 9px;
10
+ --context-toolbar-button: normal 13px var(--theme-font);
11
+ --context-toolbar-button-color: var(--secondary-color);
12
+ --context-toolbar-iconbutton-color: var(--primary-text-color);
13
+ --context-toolbar-iconbutton-size: 16px;
14
+ --context-toolbar-function-button-height: 34px;
15
+ --context-toolbar-function-button-radius: 5px;
16
+ --context-toolbar-function-button-background-color: #446281;
17
+ --context-toolbar-function-button-hover-background-color: var(--primary-color);
18
+ --context-toolbar-function-iconbutton-size: 28px;
19
+ --context-toolbar-function-iconbutton-color: var(--primary-background-color);
20
+ --context-toolbar-function-button-lineheight: 36px;
21
+ --context-toolbar-function-button-color: #fff;
22
+ --context-toolbar-function-button-padding: 0 10px;
23
+ --context-toolbar-function-button-border: 1px solid rgba(0, 0, 0, 0.1);
24
+ --context-toolbar-list-background-color: var(--primary-background-color);
25
+ --context-toolbar-list-text: bold 18px var(--theme-font);
26
+ --context-toolbar-list-icon-size: var(--icon-default-size);
27
+ --context-toolbar-side-padding: 15px;
28
+ --context-toolbar-shadow-line: none;
29
+ --context-toolbar-title: bold 19px var(--theme-font);
30
+
31
+ --context-ui-background-color: rgba(40, 54, 68, 0.9);
32
+ --context-ui-box-shadow: 2px 2px 3px 0px rgba(0, 0, 0, 0.2);
33
+ --context-ui-border-radius: 10px;
34
+ --context-ui-padding: 10px;
35
+ --context-ui-list-color: #d0fdee;
36
+ --context-ui-list-border-bottom: 1px solid rgba(0, 0, 0, 0.3);
37
+ --context-ui-list-border-hover-bottom: 1px solid var(--primary-color);
38
+ --context-ui-list-padding: 5px;
39
+ --context-ui-button-color: var(--secondary-text-color);
40
+ --context-ui-button-hover-color: #fff;
41
+ --context-ui-button-background-color: #fff;
42
+ --context-ui-button-background-hover-color: var(--primary-color);
43
+
44
+ --context-action-bar-button-margin: var(--margin-narrow) 0 var(--margin-wide) var(--margin-narrow);
45
+ --context-action-bar-more-button-background-color: var(--context-ui-background-color);
46
+ --context-action-bar-more-button-padding: 6px var(--padding-default);
47
+ --context-action-bar-more-button-color: var(--theme-white-color);
48
+ --context-action-bar-more-button-border-radius: 4px;
49
+ }
50
+
51
+ @media only screen and (max-width: 460px) {
52
+ body {
53
+ --context-toolbar-button: normal 9px var(--theme-font);
54
+ --context-toolbar-button-max-width: 60px;
55
+ --context-toolbar-button-height: 50px;
56
+ --context-toolbar-iconbutton-size: 30px;
57
+ --context-toolbar-border: none;
58
+ --context-toolbar-border-hover: none;
59
+ --context-toolbar-iconbutton-display: block;
60
+ --context-toolbar-iconbutton-margin: -2px;
61
+ --context-toolbar-button-background-color: transparent;
62
+ --context-toolbar-button-margin: 0;
63
+ --context-toolbar-function-button-height: 34px;
64
+ --context-toolbar-function-button-lineheight: 34px;
65
+ --context-toolbar-function-button-radius: 0;
66
+ --context-toolbar-side-padding: 0;
67
+ --context-toolbar-shadow-line: inset 0px 2px 2px 0px rgba(0, 0, 0, 0.1);
68
+ --context-toolbar-button-padding: 0 10px 0 0;
69
+
70
+ --context-action-bar-button-margin: 0;
71
+ --context-action-bar-more-button-border-radius: 0;
72
+ --context-action-bar-more-button-padding: 6px var(--padding-wide);
73
+ }
74
+ }
@@ -0,0 +1,38 @@
1
+ body {
2
+ font-variation-settings: 'FILL' 1;
3
+
4
+ /* meterial theme color */
5
+ --md-sys-color-primary: var(--theme-white-color);
6
+ --md-sys-color-secondary: var(--secondary-color);
7
+
8
+ --md-sys-shape-corner-small: 4px;
9
+ --md-sys-shape-corner-medium: 6px;
10
+ --md-sys-shape-corner-large: 8px;
11
+
12
+ --md-sys-shape-corner-full: var(--md-sys-shape-corner-small);
13
+
14
+ --md-sys-color-surface-container-high: var(--primary-color);
15
+ --md-sys-color-surface-container-low: var(--secondary-color);
16
+ --md-sys-color-surface-container-highest: #e0e3e2;
17
+ --md-sys-color-surface-container-lowest: var(--secondary-color);
18
+ --md-sys-typescale-body-large: 400 1rem system-ui;
19
+
20
+ --md-filled-text-field-container-shape: 0px;
21
+ --md-filled-text-field-label-text-color: #3f4948;
22
+ --md-filled-text-field-input-text-color: #161d1d;
23
+
24
+ --md-outlined-text-field-container-shape: 0px;
25
+ --md-outlined-text-field-label-text-color: #3f4948;
26
+ --md-outlined-text-field-input-text-color: #161d1d;
27
+
28
+ --md-outlined-select-text-field-outline-color: #6e7979;
29
+ --md-outlined-select-text-field-container-shape: 0px;
30
+ --md-outlined-select-text-field-input-text-color: #005353;
31
+ --md-outlined-select-text-field-input-text-font: system-ui;
32
+
33
+ --md-menu-container-color: #f4f7fb;
34
+ --md-menu-container-shape: 0px;
35
+
36
+ --md-fab-container-color: var(--primary-color);
37
+ --md-fab-icon-color: var(--focus-color);
38
+ }