@pictogrammers/components 0.3.2 → 0.4.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/README.md +11 -12
- package/favicon.svg +20 -0
- package/index.html +67 -49
- package/main.js +2 -0
- package/main.js.LICENSE.txt +10 -0
- package/package.json +6 -6
- package/pg/annoy/README.md +0 -5
- package/pg/annoy/__examples__/basic/basic.css +3 -0
- package/pg/annoy/__examples__/basic/basic.html +4 -7
- package/pg/annoy/__examples__/basic/basic.ts +3 -1
- package/pg/annoy/annoy.css +29 -198
- package/pg/annoy/annoy.html +5 -56
- package/pg/annoy/annoy.ts +4 -25
- package/pg/app/README.md +11 -0
- package/pg/app/__examples__/basic/basic.css +8 -0
- package/pg/app/__examples__/basic/basic.html +15 -0
- package/pg/app/__examples__/basic/basic.ts +13 -0
- package/pg/app/app.css +108 -0
- package/pg/app/app.html +16 -0
- package/pg/app/app.ts +45 -0
- package/pg/app/index.ts +3 -0
- package/pg/avatar/__examples__/basic/basic.ts +5 -3
- package/pg/button/README.md +3 -0
- package/pg/button/button.css +13 -12
- package/pg/button/button.spec.ts +35 -0
- package/pg/button/button.ts +17 -12
- package/pg/buttonLink/buttonLink.css +3 -2
- package/pg/buttonMenu/README.md +54 -0
- package/pg/buttonMenu/__examples__/basic/basic.html +6 -0
- package/pg/buttonMenu/__examples__/basic/basic.ts +43 -0
- package/pg/buttonMenu/buttonMenu.css +12 -0
- package/pg/buttonMenu/buttonMenu.html +4 -0
- package/pg/buttonMenu/buttonMenu.ts +63 -0
- package/pg/buttonMenu/index.ts +3 -0
- package/pg/buttonToggle/__examples__/basic/basic.ts +2 -2
- package/pg/buttonToggle/__examples__/persist/persist.html +10 -0
- package/pg/buttonToggle/__examples__/persist/persist.ts +35 -0
- package/pg/cardUser/__examples__/basic/basic.ts +0 -1
- package/pg/cardUser/cardUser.css +2 -10
- package/pg/cardUser/cardUser.html +0 -5
- package/pg/cardUser/cardUser.ts +0 -6
- package/pg/database/README.md +1 -1
- package/pg/database/__examples__/basic/basic.html +2 -1
- package/pg/database/__examples__/basic/basic.ts +3 -3
- package/pg/dropdown/dropdown.ts +0 -19
- package/pg/grid/__examples__/basic/basic.html +2 -2
- package/pg/grid/__examples__/basic/basic.ts +3 -2
- package/pg/grid/grid.ts +0 -1
- package/pg/icon/README.md +6 -5
- package/pg/icon/__examples__/basic/basic.html +2 -2
- package/pg/icon/__examples__/basic/basic.ts +1 -1
- package/pg/icon/icon.ts +6 -0
- package/pg/inputCheckList/__examples__/basic/basic.ts +5 -5
- package/pg/inputCheckList/inputCheckList.ts +2 -0
- package/pg/inputFileLocal/inputFileLocal.css +3 -2
- package/pg/inputPixelEditor/README.md +132 -0
- package/pg/inputPixelEditor/__examples__/basic/basic.css +29 -0
- package/pg/inputPixelEditor/__examples__/basic/basic.html +63 -0
- package/pg/inputPixelEditor/__examples__/basic/basic.ts +200 -0
- package/pg/inputPixelEditor/__examples__/basic/openUtils.ts +41 -0
- package/pg/inputPixelEditor/__examples__/basic/saveUtil.ts +35 -0
- package/pg/inputPixelEditor/index.ts +3 -0
- package/pg/inputPixelEditor/inputPixelEditor.css +27 -0
- package/pg/inputPixelEditor/inputPixelEditor.html +3 -0
- package/pg/inputPixelEditor/inputPixelEditor.ts +839 -0
- package/pg/inputPixelEditor/utils/bitmapToMask.ts +202 -0
- package/pg/inputPixelEditor/utils/cloneGrid.ts +17 -0
- package/pg/inputPixelEditor/utils/constants.ts +1 -0
- package/pg/inputPixelEditor/utils/createLayer.ts +8 -0
- package/pg/inputPixelEditor/utils/debounce.ts +5 -0
- package/pg/inputPixelEditor/utils/diffGrid.ts +26 -0
- package/pg/inputPixelEditor/utils/fillGrid.ts +11 -0
- package/pg/inputPixelEditor/utils/getEllipseOutlinePixels.ts +105 -0
- package/pg/inputPixelEditor/utils/getEllipsePixels.ts +28 -0
- package/pg/inputPixelEditor/utils/getGuides.ts +232 -0
- package/pg/inputPixelEditor/utils/getLinePixels.ts +18 -0
- package/pg/inputPixelEditor/utils/getRectangleOutlinePixels.ts +20 -0
- package/pg/inputPixelEditor/utils/getRectanglePixels.ts +15 -0
- package/pg/inputPixelEditor/utils/inputMode.ts +8 -0
- package/pg/inputPixelEditor/utils/interateGrid.ts +7 -0
- package/pg/inputPixelEditor/utils/isEmptyGrid.ts +3 -0
- package/pg/inputPixelEditor/utils/maskToBitmap.ts +66 -0
- package/pg/inputRange/__examples__/basic/basic.ts +4 -4
- package/pg/inputRange/inputRange.ts +6 -4
- package/pg/inputSelect/README.md +1 -1
- package/pg/inputSelect/__examples__/basic/basic.ts +7 -5
- package/pg/inputSelect/inputSelect.css +15 -12
- package/pg/inputSelect/inputSelect.html +3 -3
- package/pg/inputSelect/inputSelect.ts +33 -30
- package/pg/inputText/__examples__/basic/basic.ts +6 -6
- package/pg/inputText/inputText.css +1 -0
- package/pg/inputUserSelect/README.md +1 -1
- package/pg/inputUserSelect/inputUserSelect.ts +1 -1
- package/pg/listTag/__examples__/basic/basic.ts +4 -5
- package/pg/markdown/README.md +17 -3
- package/pg/markdown/__examples__/basic/basic.ts +2 -2
- package/pg/markdown/__examples__/basic/constants.ts +1 -1
- package/pg/markdown/markdown.css +11 -0
- package/pg/menu/README.md +46 -0
- package/pg/menu/__examples__/basic/basic.html +6 -0
- package/pg/menu/__examples__/basic/basic.ts +46 -0
- package/pg/menu/index.ts +3 -0
- package/pg/menu/menu.css +19 -0
- package/pg/menu/menu.html +1 -0
- package/pg/menu/menu.ts +119 -0
- package/pg/menuDivider/README.md +7 -0
- package/pg/menuDivider/__examples__/basic/basic.html +3 -0
- package/pg/menuDivider/__examples__/basic/basic.ts +28 -0
- package/pg/menuDivider/index.ts +3 -0
- package/pg/menuDivider/menuDivider.css +9 -0
- package/pg/menuDivider/menuDivider.html +1 -0
- package/pg/menuDivider/menuDivider.ts +22 -0
- package/pg/menuIcon/menuIcon.ts +43 -36
- package/pg/menuItem/README.md +32 -0
- package/pg/menuItem/__examples__/basic/basic.html +26 -0
- package/pg/menuItem/__examples__/basic/basic.ts +41 -0
- package/pg/menuItem/index.ts +3 -0
- package/pg/menuItem/menuItem.css +97 -0
- package/pg/menuItem/menuItem.html +1 -0
- package/pg/menuItem/menuItem.ts +77 -0
- package/pg/menuItemIcon/README.md +32 -0
- package/pg/menuItemIcon/__examples__/basic/basic.html +34 -0
- package/pg/menuItemIcon/__examples__/basic/basic.ts +55 -0
- package/pg/menuItemIcon/index.ts +3 -0
- package/pg/menuItemIcon/menuItemIcon.css +106 -0
- package/pg/menuItemIcon/menuItemIcon.html +4 -0
- package/pg/menuItemIcon/menuItemIcon.ts +156 -0
- package/pg/modalAlert/__examples__/basic/basic.ts +1 -1
- package/pg/modalAlert/modalAlert.css +1 -4
- package/pg/modalAlert/modalAlert.ts +18 -4
- package/pg/modification/__examples__/basic/basic.ts +1 -2
- package/pg/modification/__examples__/basic/constants.ts +25 -50
- package/pg/modification/modification.ts +1 -1
- package/pg/overlay/overlay.ts +13 -12
- package/pg/overlayContextMenu/README.md +35 -0
- package/pg/overlayContextMenu/__examples__/basic/basic.css +23 -0
- package/pg/overlayContextMenu/__examples__/basic/basic.html +7 -0
- package/pg/overlayContextMenu/__examples__/basic/basic.ts +87 -0
- package/pg/overlayContextMenu/index.ts +3 -0
- package/pg/overlayContextMenu/overlayContextMenu.css +16 -0
- package/pg/overlayContextMenu/overlayContextMenu.html +3 -0
- package/pg/overlayContextMenu/overlayContextMenu.ts +98 -0
- package/pg/overlayMenu/README.md +33 -0
- package/pg/overlayMenu/__examples__/basic/basic.css +3 -0
- package/pg/overlayMenu/__examples__/basic/basic.html +5 -0
- package/pg/overlayMenu/__examples__/basic/basic.ts +62 -0
- package/pg/overlayMenu/index.ts +3 -0
- package/pg/overlayMenu/overlayMenu.css +16 -0
- package/pg/overlayMenu/overlayMenu.html +3 -0
- package/pg/overlayMenu/overlayMenu.ts +67 -0
- package/pg/overlaySelectMenu/README.md +33 -0
- package/pg/overlaySelectMenu/__examples__/basic/basic.css +3 -0
- package/pg/overlaySelectMenu/__examples__/basic/basic.html +5 -0
- package/pg/overlaySelectMenu/__examples__/basic/basic.ts +62 -0
- package/pg/overlaySelectMenu/index.ts +3 -0
- package/pg/overlaySelectMenu/overlaySelectMenu.css +17 -0
- package/pg/overlaySelectMenu/overlaySelectMenu.html +3 -0
- package/pg/overlaySelectMenu/overlaySelectMenu.ts +96 -0
- package/pg/overlaySubMenu/README.md +35 -0
- package/pg/overlaySubMenu/index.ts +3 -0
- package/pg/overlaySubMenu/overlaySubMenu.css +27 -0
- package/pg/overlaySubMenu/overlaySubMenu.html +3 -0
- package/pg/overlaySubMenu/overlaySubMenu.ts +103 -0
- package/pg/picker/picker.ts +1 -19
- package/pg/scroll/__examples__/basic/basic.ts +1 -1
- package/pg/search/__examples__/basic/basic.ts +10 -7
- package/pg/search/search.css +2 -2
- package/pg/shared/models/user.ts +0 -2
- package/pg/tab/tab.ts +0 -10
- package/pg/tabs/partials/tab.css +42 -0
- package/pg/tabs/partials/tab.ts +70 -0
- package/pg/tabs/tabs.css +0 -53
- package/pg/tabs/tabs.ts +54 -70
- package/pg/toast/README.md +35 -6
- package/pg/toast/__examples__/basic/basic.html +7 -0
- package/pg/toast/__examples__/basic/basic.ts +76 -0
- package/pg/toast/toast.css +3 -0
- package/pg/toast/toast.ts +20 -4
- package/pg/tooltip/addTooltip.ts +3 -1
- package/pg/tooltip/tooltip.ts +1 -1
- package/pg/tree/README.md +67 -0
- package/pg/tree/__examples__/basic/basic.html +10 -0
- package/pg/tree/__examples__/basic/basic.ts +162 -0
- package/pg/tree/index.ts +3 -0
- package/pg/tree/tree.css +28 -0
- package/pg/tree/tree.html +1 -0
- package/pg/tree/tree.ts +217 -0
- package/pg/treeButtonIcon/README.md +39 -0
- package/pg/treeButtonIcon/index.ts +3 -0
- package/pg/treeButtonIcon/treeButtonIcon.css +18 -0
- package/pg/treeButtonIcon/treeButtonIcon.html +3 -0
- package/pg/treeButtonIcon/treeButtonIcon.ts +42 -0
- package/pg/treeItem/README.md +3 -0
- package/pg/treeItem/index.ts +3 -0
- package/pg/treeItem/treeItem.css +263 -0
- package/pg/treeItem/treeItem.html +16 -0
- package/pg/treeItem/treeItem.ts +558 -0
- package/pgAnnoy.js +1 -0
- package/pgApp.js +1 -0
- package/pgAvatar.js +1 -0
- package/pgButton.js +1 -0
- package/pgButtonGroup.js +1 -0
- package/pgButtonLink.js +1 -0
- package/pgButtonMenu.js +1 -0
- package/pgButtonToggle.js +1 -0
- package/pgCard.js +1 -0
- package/pgCardUser.js +1 -0
- package/pgColor.js +1 -0
- package/pgDatabase.js +1 -0
- package/pgDropdown.js +1 -0
- package/pgGrid.js +1 -0
- package/pgHeader.js +1 -0
- package/pgIcon.js +1 -0
- package/pgInputCheck.js +1 -0
- package/pgInputCheckList.js +1 -0
- package/pgInputFileLocal.js +1 -0
- package/pgInputHexRgb.js +1 -0
- package/pgInputPixelEditor.js +1 -0
- package/pgInputRange.js +1 -0
- package/pgInputSelect.js +1 -0
- package/pgInputText.js +1 -0
- package/pgInputTextIcon.js +1 -0
- package/pgInputUserSelect.js +1 -0
- package/pgListTag.js +1 -0
- package/pgMarkdown.js +2 -0
- package/pgMarkdown.js.LICENSE.txt +10 -0
- package/pgMenu.js +1 -0
- package/pgMenuDivider.js +1 -0
- package/pgMenuIcon.js +1 -0
- package/pgMenuItem.js +1 -0
- package/pgMenuItemIcon.js +1 -0
- package/pgModalAlert.js +1 -0
- package/pgModification.js +1 -0
- package/pgNav.js +1 -0
- package/pgOverlay.js +1 -0
- package/pgOverlayContextMenu.js +1 -0
- package/pgOverlayMenu.js +1 -0
- package/pgOverlaySelectMenu.js +1 -0
- package/pgOverlaySubMenu.js +1 -0
- package/pgPicker.js +1 -0
- package/pgPreview.js +1 -0
- package/pgScroll.js +1 -0
- package/pgSearch.js +1 -0
- package/pgTab.js +1 -0
- package/pgTabs.js +1 -0
- package/pgToast.js +1 -0
- package/pgToasts.js +1 -0
- package/pgTooltip.js +1 -0
- package/pgTree.js +1 -0
- package/pgTreeButtonIcon.js +1 -0
- package/pgTreeItem.js +1 -0
- package/theme-ui3.css +31 -0
- package/@types/css.d.ts +0 -4
- package/@types/html.d.ts +0 -4
- package/dist/main.js +0 -3819
- package/dist/pgAnnoy.js +0 -116
- package/dist/pgAvatar.js +0 -136
- package/dist/pgButton.js +0 -116
- package/dist/pgButtonGroup.js +0 -116
- package/dist/pgButtonLink.js +0 -116
- package/dist/pgButtonToggle.js +0 -146
- package/dist/pgCard.js +0 -116
- package/dist/pgCardUser.js +0 -196
- package/dist/pgColor.js +0 -136
- package/dist/pgDatabase.js +0 -236
- package/dist/pgDropdown.js +0 -686
- package/dist/pgGrid.js +0 -126
- package/dist/pgHeader.js +0 -116
- package/dist/pgIcon.js +0 -116
- package/dist/pgInputCheck.js +0 -116
- package/dist/pgInputCheckList.js +0 -126
- package/dist/pgInputFileLocal.js +0 -116
- package/dist/pgInputHexRgb.js +0 -126
- package/dist/pgInputRange.js +0 -116
- package/dist/pgInputSelect.js +0 -116
- package/dist/pgInputText.js +0 -116
- package/dist/pgInputTextIcon.js +0 -176
- package/dist/pgInputUserSelect.js +0 -116
- package/dist/pgListTag.js +0 -136
- package/dist/pgMarkdown.js +0 -346
- package/dist/pgMenuIcon.js +0 -206
- package/dist/pgModalAlert.js +0 -126
- package/dist/pgModification.js +0 -396
- package/dist/pgNav.js +0 -116
- package/dist/pgOverlay.js +0 -96
- package/dist/pgPicker.js +0 -116
- package/dist/pgPreview.js +0 -116
- package/dist/pgScroll.js +0 -266
- package/dist/pgSearch.js +0 -146
- package/dist/pgTab.js +0 -116
- package/dist/pgTabs.js +0 -136
- package/dist/pgToast.js +0 -136
- package/dist/pgToasts.js +0 -136
- package/dist/pgTooltip.js +0 -126
|
@@ -30,8 +30,7 @@ export const modifications: any[] = [
|
|
|
30
30
|
"user": {
|
|
31
31
|
"id": "c4ea5584-07e3-11e4-bf19-842b2b6cfe1b",
|
|
32
32
|
"name": "Austin Andrews",
|
|
33
|
-
"github": "templarian"
|
|
34
|
-
"twitter": "Templarian"
|
|
33
|
+
"github": "templarian"
|
|
35
34
|
},
|
|
36
35
|
"icon": null,
|
|
37
36
|
"version": {
|
|
@@ -56,8 +55,7 @@ export const modifications: any[] = [
|
|
|
56
55
|
"user": {
|
|
57
56
|
"id": "c4ea5584-07e3-11e4-bf19-842b2b6cfe1b",
|
|
58
57
|
"name": "Austin Andrews",
|
|
59
|
-
"github": "templarian"
|
|
60
|
-
"twitter": "Templarian"
|
|
58
|
+
"github": "templarian"
|
|
61
59
|
},
|
|
62
60
|
"icon": {
|
|
63
61
|
"id": "AB147073-9D20-4DA1-A108-3856FC1764C1",
|
|
@@ -66,8 +64,7 @@ export const modifications: any[] = [
|
|
|
66
64
|
"user": {
|
|
67
65
|
"id": "79c44334-2d86-11e5-8ac4-842b2b6cfe1b",
|
|
68
66
|
"name": "First Last",
|
|
69
|
-
"github": "GitHubUser"
|
|
70
|
-
"twitter": "TwitterName"
|
|
67
|
+
"github": "GitHubUser"
|
|
71
68
|
}
|
|
72
69
|
},
|
|
73
70
|
"issue": 42
|
|
@@ -87,8 +84,7 @@ export const modifications: any[] = [
|
|
|
87
84
|
"user": {
|
|
88
85
|
"id": "c4ea5584-07e3-11e4-bf19-842b2b6cfe1b",
|
|
89
86
|
"name": "Austin Andrews",
|
|
90
|
-
"github": "templarian"
|
|
91
|
-
"twitter": "Templarian"
|
|
87
|
+
"github": "templarian"
|
|
92
88
|
},
|
|
93
89
|
"icon": {
|
|
94
90
|
"id": "AB147073-9D20-4DA1-A108-3856FC1764C1",
|
|
@@ -97,8 +93,7 @@ export const modifications: any[] = [
|
|
|
97
93
|
"user": {
|
|
98
94
|
"id": "79c44334-2d86-11e5-8ac4-842b2b6cfe1b",
|
|
99
95
|
"name": "First Last",
|
|
100
|
-
"github": "GitHubUser"
|
|
101
|
-
"twitter": "TwitterName"
|
|
96
|
+
"github": "GitHubUser"
|
|
102
97
|
}
|
|
103
98
|
},
|
|
104
99
|
"issue": 42
|
|
@@ -118,8 +113,7 @@ export const modifications: any[] = [
|
|
|
118
113
|
"user": {
|
|
119
114
|
"id": "c4ea5584-07e3-11e4-bf19-842b2b6cfe1b",
|
|
120
115
|
"name": "Austin Andrews",
|
|
121
|
-
"github": "templarian"
|
|
122
|
-
"twitter": "Templarian"
|
|
116
|
+
"github": "templarian"
|
|
123
117
|
},
|
|
124
118
|
"icon": {
|
|
125
119
|
"id": "AB147073-9D20-4DA1-A108-3856FC1764C1",
|
|
@@ -128,8 +122,7 @@ export const modifications: any[] = [
|
|
|
128
122
|
"user": {
|
|
129
123
|
"id": "79c44334-2d86-11e5-8ac4-842b2b6cfe1b",
|
|
130
124
|
"name": "First Last",
|
|
131
|
-
"github": "GitHubUser"
|
|
132
|
-
"twitter": "TwitterName"
|
|
125
|
+
"github": "GitHubUser"
|
|
133
126
|
}
|
|
134
127
|
},
|
|
135
128
|
"issue": 42
|
|
@@ -149,8 +142,7 @@ export const modifications: any[] = [
|
|
|
149
142
|
"user": {
|
|
150
143
|
"id": "c4ea5584-07e3-11e4-bf19-842b2b6cfe1b",
|
|
151
144
|
"name": "Austin Andrews",
|
|
152
|
-
"github": "templarian"
|
|
153
|
-
"twitter": "Templarian"
|
|
145
|
+
"github": "templarian"
|
|
154
146
|
},
|
|
155
147
|
"icon": {
|
|
156
148
|
"id": "AB147073-9D20-4DA1-A108-3856FC1764C1",
|
|
@@ -159,8 +151,7 @@ export const modifications: any[] = [
|
|
|
159
151
|
"user": {
|
|
160
152
|
"id": "79c44334-2d86-11e5-8ac4-842b2b6cfe1b",
|
|
161
153
|
"name": "First Last",
|
|
162
|
-
"github": "GitHubUser"
|
|
163
|
-
"twitter": "TwitterName"
|
|
154
|
+
"github": "GitHubUser"
|
|
164
155
|
}
|
|
165
156
|
},
|
|
166
157
|
"issue": 42
|
|
@@ -180,8 +171,7 @@ export const modifications: any[] = [
|
|
|
180
171
|
"user": {
|
|
181
172
|
"id": "c4ea5584-07e3-11e4-bf19-842b2b6cfe1b",
|
|
182
173
|
"name": "Austin Andrews",
|
|
183
|
-
"github": "templarian"
|
|
184
|
-
"twitter": "Templarian"
|
|
174
|
+
"github": "templarian"
|
|
185
175
|
},
|
|
186
176
|
"icon": {
|
|
187
177
|
"id": "AB147073-9D20-4DA1-A108-3856FC1764C1",
|
|
@@ -190,8 +180,7 @@ export const modifications: any[] = [
|
|
|
190
180
|
"user": {
|
|
191
181
|
"id": "79c44334-2d86-11e5-8ac4-842b2b6cfe1b",
|
|
192
182
|
"name": "First Last",
|
|
193
|
-
"github": "GitHubUser"
|
|
194
|
-
"twitter": "TwitterName"
|
|
183
|
+
"github": "GitHubUser"
|
|
195
184
|
}
|
|
196
185
|
},
|
|
197
186
|
"issue": 42
|
|
@@ -211,8 +200,7 @@ export const modifications: any[] = [
|
|
|
211
200
|
"user": {
|
|
212
201
|
"id": "c4ea5584-07e3-11e4-bf19-842b2b6cfe1b",
|
|
213
202
|
"name": "Austin Andrews",
|
|
214
|
-
"github": "templarian"
|
|
215
|
-
"twitter": "Templarian"
|
|
203
|
+
"github": "templarian"
|
|
216
204
|
},
|
|
217
205
|
"icon": {
|
|
218
206
|
"id": "AB147073-9D20-4DA1-A108-3856FC1764C1",
|
|
@@ -221,8 +209,7 @@ export const modifications: any[] = [
|
|
|
221
209
|
"user": {
|
|
222
210
|
"id": "79c44334-2d86-11e5-8ac4-842b2b6cfe1b",
|
|
223
211
|
"name": "First Last",
|
|
224
|
-
"github": "GitHubUser"
|
|
225
|
-
"twitter": "TwitterName"
|
|
212
|
+
"github": "GitHubUser"
|
|
226
213
|
}
|
|
227
214
|
},
|
|
228
215
|
"issue": 42
|
|
@@ -242,8 +229,7 @@ export const modifications: any[] = [
|
|
|
242
229
|
"user": {
|
|
243
230
|
"id": "c4ea5584-07e3-11e4-bf19-842b2b6cfe1b",
|
|
244
231
|
"name": "Austin Andrews",
|
|
245
|
-
"github": "templarian"
|
|
246
|
-
"twitter": "Templarian"
|
|
232
|
+
"github": "templarian"
|
|
247
233
|
},
|
|
248
234
|
"icon": {
|
|
249
235
|
"id": "AB147073-9D20-4DA1-A108-3856FC1764C1",
|
|
@@ -252,8 +238,7 @@ export const modifications: any[] = [
|
|
|
252
238
|
"user": {
|
|
253
239
|
"id": "79c44334-2d86-11e5-8ac4-842b2b6cfe1b",
|
|
254
240
|
"name": "First Last",
|
|
255
|
-
"github": "GitHubUser"
|
|
256
|
-
"twitter": "TwitterName"
|
|
241
|
+
"github": "GitHubUser"
|
|
257
242
|
}
|
|
258
243
|
},
|
|
259
244
|
"issue": 42
|
|
@@ -273,8 +258,7 @@ export const modifications: any[] = [
|
|
|
273
258
|
"user": {
|
|
274
259
|
"id": "c4ea5584-07e3-11e4-bf19-842b2b6cfe1b",
|
|
275
260
|
"name": "Austin Andrews",
|
|
276
|
-
"github": "templarian"
|
|
277
|
-
"twitter": "Templarian"
|
|
261
|
+
"github": "templarian"
|
|
278
262
|
},
|
|
279
263
|
"icon": {
|
|
280
264
|
"id": "AB147073-9D20-4DA1-A108-3856FC1764C1",
|
|
@@ -283,8 +267,7 @@ export const modifications: any[] = [
|
|
|
283
267
|
"user": {
|
|
284
268
|
"id": "79c44334-2d86-11e5-8ac4-842b2b6cfe1b",
|
|
285
269
|
"name": "First Last",
|
|
286
|
-
"github": "GitHubUser"
|
|
287
|
-
"twitter": "TwitterName"
|
|
270
|
+
"github": "GitHubUser"
|
|
288
271
|
}
|
|
289
272
|
},
|
|
290
273
|
"issue": 42
|
|
@@ -304,8 +287,7 @@ export const modifications: any[] = [
|
|
|
304
287
|
"user": {
|
|
305
288
|
"id": "c4ea5584-07e3-11e4-bf19-842b2b6cfe1b",
|
|
306
289
|
"name": "Austin Andrews",
|
|
307
|
-
"github": "templarian"
|
|
308
|
-
"twitter": "Templarian"
|
|
290
|
+
"github": "templarian"
|
|
309
291
|
},
|
|
310
292
|
"icon": {
|
|
311
293
|
"id": "AB147073-9D20-4DA1-A108-3856FC1764C1",
|
|
@@ -314,8 +296,7 @@ export const modifications: any[] = [
|
|
|
314
296
|
"user": {
|
|
315
297
|
"id": "79c44334-2d86-11e5-8ac4-842b2b6cfe1b",
|
|
316
298
|
"name": "First Last",
|
|
317
|
-
"github": "GitHubUser"
|
|
318
|
-
"twitter": "TwitterName"
|
|
299
|
+
"github": "GitHubUser"
|
|
319
300
|
}
|
|
320
301
|
},
|
|
321
302
|
"issue": 42
|
|
@@ -335,8 +316,7 @@ export const modifications: any[] = [
|
|
|
335
316
|
"user": {
|
|
336
317
|
"id": "c4ea5584-07e3-11e4-bf19-842b2b6cfe1b",
|
|
337
318
|
"name": "Austin Andrews",
|
|
338
|
-
"github": "templarian"
|
|
339
|
-
"twitter": "Templarian"
|
|
319
|
+
"github": "templarian"
|
|
340
320
|
},
|
|
341
321
|
"icon": {
|
|
342
322
|
"id": "AB147073-9D20-4DA1-A108-3856FC1764C1",
|
|
@@ -345,8 +325,7 @@ export const modifications: any[] = [
|
|
|
345
325
|
"user": {
|
|
346
326
|
"id": "79c44334-2d86-11e5-8ac4-842b2b6cfe1b",
|
|
347
327
|
"name": "First Last",
|
|
348
|
-
"github": "GitHubUser"
|
|
349
|
-
"twitter": "TwitterName"
|
|
328
|
+
"github": "GitHubUser"
|
|
350
329
|
}
|
|
351
330
|
},
|
|
352
331
|
"issue": 42
|
|
@@ -366,8 +345,7 @@ export const modifications: any[] = [
|
|
|
366
345
|
"user": {
|
|
367
346
|
"id": "c4ea5584-07e3-11e4-bf19-842b2b6cfe1b",
|
|
368
347
|
"name": "Austin Andrews",
|
|
369
|
-
"github": "templarian"
|
|
370
|
-
"twitter": "Templarian"
|
|
348
|
+
"github": "templarian"
|
|
371
349
|
},
|
|
372
350
|
"icon": {
|
|
373
351
|
"id": "AB147073-9D20-4DA1-A108-3856FC1764C1",
|
|
@@ -376,8 +354,7 @@ export const modifications: any[] = [
|
|
|
376
354
|
"user": {
|
|
377
355
|
"id": "79c44334-2d86-11e5-8ac4-842b2b6cfe1b",
|
|
378
356
|
"name": "First Last",
|
|
379
|
-
"github": "GitHubUser"
|
|
380
|
-
"twitter": "TwitterName"
|
|
357
|
+
"github": "GitHubUser"
|
|
381
358
|
}
|
|
382
359
|
},
|
|
383
360
|
"issue": 42
|
|
@@ -397,8 +374,7 @@ export const modifications: any[] = [
|
|
|
397
374
|
"user": {
|
|
398
375
|
"id": "c4ea5584-07e3-11e4-bf19-842b2b6cfe1b",
|
|
399
376
|
"name": "Austin Andrews",
|
|
400
|
-
"github": "templarian"
|
|
401
|
-
"twitter": "Templarian"
|
|
377
|
+
"github": "templarian"
|
|
402
378
|
},
|
|
403
379
|
"icon": {
|
|
404
380
|
"id": "AB147073-9D20-4DA1-A108-3856FC1764C1",
|
|
@@ -407,8 +383,7 @@ export const modifications: any[] = [
|
|
|
407
383
|
"user": {
|
|
408
384
|
"id": "79c44334-2d86-11e5-8ac4-842b2b6cfe1b",
|
|
409
385
|
"name": "First Last",
|
|
410
|
-
"github": "GitHubUser"
|
|
411
|
-
"twitter": "TwitterName"
|
|
386
|
+
"github": "GitHubUser"
|
|
412
387
|
}
|
|
413
388
|
},
|
|
414
389
|
"issue": 42
|
|
@@ -96,7 +96,7 @@ function itemsInsertDates(modifications) {
|
|
|
96
96
|
template
|
|
97
97
|
})
|
|
98
98
|
export default class PgModification extends HTMLElement {
|
|
99
|
-
@Prop() modifications: Modification[]
|
|
99
|
+
@Prop() modifications: Modification[] = [];
|
|
100
100
|
@Prop() edit: boolean = false;
|
|
101
101
|
// Ex: pictogrammers/repo
|
|
102
102
|
@Prop() github: string = '';
|
package/pg/overlay/overlay.ts
CHANGED
|
@@ -1,26 +1,27 @@
|
|
|
1
|
-
import { Component } from '@pictogrammers/element';
|
|
1
|
+
import { Component, Prop } from '@pictogrammers/element';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
const layers: any[] = [];
|
|
8
|
-
const promises: any[] = [];
|
|
3
|
+
const layers: Set<HTMLElement> = new Set();
|
|
4
|
+
const promises: Map<HTMLElement, (value: any) => void> = new Map();
|
|
9
5
|
|
|
10
6
|
@Component()
|
|
11
7
|
export default class PgOverlay extends HTMLElement {
|
|
12
8
|
static open(props: any = {}): Promise<any> {
|
|
13
|
-
var ele = document.createElement(
|
|
9
|
+
var ele = document.createElement(this.name);
|
|
14
10
|
Object.assign(ele, props);
|
|
15
11
|
document.body.appendChild(ele);
|
|
16
|
-
layers.
|
|
12
|
+
layers.add(ele);
|
|
17
13
|
return new Promise((resolve) => {
|
|
18
|
-
promises.
|
|
14
|
+
promises.set(ele, resolve);
|
|
19
15
|
});
|
|
20
16
|
}
|
|
21
17
|
|
|
22
18
|
close(result?: any) {
|
|
23
|
-
|
|
24
|
-
|
|
19
|
+
this.remove();
|
|
20
|
+
layers.delete(this);
|
|
21
|
+
const resolve = promises.get(this);
|
|
22
|
+
if (resolve) {
|
|
23
|
+
resolve(result);
|
|
24
|
+
}
|
|
25
|
+
promises.delete(this);
|
|
25
26
|
}
|
|
26
27
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Overlay Menu
|
|
2
|
+
|
|
3
|
+
The `PgOverlayContextMenu` creates an overlay menu above a source element. For standard menu lists use the `PgMenuItem` for the check.
|
|
4
|
+
|
|
5
|
+
Components that use `PgOverlayContextMenu` include:
|
|
6
|
+
|
|
7
|
+
- `pg-input-select`
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
import PgMenuItem from '@pictogrammers/components/pg/menuItem';
|
|
13
|
+
|
|
14
|
+
#isOpen: false;
|
|
15
|
+
handleSourceClick(e: MouseEvent) {
|
|
16
|
+
if (this.#isOpen) { return; }
|
|
17
|
+
this.#isOpen = true;
|
|
18
|
+
const result = await PgOverlayContextMenu.open({
|
|
19
|
+
source: this.$element,
|
|
20
|
+
x: e.clientX,
|
|
21
|
+
y: e.clientY,
|
|
22
|
+
items: [{
|
|
23
|
+
label: 'Item 1',
|
|
24
|
+
value: 'item1',
|
|
25
|
+
type: PgMenuItem
|
|
26
|
+
}, {
|
|
27
|
+
label: 'Item 2',
|
|
28
|
+
value: 'item2',
|
|
29
|
+
type: PgMenuItem
|
|
30
|
+
}]
|
|
31
|
+
});
|
|
32
|
+
this.#isOpen = false;
|
|
33
|
+
console.log(result);
|
|
34
|
+
}
|
|
35
|
+
```
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
p {
|
|
2
|
+
margin: 0.5rem 0;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
[part=area] {
|
|
6
|
+
display: flex;
|
|
7
|
+
width: 20rem;
|
|
8
|
+
height: 6rem;
|
|
9
|
+
border: 1px dashed rgb(79, 143, 249);
|
|
10
|
+
border-radius: 1rem;
|
|
11
|
+
align-items: center;
|
|
12
|
+
justify-content: center;
|
|
13
|
+
cursor: default;
|
|
14
|
+
background: var(--pg-focus-background-color, rgba(79, 143, 249, 0.1));
|
|
15
|
+
color: rgba(79, 143, 249, 0.75);
|
|
16
|
+
text-shadow: 0 0 4px #fff;
|
|
17
|
+
box-sizing: border-box;
|
|
18
|
+
outline: 0;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
[part=area]:focus {
|
|
22
|
+
border-width: 2px;
|
|
23
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { Component, Part, Prop } from '@pictogrammers/element';
|
|
2
|
+
|
|
3
|
+
import PgMenuItemIcon from '../../../menuItemIcon/menuItemIcon';
|
|
4
|
+
import PgMenuDivider from '../../../menuDivider/menuDivider';
|
|
5
|
+
import PgOverlayContextMenu from '../../overlayContextMenu';
|
|
6
|
+
|
|
7
|
+
import template from './basic.html';
|
|
8
|
+
import style from './basic.css';
|
|
9
|
+
|
|
10
|
+
const IconFile = 'M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z';
|
|
11
|
+
const IconFolder = 'M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z';
|
|
12
|
+
const IconLeft = 'M3,3H21V5H3V3M3,7H15V9H3V7M3,11H21V13H3V11M3,15H15V17H3V15M3,19H21V21H3V19Z';
|
|
13
|
+
const IconCenter = 'M3,3H21V5H3V3M7,7H17V9H7V7M3,11H21V13H3V11M7,15H17V17H7V15M3,19H21V21H3V19Z';
|
|
14
|
+
const IconRight = 'M3,3H21V5H3V3M9,7H21V9H9V7M3,11H21V13H3V11M9,15H21V17H9V15M3,19H21V21H3V19Z';
|
|
15
|
+
|
|
16
|
+
@Component({
|
|
17
|
+
selector: 'x-pg-overlay-context-menu-basic',
|
|
18
|
+
template,
|
|
19
|
+
style
|
|
20
|
+
})
|
|
21
|
+
export default class XPgOverlayContextMenuBasic extends HTMLElement {
|
|
22
|
+
@Part() $area: HTMLDivElement;
|
|
23
|
+
@Part() $result: HTMLSpanElement;
|
|
24
|
+
@Part() $input: HTMLSpanElement;
|
|
25
|
+
|
|
26
|
+
connectedCallback() {
|
|
27
|
+
this.$area.addEventListener('contextmenu', this.#handleContextMenu.bind(this));
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
#value = null;
|
|
31
|
+
|
|
32
|
+
async #handleContextMenu(e: MouseEvent) {
|
|
33
|
+
console.log('context');
|
|
34
|
+
e.preventDefault();
|
|
35
|
+
const items = [{
|
|
36
|
+
label: 'Add File',
|
|
37
|
+
value: 'item1',
|
|
38
|
+
icon: IconFile,
|
|
39
|
+
type: PgMenuItemIcon
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
label: 'Add Folder',
|
|
43
|
+
value: 'item2',
|
|
44
|
+
icon: IconFolder,
|
|
45
|
+
type: PgMenuItemIcon
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
type: PgMenuDivider
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
label: 'Text Alignment',
|
|
52
|
+
value: 'item3',
|
|
53
|
+
icon: IconLeft,
|
|
54
|
+
type: PgMenuItemIcon,
|
|
55
|
+
items: [{
|
|
56
|
+
label: 'Left',
|
|
57
|
+
value: 'left',
|
|
58
|
+
icon: IconLeft,
|
|
59
|
+
type: PgMenuItemIcon,
|
|
60
|
+
checked: true
|
|
61
|
+
}, {
|
|
62
|
+
label: 'Center',
|
|
63
|
+
value: 'center',
|
|
64
|
+
icon: IconCenter,
|
|
65
|
+
type: PgMenuItemIcon,
|
|
66
|
+
checked: false
|
|
67
|
+
}, {
|
|
68
|
+
label: 'Right',
|
|
69
|
+
value: 'right',
|
|
70
|
+
icon: IconRight,
|
|
71
|
+
type: PgMenuItemIcon,
|
|
72
|
+
checked: false
|
|
73
|
+
}]
|
|
74
|
+
}];
|
|
75
|
+
const result = await PgOverlayContextMenu.open({
|
|
76
|
+
source: this.$area,
|
|
77
|
+
x: e.clientX,
|
|
78
|
+
y: e.clientY,
|
|
79
|
+
value: this.#value,
|
|
80
|
+
items
|
|
81
|
+
});
|
|
82
|
+
if (result !== undefined) {
|
|
83
|
+
this.#value = result;
|
|
84
|
+
}
|
|
85
|
+
this.$result.textContent = JSON.stringify(result);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
display: contents;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
[part="overlay"] {
|
|
6
|
+
margin: 0;
|
|
7
|
+
padding: 0;
|
|
8
|
+
border: 0;
|
|
9
|
+
background: transparent;
|
|
10
|
+
overflow: visible;
|
|
11
|
+
--pg-menu-box-shadow: 0 0.125rem 0.5rem rgba(0, 0, 0, 0.25);
|
|
12
|
+
top: anchor(top);
|
|
13
|
+
left: anchor(left);
|
|
14
|
+
min-width: 10rem;
|
|
15
|
+
margin: var(--pg-overlay-menu-_y, 0) 0 0 var(--pg-overlay-menu-_x, 0);
|
|
16
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { Component, Part, Prop } from '@pictogrammers/element';
|
|
2
|
+
|
|
3
|
+
import PgMenu from '../menu/menu';
|
|
4
|
+
import PgOverlay from '../overlay/overlay';
|
|
5
|
+
|
|
6
|
+
import template from './overlayContextMenu.html';
|
|
7
|
+
import style from './overlayContextMenu.css';
|
|
8
|
+
|
|
9
|
+
// Only allow a single open context menu
|
|
10
|
+
const stack: PgOverlayContextMenu[] = [];
|
|
11
|
+
const stack2: PgOverlayContextMenu[] = [];
|
|
12
|
+
|
|
13
|
+
@Component({
|
|
14
|
+
selector: 'pg-overlay-context-menu',
|
|
15
|
+
template,
|
|
16
|
+
style
|
|
17
|
+
})
|
|
18
|
+
export default class PgOverlayContextMenu extends PgOverlay {
|
|
19
|
+
@Part() $overlay: HTMLDivElement;
|
|
20
|
+
@Part() $menu: PgMenu;
|
|
21
|
+
|
|
22
|
+
@Prop() source: HTMLElement | null = null;
|
|
23
|
+
@Prop() x: number = 0;
|
|
24
|
+
@Prop() y: number = 0;
|
|
25
|
+
@Prop() default: any = null;
|
|
26
|
+
@Prop() items: any[] = [];
|
|
27
|
+
@Prop() value: any = null;
|
|
28
|
+
|
|
29
|
+
render(changes) {
|
|
30
|
+
if (changes.items) {
|
|
31
|
+
//if (this.value !== null) {
|
|
32
|
+
// this.items.forEach(item => item.checked = false);
|
|
33
|
+
// this.items.find(item => item.value === this.value.value).checked = true;
|
|
34
|
+
//}
|
|
35
|
+
this.$menu.items = this.items;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
connectedCallback() {
|
|
40
|
+
stack.pop()?.close();
|
|
41
|
+
stack.push(this);
|
|
42
|
+
stack2.push(this);
|
|
43
|
+
this.$menu.addEventListener('select', this.#handleSelect.bind(this));
|
|
44
|
+
this.$menu.addEventListener('close', this.#handleClose.bind(this));
|
|
45
|
+
this.$overlay.popover = 'auto';
|
|
46
|
+
if (this.source !== null) {
|
|
47
|
+
// @ts-ignore
|
|
48
|
+
this.$overlay.showPopover({
|
|
49
|
+
source: this.source
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
this.$overlay.addEventListener('toggle', this.#toggle.bind(this));
|
|
53
|
+
// Position
|
|
54
|
+
const rect = this.source?.getBoundingClientRect();
|
|
55
|
+
const x = this.x - (rect?.left || 0),
|
|
56
|
+
y = this.y - (rect?.top || 0);
|
|
57
|
+
// ToDo: update to CSS Variables
|
|
58
|
+
this.$overlay.style.setProperty('--pg-overlay-menu-_x', `${x}px`);
|
|
59
|
+
this.$overlay.style.setProperty('--pg-overlay-menu-_y', `${y}px`);
|
|
60
|
+
// Focus
|
|
61
|
+
this.$menu.focus(0);
|
|
62
|
+
// Should return focus
|
|
63
|
+
this.#handleDown = this.#down.bind(this);
|
|
64
|
+
document.addEventListener('pointerdown', this.#handleDown);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
#ignore = false;
|
|
68
|
+
#handleDown;
|
|
69
|
+
#down(e: MouseEvent) {
|
|
70
|
+
this.#ignore = e.composedPath().includes(this.source as any);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
#toggle(e: ToggleEvent) {
|
|
74
|
+
if (e.newState === 'closed') {
|
|
75
|
+
this.close();
|
|
76
|
+
if (stack2.length === 0 && this.#ignore) {
|
|
77
|
+
console.log(e);
|
|
78
|
+
this.source?.focus();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
disconnectedCallback() {
|
|
84
|
+
stack2.pop();
|
|
85
|
+
document.removeEventListener('pointerdown', this.#handleDown);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
#handleClose(e: any) {
|
|
89
|
+
this.close();
|
|
90
|
+
this.source?.focus();
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
#handleSelect(e: any) {
|
|
94
|
+
e.detail.item.index = e.detail.index;
|
|
95
|
+
this.close(e.detail.item);
|
|
96
|
+
this.source?.focus();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Overlay Menu
|
|
2
|
+
|
|
3
|
+
The `PgOverlayMenu` creates an overlay menu above a source element. For standard menu lists use the `PgMenuItem` for the check.
|
|
4
|
+
|
|
5
|
+
Components that use `PgOverlayMenu` include:
|
|
6
|
+
|
|
7
|
+
- `pg-button-menu`
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
import PgMenuItem from '@pictogrammers/components/pg/menuItem';
|
|
13
|
+
|
|
14
|
+
#isOpen: false;
|
|
15
|
+
handleSourceClick() {
|
|
16
|
+
if (this.#isOpen) { return; }
|
|
17
|
+
this.#isOpen = true;
|
|
18
|
+
const result = await PgOverlayMenu.open({
|
|
19
|
+
source: this.$element,
|
|
20
|
+
items: [{
|
|
21
|
+
label: 'Item 1',
|
|
22
|
+
value: 'item1',
|
|
23
|
+
type: PgMenuItem
|
|
24
|
+
}, {
|
|
25
|
+
label: 'Item 2',
|
|
26
|
+
value: 'item2',
|
|
27
|
+
type: PgMenuItem
|
|
28
|
+
}]
|
|
29
|
+
});
|
|
30
|
+
this.#isOpen = false;
|
|
31
|
+
console.log(result);
|
|
32
|
+
}
|
|
33
|
+
```
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Component, Part, Prop } from '@pictogrammers/element';
|
|
2
|
+
|
|
3
|
+
import PgMenuItem from '../../../menuItem/menuItem';
|
|
4
|
+
import PgMenuDivider from '../../../menuDivider/menuDivider';
|
|
5
|
+
import PgOverlayMenu from '../../overlayMenu';
|
|
6
|
+
|
|
7
|
+
import template from './basic.html';
|
|
8
|
+
import style from './basic.css';
|
|
9
|
+
|
|
10
|
+
@Component({
|
|
11
|
+
selector: 'x-pg-overlay-menu-basic',
|
|
12
|
+
template,
|
|
13
|
+
style
|
|
14
|
+
})
|
|
15
|
+
export default class XPgOverlayMenuBasic extends HTMLElement {
|
|
16
|
+
@Part() $button: HTMLButtonElement;
|
|
17
|
+
@Part() $result: HTMLSpanElement;
|
|
18
|
+
@Part() $input: HTMLSpanElement;
|
|
19
|
+
|
|
20
|
+
connectedCallback() {
|
|
21
|
+
this.$button.addEventListener('click', this.#handleClick.bind(this));
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
#value = null;
|
|
25
|
+
|
|
26
|
+
#menuOpen = false;
|
|
27
|
+
async #handleClick() {
|
|
28
|
+
if (this.#menuOpen) { return; }
|
|
29
|
+
const items = [{
|
|
30
|
+
label: 'Item 1',
|
|
31
|
+
value: 'item1',
|
|
32
|
+
type: PgMenuItem
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
label: 'Item 2',
|
|
36
|
+
value: 'item2',
|
|
37
|
+
type: PgMenuItem
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
type: PgMenuDivider
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
label: 'Item 3',
|
|
44
|
+
value: 'item3',
|
|
45
|
+
type: PgMenuItem
|
|
46
|
+
}];
|
|
47
|
+
this.#menuOpen = true;
|
|
48
|
+
const result = await PgOverlayMenu.open({
|
|
49
|
+
source: this.$button,
|
|
50
|
+
value: this.#value,
|
|
51
|
+
items,
|
|
52
|
+
oninput: (value) => {
|
|
53
|
+
this.$input.textContent = value;
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
if (result !== undefined) {
|
|
57
|
+
this.#value = result;
|
|
58
|
+
}
|
|
59
|
+
this.$result.textContent = result;
|
|
60
|
+
this.#menuOpen = false;
|
|
61
|
+
}
|
|
62
|
+
}
|