@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.
Files changed (294) hide show
  1. package/README.md +11 -12
  2. package/favicon.svg +20 -0
  3. package/index.html +67 -49
  4. package/main.js +2 -0
  5. package/main.js.LICENSE.txt +10 -0
  6. package/package.json +6 -6
  7. package/pg/annoy/README.md +0 -5
  8. package/pg/annoy/__examples__/basic/basic.css +3 -0
  9. package/pg/annoy/__examples__/basic/basic.html +4 -7
  10. package/pg/annoy/__examples__/basic/basic.ts +3 -1
  11. package/pg/annoy/annoy.css +29 -198
  12. package/pg/annoy/annoy.html +5 -56
  13. package/pg/annoy/annoy.ts +4 -25
  14. package/pg/app/README.md +11 -0
  15. package/pg/app/__examples__/basic/basic.css +8 -0
  16. package/pg/app/__examples__/basic/basic.html +15 -0
  17. package/pg/app/__examples__/basic/basic.ts +13 -0
  18. package/pg/app/app.css +108 -0
  19. package/pg/app/app.html +16 -0
  20. package/pg/app/app.ts +45 -0
  21. package/pg/app/index.ts +3 -0
  22. package/pg/avatar/__examples__/basic/basic.ts +5 -3
  23. package/pg/button/README.md +3 -0
  24. package/pg/button/button.css +13 -12
  25. package/pg/button/button.spec.ts +35 -0
  26. package/pg/button/button.ts +17 -12
  27. package/pg/buttonLink/buttonLink.css +3 -2
  28. package/pg/buttonMenu/README.md +54 -0
  29. package/pg/buttonMenu/__examples__/basic/basic.html +6 -0
  30. package/pg/buttonMenu/__examples__/basic/basic.ts +43 -0
  31. package/pg/buttonMenu/buttonMenu.css +12 -0
  32. package/pg/buttonMenu/buttonMenu.html +4 -0
  33. package/pg/buttonMenu/buttonMenu.ts +63 -0
  34. package/pg/buttonMenu/index.ts +3 -0
  35. package/pg/buttonToggle/__examples__/basic/basic.ts +2 -2
  36. package/pg/buttonToggle/__examples__/persist/persist.html +10 -0
  37. package/pg/buttonToggle/__examples__/persist/persist.ts +35 -0
  38. package/pg/cardUser/__examples__/basic/basic.ts +0 -1
  39. package/pg/cardUser/cardUser.css +2 -10
  40. package/pg/cardUser/cardUser.html +0 -5
  41. package/pg/cardUser/cardUser.ts +0 -6
  42. package/pg/database/README.md +1 -1
  43. package/pg/database/__examples__/basic/basic.html +2 -1
  44. package/pg/database/__examples__/basic/basic.ts +3 -3
  45. package/pg/dropdown/dropdown.ts +0 -19
  46. package/pg/grid/__examples__/basic/basic.html +2 -2
  47. package/pg/grid/__examples__/basic/basic.ts +3 -2
  48. package/pg/grid/grid.ts +0 -1
  49. package/pg/icon/README.md +6 -5
  50. package/pg/icon/__examples__/basic/basic.html +2 -2
  51. package/pg/icon/__examples__/basic/basic.ts +1 -1
  52. package/pg/icon/icon.ts +6 -0
  53. package/pg/inputCheckList/__examples__/basic/basic.ts +5 -5
  54. package/pg/inputCheckList/inputCheckList.ts +2 -0
  55. package/pg/inputFileLocal/inputFileLocal.css +3 -2
  56. package/pg/inputPixelEditor/README.md +132 -0
  57. package/pg/inputPixelEditor/__examples__/basic/basic.css +29 -0
  58. package/pg/inputPixelEditor/__examples__/basic/basic.html +63 -0
  59. package/pg/inputPixelEditor/__examples__/basic/basic.ts +200 -0
  60. package/pg/inputPixelEditor/__examples__/basic/openUtils.ts +41 -0
  61. package/pg/inputPixelEditor/__examples__/basic/saveUtil.ts +35 -0
  62. package/pg/inputPixelEditor/index.ts +3 -0
  63. package/pg/inputPixelEditor/inputPixelEditor.css +27 -0
  64. package/pg/inputPixelEditor/inputPixelEditor.html +3 -0
  65. package/pg/inputPixelEditor/inputPixelEditor.ts +839 -0
  66. package/pg/inputPixelEditor/utils/bitmapToMask.ts +202 -0
  67. package/pg/inputPixelEditor/utils/cloneGrid.ts +17 -0
  68. package/pg/inputPixelEditor/utils/constants.ts +1 -0
  69. package/pg/inputPixelEditor/utils/createLayer.ts +8 -0
  70. package/pg/inputPixelEditor/utils/debounce.ts +5 -0
  71. package/pg/inputPixelEditor/utils/diffGrid.ts +26 -0
  72. package/pg/inputPixelEditor/utils/fillGrid.ts +11 -0
  73. package/pg/inputPixelEditor/utils/getEllipseOutlinePixels.ts +105 -0
  74. package/pg/inputPixelEditor/utils/getEllipsePixels.ts +28 -0
  75. package/pg/inputPixelEditor/utils/getGuides.ts +232 -0
  76. package/pg/inputPixelEditor/utils/getLinePixels.ts +18 -0
  77. package/pg/inputPixelEditor/utils/getRectangleOutlinePixels.ts +20 -0
  78. package/pg/inputPixelEditor/utils/getRectanglePixels.ts +15 -0
  79. package/pg/inputPixelEditor/utils/inputMode.ts +8 -0
  80. package/pg/inputPixelEditor/utils/interateGrid.ts +7 -0
  81. package/pg/inputPixelEditor/utils/isEmptyGrid.ts +3 -0
  82. package/pg/inputPixelEditor/utils/maskToBitmap.ts +66 -0
  83. package/pg/inputRange/__examples__/basic/basic.ts +4 -4
  84. package/pg/inputRange/inputRange.ts +6 -4
  85. package/pg/inputSelect/README.md +1 -1
  86. package/pg/inputSelect/__examples__/basic/basic.ts +7 -5
  87. package/pg/inputSelect/inputSelect.css +15 -12
  88. package/pg/inputSelect/inputSelect.html +3 -3
  89. package/pg/inputSelect/inputSelect.ts +33 -30
  90. package/pg/inputText/__examples__/basic/basic.ts +6 -6
  91. package/pg/inputText/inputText.css +1 -0
  92. package/pg/inputUserSelect/README.md +1 -1
  93. package/pg/inputUserSelect/inputUserSelect.ts +1 -1
  94. package/pg/listTag/__examples__/basic/basic.ts +4 -5
  95. package/pg/markdown/README.md +17 -3
  96. package/pg/markdown/__examples__/basic/basic.ts +2 -2
  97. package/pg/markdown/__examples__/basic/constants.ts +1 -1
  98. package/pg/markdown/markdown.css +11 -0
  99. package/pg/menu/README.md +46 -0
  100. package/pg/menu/__examples__/basic/basic.html +6 -0
  101. package/pg/menu/__examples__/basic/basic.ts +46 -0
  102. package/pg/menu/index.ts +3 -0
  103. package/pg/menu/menu.css +19 -0
  104. package/pg/menu/menu.html +1 -0
  105. package/pg/menu/menu.ts +119 -0
  106. package/pg/menuDivider/README.md +7 -0
  107. package/pg/menuDivider/__examples__/basic/basic.html +3 -0
  108. package/pg/menuDivider/__examples__/basic/basic.ts +28 -0
  109. package/pg/menuDivider/index.ts +3 -0
  110. package/pg/menuDivider/menuDivider.css +9 -0
  111. package/pg/menuDivider/menuDivider.html +1 -0
  112. package/pg/menuDivider/menuDivider.ts +22 -0
  113. package/pg/menuIcon/menuIcon.ts +43 -36
  114. package/pg/menuItem/README.md +32 -0
  115. package/pg/menuItem/__examples__/basic/basic.html +26 -0
  116. package/pg/menuItem/__examples__/basic/basic.ts +41 -0
  117. package/pg/menuItem/index.ts +3 -0
  118. package/pg/menuItem/menuItem.css +97 -0
  119. package/pg/menuItem/menuItem.html +1 -0
  120. package/pg/menuItem/menuItem.ts +77 -0
  121. package/pg/menuItemIcon/README.md +32 -0
  122. package/pg/menuItemIcon/__examples__/basic/basic.html +34 -0
  123. package/pg/menuItemIcon/__examples__/basic/basic.ts +55 -0
  124. package/pg/menuItemIcon/index.ts +3 -0
  125. package/pg/menuItemIcon/menuItemIcon.css +106 -0
  126. package/pg/menuItemIcon/menuItemIcon.html +4 -0
  127. package/pg/menuItemIcon/menuItemIcon.ts +156 -0
  128. package/pg/modalAlert/__examples__/basic/basic.ts +1 -1
  129. package/pg/modalAlert/modalAlert.css +1 -4
  130. package/pg/modalAlert/modalAlert.ts +18 -4
  131. package/pg/modification/__examples__/basic/basic.ts +1 -2
  132. package/pg/modification/__examples__/basic/constants.ts +25 -50
  133. package/pg/modification/modification.ts +1 -1
  134. package/pg/overlay/overlay.ts +13 -12
  135. package/pg/overlayContextMenu/README.md +35 -0
  136. package/pg/overlayContextMenu/__examples__/basic/basic.css +23 -0
  137. package/pg/overlayContextMenu/__examples__/basic/basic.html +7 -0
  138. package/pg/overlayContextMenu/__examples__/basic/basic.ts +87 -0
  139. package/pg/overlayContextMenu/index.ts +3 -0
  140. package/pg/overlayContextMenu/overlayContextMenu.css +16 -0
  141. package/pg/overlayContextMenu/overlayContextMenu.html +3 -0
  142. package/pg/overlayContextMenu/overlayContextMenu.ts +98 -0
  143. package/pg/overlayMenu/README.md +33 -0
  144. package/pg/overlayMenu/__examples__/basic/basic.css +3 -0
  145. package/pg/overlayMenu/__examples__/basic/basic.html +5 -0
  146. package/pg/overlayMenu/__examples__/basic/basic.ts +62 -0
  147. package/pg/overlayMenu/index.ts +3 -0
  148. package/pg/overlayMenu/overlayMenu.css +16 -0
  149. package/pg/overlayMenu/overlayMenu.html +3 -0
  150. package/pg/overlayMenu/overlayMenu.ts +67 -0
  151. package/pg/overlaySelectMenu/README.md +33 -0
  152. package/pg/overlaySelectMenu/__examples__/basic/basic.css +3 -0
  153. package/pg/overlaySelectMenu/__examples__/basic/basic.html +5 -0
  154. package/pg/overlaySelectMenu/__examples__/basic/basic.ts +62 -0
  155. package/pg/overlaySelectMenu/index.ts +3 -0
  156. package/pg/overlaySelectMenu/overlaySelectMenu.css +17 -0
  157. package/pg/overlaySelectMenu/overlaySelectMenu.html +3 -0
  158. package/pg/overlaySelectMenu/overlaySelectMenu.ts +96 -0
  159. package/pg/overlaySubMenu/README.md +35 -0
  160. package/pg/overlaySubMenu/index.ts +3 -0
  161. package/pg/overlaySubMenu/overlaySubMenu.css +27 -0
  162. package/pg/overlaySubMenu/overlaySubMenu.html +3 -0
  163. package/pg/overlaySubMenu/overlaySubMenu.ts +103 -0
  164. package/pg/picker/picker.ts +1 -19
  165. package/pg/scroll/__examples__/basic/basic.ts +1 -1
  166. package/pg/search/__examples__/basic/basic.ts +10 -7
  167. package/pg/search/search.css +2 -2
  168. package/pg/shared/models/user.ts +0 -2
  169. package/pg/tab/tab.ts +0 -10
  170. package/pg/tabs/partials/tab.css +42 -0
  171. package/pg/tabs/partials/tab.ts +70 -0
  172. package/pg/tabs/tabs.css +0 -53
  173. package/pg/tabs/tabs.ts +54 -70
  174. package/pg/toast/README.md +35 -6
  175. package/pg/toast/__examples__/basic/basic.html +7 -0
  176. package/pg/toast/__examples__/basic/basic.ts +76 -0
  177. package/pg/toast/toast.css +3 -0
  178. package/pg/toast/toast.ts +20 -4
  179. package/pg/tooltip/addTooltip.ts +3 -1
  180. package/pg/tooltip/tooltip.ts +1 -1
  181. package/pg/tree/README.md +67 -0
  182. package/pg/tree/__examples__/basic/basic.html +10 -0
  183. package/pg/tree/__examples__/basic/basic.ts +162 -0
  184. package/pg/tree/index.ts +3 -0
  185. package/pg/tree/tree.css +28 -0
  186. package/pg/tree/tree.html +1 -0
  187. package/pg/tree/tree.ts +217 -0
  188. package/pg/treeButtonIcon/README.md +39 -0
  189. package/pg/treeButtonIcon/index.ts +3 -0
  190. package/pg/treeButtonIcon/treeButtonIcon.css +18 -0
  191. package/pg/treeButtonIcon/treeButtonIcon.html +3 -0
  192. package/pg/treeButtonIcon/treeButtonIcon.ts +42 -0
  193. package/pg/treeItem/README.md +3 -0
  194. package/pg/treeItem/index.ts +3 -0
  195. package/pg/treeItem/treeItem.css +263 -0
  196. package/pg/treeItem/treeItem.html +16 -0
  197. package/pg/treeItem/treeItem.ts +558 -0
  198. package/pgAnnoy.js +1 -0
  199. package/pgApp.js +1 -0
  200. package/pgAvatar.js +1 -0
  201. package/pgButton.js +1 -0
  202. package/pgButtonGroup.js +1 -0
  203. package/pgButtonLink.js +1 -0
  204. package/pgButtonMenu.js +1 -0
  205. package/pgButtonToggle.js +1 -0
  206. package/pgCard.js +1 -0
  207. package/pgCardUser.js +1 -0
  208. package/pgColor.js +1 -0
  209. package/pgDatabase.js +1 -0
  210. package/pgDropdown.js +1 -0
  211. package/pgGrid.js +1 -0
  212. package/pgHeader.js +1 -0
  213. package/pgIcon.js +1 -0
  214. package/pgInputCheck.js +1 -0
  215. package/pgInputCheckList.js +1 -0
  216. package/pgInputFileLocal.js +1 -0
  217. package/pgInputHexRgb.js +1 -0
  218. package/pgInputPixelEditor.js +1 -0
  219. package/pgInputRange.js +1 -0
  220. package/pgInputSelect.js +1 -0
  221. package/pgInputText.js +1 -0
  222. package/pgInputTextIcon.js +1 -0
  223. package/pgInputUserSelect.js +1 -0
  224. package/pgListTag.js +1 -0
  225. package/pgMarkdown.js +2 -0
  226. package/pgMarkdown.js.LICENSE.txt +10 -0
  227. package/pgMenu.js +1 -0
  228. package/pgMenuDivider.js +1 -0
  229. package/pgMenuIcon.js +1 -0
  230. package/pgMenuItem.js +1 -0
  231. package/pgMenuItemIcon.js +1 -0
  232. package/pgModalAlert.js +1 -0
  233. package/pgModification.js +1 -0
  234. package/pgNav.js +1 -0
  235. package/pgOverlay.js +1 -0
  236. package/pgOverlayContextMenu.js +1 -0
  237. package/pgOverlayMenu.js +1 -0
  238. package/pgOverlaySelectMenu.js +1 -0
  239. package/pgOverlaySubMenu.js +1 -0
  240. package/pgPicker.js +1 -0
  241. package/pgPreview.js +1 -0
  242. package/pgScroll.js +1 -0
  243. package/pgSearch.js +1 -0
  244. package/pgTab.js +1 -0
  245. package/pgTabs.js +1 -0
  246. package/pgToast.js +1 -0
  247. package/pgToasts.js +1 -0
  248. package/pgTooltip.js +1 -0
  249. package/pgTree.js +1 -0
  250. package/pgTreeButtonIcon.js +1 -0
  251. package/pgTreeItem.js +1 -0
  252. package/theme-ui3.css +31 -0
  253. package/@types/css.d.ts +0 -4
  254. package/@types/html.d.ts +0 -4
  255. package/dist/main.js +0 -3819
  256. package/dist/pgAnnoy.js +0 -116
  257. package/dist/pgAvatar.js +0 -136
  258. package/dist/pgButton.js +0 -116
  259. package/dist/pgButtonGroup.js +0 -116
  260. package/dist/pgButtonLink.js +0 -116
  261. package/dist/pgButtonToggle.js +0 -146
  262. package/dist/pgCard.js +0 -116
  263. package/dist/pgCardUser.js +0 -196
  264. package/dist/pgColor.js +0 -136
  265. package/dist/pgDatabase.js +0 -236
  266. package/dist/pgDropdown.js +0 -686
  267. package/dist/pgGrid.js +0 -126
  268. package/dist/pgHeader.js +0 -116
  269. package/dist/pgIcon.js +0 -116
  270. package/dist/pgInputCheck.js +0 -116
  271. package/dist/pgInputCheckList.js +0 -126
  272. package/dist/pgInputFileLocal.js +0 -116
  273. package/dist/pgInputHexRgb.js +0 -126
  274. package/dist/pgInputRange.js +0 -116
  275. package/dist/pgInputSelect.js +0 -116
  276. package/dist/pgInputText.js +0 -116
  277. package/dist/pgInputTextIcon.js +0 -176
  278. package/dist/pgInputUserSelect.js +0 -116
  279. package/dist/pgListTag.js +0 -136
  280. package/dist/pgMarkdown.js +0 -346
  281. package/dist/pgMenuIcon.js +0 -206
  282. package/dist/pgModalAlert.js +0 -126
  283. package/dist/pgModification.js +0 -396
  284. package/dist/pgNav.js +0 -116
  285. package/dist/pgOverlay.js +0 -96
  286. package/dist/pgPicker.js +0 -116
  287. package/dist/pgPreview.js +0 -116
  288. package/dist/pgScroll.js +0 -266
  289. package/dist/pgSearch.js +0 -146
  290. package/dist/pgTab.js +0 -116
  291. package/dist/pgTabs.js +0 -136
  292. package/dist/pgToast.js +0 -136
  293. package/dist/pgToasts.js +0 -136
  294. 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[] | null = null;
