kempo 4.9.6 → 4.9.7

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 (27) hide show
  1. package/dist/admin/accounts/groups/[name]/index.page.html +5 -5
  2. package/dist/admin/accounts/groups/index.page.html +12 -10
  3. package/dist/admin/accounts/permissions/index.page.html +1 -1
  4. package/dist/admin/accounts/users/[id]/index.page.html +6 -5
  5. package/dist/admin/accounts/users/index.page.html +7 -9
  6. package/dist/admin/components/EmailTemplates.js +11 -19
  7. package/dist/admin/components/EmailTemplates.js.map +1 -1
  8. package/dist/admin/components/Emails.js +32 -29
  9. package/dist/admin/components/Emails.js.map +1 -1
  10. package/dist/admin/components/Updates.js +17 -22
  11. package/dist/admin/components/Updates.js.map +1 -1
  12. package/dist/admin/components/tableControls/EditEmailTemplate.js +2 -0
  13. package/dist/admin/components/tableControls/EditEmailTemplate.js.map +1 -0
  14. package/dist/admin/components/tableControls/UpdateItem.js +2 -0
  15. package/dist/admin/components/tableControls/UpdateItem.js.map +1 -0
  16. package/dist/admin/components/tableControls/UpdateSelected.js +2 -0
  17. package/dist/admin/components/tableControls/UpdateSelected.js.map +1 -0
  18. package/dist/admin/components/tableControls/ViewEmail.js +2 -0
  19. package/dist/admin/components/tableControls/ViewEmail.js.map +1 -0
  20. package/dist/admin/content/fragments/index.page.html +12 -12
  21. package/dist/admin/content/globals/index.page.html +12 -11
  22. package/dist/admin/content/pages/index.page.html +11 -23
  23. package/dist/admin/content/templates/index.page.html +13 -25
  24. package/dist/admin/extensions/index.page.html +10 -9
  25. package/package.json +2 -2
  26. package/dist/admin/components/tableControls/ExtensionDetails.js +0 -2
  27. package/dist/admin/components/tableControls/ExtensionDetails.js.map +0 -1
@@ -45,7 +45,7 @@
45
45
  ></script>
46
46
  <script
47
47
  type="module"
48
- src="/admin/components/TableRowLink.js"
48
+ src="/kempo-ui/components/controls/TcOpen.js"
49
49
  ></script>
50
50
  <script
51
51
  type="module"
@@ -67,18 +67,14 @@
67
67
  </div>
68
68
 
69
69
  <h2>Custom Pages</h2>
70
- <k-table
70
+ <k-table open-on-click
71
71
  id="customTable"
72
72
  enable-pages
73
73
  page-size="25"
74
74
  page-size-options="[10,25,50,100]"
75
75
  placeholder="No custom pages have been created yet."
76
76
  >
77
- <admin-table-row-link
78
- slot="before"
79
- url-pattern="/admin/content/pages/edit?path={editPath}"
80
- field-name="editPath"
81
- ></admin-table-row-link>
77
+ <kc-tc-open slot="before"></kc-tc-open>
82
78
  <div
83
79
  slot="top"
84
80
  class="d-f full"
@@ -108,18 +104,14 @@
108
104
  </k-table>
109
105
 
110
106
  <h2>Extension Pages</h2>
111
- <k-table
107
+ <k-table open-on-click
112
108
  id="extensionTable"
113
109
  enable-pages
114
110
  page-size="25"
115
111
  page-size-options="[10,25,50,100]"
116
112
  placeholder="No extension pages installed."
117
113
  >
118
- <admin-table-row-link
119
- slot="before"
120
- url-pattern="/admin/content/pages/edit?path={editPath}"
121
- field-name="editPath"
122
- ></admin-table-row-link>
114
+ <kc-tc-open slot="before"></kc-tc-open>
123
115
  <div
124
116
  class="d-f full"
125
117
  style="align-items: center;"
