@asd20/ui 3.2.1014 → 3.2.1015

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/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "*.scss",
6
6
  "*.vue"
7
7
  ],
8
- "version": "3.2.1014",
8
+ "version": "3.2.1015",
9
9
  "private": false,
10
10
  "license": "MIT",
11
11
  "repository": {
@@ -250,8 +250,29 @@ export default {
250
250
  detailLinkLabel: '',
251
251
  }
252
252
  },
253
+ // tabsList() {
254
+ // return this.messageCategories.map(c => ({
255
+ // label: c,
256
+ // hash: `#tab-${kebabCase(c)}`,
257
+ // active: this.tab === `#tab-${kebabCase(c)}`,
258
+ // }))
259
+ // },
253
260
  tabsList() {
254
- return this.messageCategories.map(c => ({
261
+ // sort categories: 'reset' tabs first (alphabetized among themselves), then the rest (alphabetized)
262
+ const sortedCategories = [...(this.messageCategories || [])].sort(
263
+ (a, b) => {
264
+ const aReset = this.isResetTab(a)
265
+ const bReset = this.isResetTab(b)
266
+ if (aReset && !bReset) return -1
267
+ if (!aReset && bReset) return 1
268
+ return a.localeCompare(b, undefined, {
269
+ sensitivity: 'base',
270
+ numeric: true,
271
+ })
272
+ }
273
+ )
274
+
275
+ return sortedCategories.map(c => ({
255
276
  label: c,
256
277
  hash: `#tab-${kebabCase(c)}`,
257
278
  active: this.tab === `#tab-${kebabCase(c)}`,
@@ -267,20 +288,45 @@ export default {
267
288
  }
268
289
  })
269
290
  },
291
+ // loginsByTab() {
292
+ // if (!this.tabsList.length || !this.logins.length) return []
293
+ // let logins = []
294
+ // for (let t of this.tabsList) {
295
+ // let loginsByTab = this.logins.filter(l =>
296
+ // l.categoryTitles.includes(t.label)
297
+ // )
298
+ // logins.push({
299
+ // tab: t.label,
300
+ // hash: t.hash,
301
+ // logins: loginsByTab,
302
+ // })
303
+ // }
304
+ // return logins
305
+ // },
306
+
270
307
  loginsByTab() {
271
308
  if (!this.tabsList.length || !this.logins.length) return []
272
- let logins = []
273
- for (let t of this.tabsList) {
274
- let loginsByTab = this.logins.filter(l =>
275
- l.categoryTitles.includes(t.label)
276
- )
277
- logins.push({
309
+ const groups = []
310
+
311
+ for (const t of this.tabsList) {
312
+ // filter then alphabetize by title
313
+ const loginsForTab = this.logins
314
+ .filter(l => l.categoryTitles.includes(t.label))
315
+ .sort((a, b) =>
316
+ (a.title || '').localeCompare(b.title || '', undefined, {
317
+ sensitivity: 'base',
318
+ numeric: true,
319
+ })
320
+ )
321
+
322
+ groups.push({
278
323
  tab: t.label,
279
324
  hash: t.hash,
280
- logins: loginsByTab,
325
+ logins: loginsForTab,
281
326
  })
282
327
  }
283
- return logins
328
+
329
+ return groups
284
330
  },
285
331
  selectedTabLogins() {
286
332
  return this.loginsByTab.find(t => this.tab === t.hash)
@@ -291,6 +337,9 @@ export default {
291
337
  window.location.hash = tab.hash
292
338
  this.tab = tab.hash
293
339
  },
340
+ isResetTab(label) {
341
+ return /\breset\b/i.test(label)
342
+ },
294
343
  },
295
344
  }
296
345
  </script>