99
+ @Prop() modifications: Modification[] = [];
100
100
  @Prop() edit: boolean = false;
101
101
  // Ex: pictogrammers/repo
102
102
  @Prop() github: string = '';
@@ -1,26 +1,27 @@
1
- import { Component } from '@pictogrammers/element';
1
+ import { Component, Prop } from '@pictogrammers/element';
2
2
 
3
- function camelToDash(str: string): string {
4
- return str.replace(/([a-zA-Z])(?=[A-Z])/g, '$1-').toLowerCase()
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(camelToDash(this.name));
9
+ var ele = document.createElement(this.name);
14
10
  Object.assign(ele, props);
15
11
  document.body.appendChild(ele);
16
- layers.push(ele);
12
+ layers.add(ele);
17
13
  return new Promise((resolve) => {
18
- promises.push(resolve);
14
+ promises.set(ele, resolve);
19
15
  });
20
16
  }
21
17
 
22
18
  close(result?: any) {
23
- layers.pop().remove();
24
- promises.pop()(result);
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,7 @@
1
+ <div class="example">
2
+ <div part="area" tabindex="0">
3
+ Right Click or Context Menu Key
4
+ </div>
5
+ <p>Result: <code part="result"></code></p></p>
6
+ <p>input: <code part="input"></code></p></p>
7
+ </div>
@@ -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,3 @@
1
+ import PgOverlayContextMenu from './overlayContextMenu';
2
+
3
+ export default PgOverlayContextMenu;
@@ -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,3 @@
1
+ <div part="overlay">
2
+ <pg-menu part="menu"></pg-menu>
3
+ </div>
@@ -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,3 @@
1
+ p {
2
+ margin: 0.5rem 0;
3
+ }
@@ -0,0 +1,5 @@
1
+ <div class="example">
2
+ <button part="button">Create Menu Overlay</button>
3
+ <p>Result: <code part="result"></code></p></p>
4
+ <p>input: <code part="input"></code></p></p>
5
+ </div>
@@ -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
+ }
@@ -0,0 +1,3 @@
1
+ import PgOverlayMenu from './overlayMenu';
2
+
3
+ export default PgOverlayMenu;