@@ -138,18 +130,14 @@
138
130
  </k-table>
139
131
 
140
132
  <h2>System Pages</h2>
141
- <k-table
133
+ <k-table open-on-click
142
134
  id="systemTable"
143
135
  enable-pages
144
136
  page-size="25"
145
137
  page-size-options="[10,25,50,100]"
146
138
  placeholder="No system pages found."
147
139
  >
148
- <admin-table-row-link
149
- slot="before"
150
- url-pattern="/admin/content/pages/edit?path={editPath}"
151
- field-name="editPath"
152
- ></admin-table-row-link>
140
+ <kc-tc-open slot="before"></kc-tc-open>
153
141
  <div
154
142
  class="d-f full"
155
143
  style="align-items: center;"
@@ -183,7 +171,7 @@
183
171
  { name: 'name', label: 'Name', size: 200 },
184
172
  { name: 'url', label: 'URL', size: 250 },
185
173
  { name: 'author', label: 'Author', size: 150 },
186
- { name: 'description', label: 'Description', size: 300 },
174
+ { name: 'description', label: 'Description' },
187
175
  { name: 'updatedAt', label: 'Updated', size: 190, formatter: v => v ? new Date(v).toLocaleString() : '' },
188
176
  { name: 'createdAt', label: 'Created', size: 190, formatter: v => v ? new Date(v).toLocaleString() : '' }
189
177
  ];
@@ -214,7 +202,7 @@
214
202
 
215
203
  setInterval(updateScanInfo, 1000);
216
204
 
217
- const toEditPath = p => ({ ...p, editPath: p.file.replace(/\.page\.html$/, '') });
205
+ const withEditUrl = p => ({ ...p, _url: `/admin/content/pages/edit?path=${encodeURIComponent(p.file.replace(/\.page\.html$/, ''))}` });
218
206
 
219
207
  const initTable = async ($table, tableFields, owner) => {
220
208
  const [error, data] = await listPages({ owner, showHidden: false, offset: 0, limit: 25 });
@@ -222,11 +210,11 @@
222
210
  Toast.error(error.msg || 'Failed to load pages');
223
211
  return null;
224
212
  }
225
- $table.setData({ records: data.pages.map(toEditPath), fields: tableFields });
213
+ $table.setData({ records: data.pages.map(withEditUrl), fields: tableFields });
226
214
  if(data.total > data.pages.length){
227
215
  $table.setupFetchRecords(data.total, async (start, count) => {
228
216
  const [, d] = await listPages({ owner, showHidden: false, offset: start, limit: count });
229
- return (d?.pages || []).map(toEditPath);
217
+ return (d?.pages || []).map(withEditUrl);
230
218
  });
231
219
  }
232
220
  return data.scannedAt;
@@ -13,7 +13,7 @@
13
13
  <script type="module" src="/kempo-ui/components/controls/TcDeleteRecord.js"></script>
14
14
  <script type="module" src="/kempo-ui/components/controls/TcDeleteSelected.js"></script>
15
15
  <script type="module" src="/kempo-ui/components/Icon.js"></script>
16
- <script type="module" src="/admin/components/TableRowLink.js"></script>
16
+ <script type="module" src="/kempo-ui/components/controls/TcOpen.js"></script>
17
17
  <script type="module" src="/kempo/components/Permission.js"></script>
18
18
 
19
19
  <div class="d-f mb" style="align-items: center; gap: var(--spacer);">
@@ -24,18 +24,14 @@
24
24
  </div>
25
25
 
26
26
  <h2>Custom Templates</h2>
27
- <k-table
27
+ <k-table open-on-click
28
28
  id="customTable"
29
29
  enable-pages
30
30
  page-size="25"
31
31
  page-size-options="[10,25,50,100]"
32
32
  placeholder="No custom templates have been created yet."
33
33
  >
34
- <admin-table-row-link
35
- slot="before"
36
- url-pattern="/admin/content/templates/edit?template={editPath}"
37
- field-name="editPath"
38
- ></admin-table-row-link>
34
+ <kc-tc-open slot="before"></kc-tc-open>
39
35
  <div slot="top" class="d-f full" style="align-items: center;">
40
36
  <div>
41
37
  <k-permission has="system:pages:delete">
@@ -58,18 +54,14 @@
58
54
  </k-table>
59
55
 
60
56
  <h2>Extension Templates</h2>
61
- <k-table
57
+ <k-table open-on-click
62
58
  id="extensionTable"
63
59
  enable-pages
64
60
  page-size="25"
65
61
  page-size-options="[10,25,50,100]"
66
62
  placeholder="No extension templates installed."
67
63
  >
68
- <admin-table-row-link
69
- slot="before"
70
- url-pattern="/admin/content/templates/edit?template={editPath}"
71
- field-name="editPath"
72
- ></admin-table-row-link>
64
+ <kc-tc-open slot="before"></kc-tc-open>
73
65
  <div class="d-f full" style="align-items: center;">
74
66
  <div>
75
67
  <kc-tc-first-page></kc-tc-first-page>
@@ -85,18 +77,14 @@
85
77
  </k-table>
86
78
 
87
79
  <h2>System Templates</h2>
88
- <k-table
80
+ <k-table open-on-click
89
81
  id="systemTable"
90
82
  enable-pages
91
83
  page-size="25"
92
84
  page-size-options="[10,25,50,100]"
93
85
  placeholder="No system templates found."
94
86
  >
95
- <admin-table-row-link
96
- slot="before"
97
- url-pattern="/admin/content/templates/edit?template={editPath}"
98
- field-name="editPath"
99
- ></admin-table-row-link>
87
+ <kc-tc-open slot="before"></kc-tc-open>
100
88
  <div class="d-f full" style="align-items: center;">
101
89
  <div>
102
90
  <kc-tc-first-page></kc-tc-first-page>
@@ -124,7 +112,7 @@
124
112
 
125
113
  const fields = [
126
114
  { name: 'locked', label: '', size: 40, calculator: r => r.locked ? html`<k-icon name="lock"></k-icon>` : html`` },
127
- { name: 'name', label: 'Name', size: 150 },
115
+ { name: 'name', label: 'Name' },
128
116
  { name: 'directory', label: 'Directory', size: 200 },
129
117
  { name: 'author', label: 'Author', size: 150 },
130
118
  { name: 'updatedAt', label: 'Updated', size: 190, formatter: v => v ? new Date(v).toLocaleString() : '' },
@@ -146,14 +134,14 @@
146
134
  Toast.error(error.msg || 'Failed to load templates');
147
135
  return;
148
136
  }
149
- const toEditPath = t => ({
137
+ const withEditUrl = t => ({
150
138
  ...t,
151
139
  directory: t.directory === '.' ? '/' : t.directory,
152
- editPath: (t.directory === '.' ? t.name : `${t.directory}/${t.name}`)
140
+ _url: `/admin/content/templates/edit?template=${encodeURIComponent(t.directory === '.' ? t.name : `${t.directory}/${t.name}`)}`
153
141
  });
154
- const custom = data.templates.filter(t => t.owner === 'custom').map(toEditPath);
155
- const extension = data.templates.filter(t => t.owner !== 'custom' && t.owner !== 'system').map(toEditPath);
156
- const system = data.templates.filter(t => t.owner === 'system').map(toEditPath);
142
+ const custom = data.templates.filter(t => t.owner === 'custom').map(withEditUrl);
143
+ const extension = data.templates.filter(t => t.owner !== 'custom' && t.owner !== 'system').map(withEditUrl);
144
+ const system = data.templates.filter(t => t.owner === 'system').map(withEditUrl);
157
145
  $customTable.setData({ records: custom, fields });
158
146
  $extensionTable.setData({ records: extension, fields: extensionFields });
159
147
  $systemTable.setData({ records: system, fields });
@@ -11,7 +11,7 @@
11
11
  <script type="module" src="/kempo-ui/components/controls/TcPageSelect.js"></script>
12
12
  <script type="module" src="/kempo-ui/components/controls/TcPageSize.js"></script>
13
13
  <script type="module" src="/admin/components/tableControls/InstallExtension.js"></script>
14
- <script type="module" src="/admin/components/tableControls/ExtensionDetails.js"></script>
14
+ <script type="module" src="/kempo-ui/components/controls/TcOpen.js"></script>
15
15
  <script type="module" src="/admin/components/tableControls/ToggleExtension.js"></script>
16
16
  <script type="module" src="/admin/components/tableControls/UninstallExtension.js"></script>
17
17
  <script type="module" src="/kempo/components/Permission.js"></script>
@@ -22,8 +22,8 @@
22
22
  </div>
23
23
 
24
24
  <h2>Installed Extensions</h2>
25
- <k-table id="installedTable" enable-pages page-size="25" placeholder="No extensions are currently installed.">
26
- <admin-extension-details slot="after"></admin-extension-details>
25
+ <k-table open-on-click id="installedTable" enable-pages page-size="25" placeholder="No extensions are currently installed.">
26
+ <kc-tc-open slot="after" title="View in Store"><k-icon name="storefront"></k-icon></kc-tc-open>
27
27
  <admin-toggle-extension slot="after"></admin-toggle-extension>
28
28
  <admin-uninstall-extension slot="after"></admin-uninstall-extension>
29
29
  <div class="d-f full" style="align-items: center;">
@@ -42,9 +42,9 @@
42
42
 
43
43
  <h2>Downloaded, Not Installed</h2>
44
44
  <p class="tc-muted">Extension packages already in this site. To find and download more, <a href="/admin/extensions/browse/">browse the marketplace</a>.</p>
45
- <k-table id="availableTable" enable-pages page-size="25" placeholder="Every downloaded extension is installed.">
45
+ <k-table open-on-click id="availableTable" enable-pages page-size="25" placeholder="Every downloaded extension is installed.">
46
46
  <admin-install-extension slot="after"></admin-install-extension>
47
- <admin-extension-details slot="after"></admin-extension-details>
47
+ <kc-tc-open slot="after" title="View in Store"><k-icon name="storefront"></k-icon></kc-tc-open>
48
48
  <div class="d-f full" style="align-items: center;">
49
49
  <div>
50
50
  <kc-tc-first-page></kc-tc-first-page>
@@ -66,11 +66,12 @@
66
66
 
67
67
  const installedTable = document.getElementById('installedTable');
68
68
  const availableTable = document.getElementById('availableTable');
69
+ const withDetailsUrl = e => ({ ...e, _url: `/admin/extensions/details/?name=${encodeURIComponent(e.name)}` });
69
70
 
70
71
  const [installedErr, installedData] = await listExtensions();
71
72
  if(!installedErr){
72
73
  installedTable.setData({
73
- records: installedData.items,
74
+ records: installedData.items.map(withDetailsUrl),
74
75
  fields: [
75
76
  { name: 'name', label: 'Name' },
76
77
  { name: 'version', label: 'Version' },
@@ -85,7 +86,7 @@
85
86
  const installedNames = new Set((installedData?.items || []).map(e => e.name));
86
87
  const notInstalled = availableData.items.filter(e => !installedNames.has(e.name));
87
88
  availableTable.setData({
88
- records: notInstalled,
89
+ records: notInstalled.map(withDetailsUrl),
89
90
  fields: [
90
91
  { name: 'name', label: 'Name' },
91
92
  { name: 'version', label: 'Version' },
@@ -97,7 +98,7 @@
97
98
  const refreshInstalledTable = async () => {
98
99
  const [err, data] = await listExtensions();
99
100
  if(!err) installedTable.setData({
100
- records: data.items,
101
+ records: data.items.map(withDetailsUrl),
101
102
  fields: [
102
103
  { name: 'name', label: 'Name' },
103
104
  { name: 'version', label: 'Version' },
@@ -113,7 +114,7 @@
113
114
  if(!instErr && !availErr){
114
115
  const installedNames = new Set((instData?.items || []).map(e => e.name));
115
116
  availableTable.setData({
116
- records: availData.items.filter(e => !installedNames.has(e.name)),
117
+ records: availData.items.filter(e => !installedNames.has(e.name)).map(withDetailsUrl),
117
118
  fields: [
118
119
  { name: 'name', label: 'Name' },
119
120
  { name: 'version', label: 'Version' },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kempo",
3
- "version": "4.9.6",
3
+ "version": "4.9.7",
4
4
  "type": "module",
5
5
  "description": "A fullstack CMS framework for creating websites with user authentication",
6
6
  "scripts": {
@@ -61,7 +61,7 @@
61
61
  "peerDependencies": {
62
62
  "kempo-css": ">=2.2.5",
63
63
  "kempo-server": ">=3.4.0",
64
- "kempo-ui": ">=0.6.2"
64
+ "kempo-ui": ">=0.7.0"
65
65
  },
66
66
  "devDependencies": {
67
67
  "@electric-sql/pglite": "^0.5.9",
@@ -1,2 +0,0 @@
1
- import e from"../AdminTableControl.js";import{html as n}from"/kempo-ui/lit-all.min.js";import"/kempo-ui/components/Icon.js";export default class t extends e{connectedCallback(){super.connectedCallback(),this.hasAttribute("title")||(this.title="View in Store")}handleAction(){this.record&&(window.location.href=`/admin/extensions/details/?name=${encodeURIComponent(this.record.name)}`)}render(){return n`<k-icon name="storefront"></k-icon>`}}customElements.define("admin-extension-details",t);
2
- //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\admin\components\tableControls\ExtensionDetails.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"src\\admin\\components\\tableControls\\ExtensionDetails.js","names":["AdminTableControl","html","ExtensionDetails","connectedCallback","super","this","hasAttribute","title","handleAction","record","window","location","href","encodeURIComponent","name","render","customElements","define"],"sources":["0"],"sourcesContent":["import AdminTableControl from '../AdminTableControl.js';\nimport { html } from '/kempo-ui/lit-all.min.js';\nimport '/kempo-ui/components/Icon.js';\n\n/*\n Opens the marketplace page for a row's extension: its README, what it requires and adds, its rating (which\n can be changed from there once it is installed). The page shows whatever the marketplace knows; for an\n extension it does not list it says so.\n*/\nexport default class ExtensionDetails extends AdminTableControl {\n connectedCallback(){\n super.connectedCallback();\n if(!this.hasAttribute('title')) this.title = 'View in Store';\n }\n\n handleAction(){\n if(!this.record) return;\n window.location.href = `/admin/extensions/details/?name=${encodeURIComponent(this.record.name)}`;\n }\n\n render(){ return html`<k-icon name=\"storefront\"></k-icon>`; }\n}\n\ncustomElements.define('admin-extension-details', ExtensionDetails);\n"],"mappings":"OAAOA,MAAuB,yCACrBC,MAAY,iCACd,8CAOQ,MAAMC,UAAyBF,EAC5C,iBAAAG,GACEC,MAAMD,oBACFE,KAAKC,aAAa,WAAUD,KAAKE,MAAQ,gBAC/C,CAEA,YAAAC,GACMH,KAAKI,SACTC,OAAOC,SAASC,KAAO,mCAAmCC,mBAAmBR,KAAKI,OAAOK,QAC3F,CAEA,MAAAC,GAAU,OAAOd,CAAI,qCAAuC,EAG9De,eAAeC,OAAO,0BAA2Bf","ignoreList":[]}