quasar 2.18.0 → 2.18.2

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 (207) hide show
  1. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  2. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  3. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  4. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  5. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
  6. package/dist/icon-set/fontawesome-v6.umd.prod.js +1 -1
  7. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  8. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  9. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  10. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  11. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  12. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  13. package/dist/icon-set/material-symbols-outlined.umd.prod.js +1 -1
  14. package/dist/icon-set/material-symbols-rounded.umd.prod.js +1 -1
  15. package/dist/icon-set/material-symbols-sharp.umd.prod.js +1 -1
  16. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  17. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  18. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  19. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  20. package/dist/icon-set/mdi-v7.umd.prod.js +1 -1
  21. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  22. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  23. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  24. package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +1 -1
  25. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  26. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  27. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
  28. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  29. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  30. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  31. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  32. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  33. package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +1 -1
  34. package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +1 -1
  35. package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +1 -1
  36. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  37. package/dist/icon-set/svg-mdi-v7.umd.prod.js +1 -1
  38. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  39. package/dist/icon-set/themify.umd.prod.js +1 -1
  40. package/dist/lang/ar-TN.umd.prod.js +2 -2
  41. package/dist/lang/ar.umd.prod.js +2 -2
  42. package/dist/lang/az-Latn.umd.prod.js +2 -2
  43. package/dist/lang/bg.umd.prod.js +2 -2
  44. package/dist/lang/bn.umd.prod.js +2 -2
  45. package/dist/lang/bs-BA.umd.prod.js +2 -2
  46. package/dist/lang/ca.umd.prod.js +2 -2
  47. package/dist/lang/cs.umd.prod.js +2 -2
  48. package/dist/lang/da.umd.prod.js +2 -2
  49. package/dist/lang/de-CH.umd.prod.js +2 -2
  50. package/dist/lang/de-DE.umd.prod.js +2 -2
  51. package/dist/lang/de.umd.prod.js +2 -2
  52. package/dist/lang/el.umd.prod.js +2 -2
  53. package/dist/lang/en-GB.umd.prod.js +2 -2
  54. package/dist/lang/en-US.umd.prod.js +2 -2
  55. package/dist/lang/eo.umd.prod.js +2 -2
  56. package/dist/lang/es.umd.prod.js +2 -2
  57. package/dist/lang/et.umd.prod.js +2 -2
  58. package/dist/lang/eu.umd.prod.js +2 -2
  59. package/dist/lang/fa-IR.umd.prod.js +2 -2
  60. package/dist/lang/fa.umd.prod.js +2 -2
  61. package/dist/lang/fi.umd.prod.js +2 -2
  62. package/dist/lang/fr.umd.prod.js +2 -2
  63. package/dist/lang/gn.umd.prod.js +2 -2
  64. package/dist/lang/he.umd.prod.js +2 -2
  65. package/dist/lang/hi.umd.prod.js +2 -2
  66. package/dist/lang/hr.umd.prod.js +2 -2
  67. package/dist/lang/hu.umd.prod.js +2 -2
  68. package/dist/lang/id.umd.prod.js +2 -2
  69. package/dist/lang/is.umd.prod.js +2 -2
  70. package/dist/lang/it.umd.prod.js +2 -2
  71. package/dist/lang/ja.umd.prod.js +2 -2
  72. package/dist/lang/kk.umd.prod.js +2 -2
  73. package/dist/lang/km.umd.prod.js +2 -2
  74. package/dist/lang/ko-KR.umd.prod.js +2 -2
  75. package/dist/lang/kur-CKB.umd.prod.js +2 -2
  76. package/dist/lang/lt.umd.prod.js +2 -2
  77. package/dist/lang/lu.umd.prod.js +2 -2
  78. package/dist/lang/lv.umd.prod.js +2 -2
  79. package/dist/lang/mk.umd.prod.js +2 -2
  80. package/dist/lang/ml.umd.prod.js +2 -2
  81. package/dist/lang/mm.umd.prod.js +2 -2
  82. package/dist/lang/ms-MY.umd.prod.js +2 -2
  83. package/dist/lang/ms.umd.prod.js +2 -2
  84. package/dist/lang/my.umd.prod.js +2 -2
  85. package/dist/lang/nb-NO.umd.prod.js +2 -2
  86. package/dist/lang/nl.umd.prod.js +2 -2
  87. package/dist/lang/pl.umd.prod.js +2 -2
  88. package/dist/lang/pt-BR.umd.prod.js +2 -2
  89. package/dist/lang/pt.umd.prod.js +2 -2
  90. package/dist/lang/ro.umd.prod.js +2 -2
  91. package/dist/lang/ru.umd.prod.js +2 -2
  92. package/dist/lang/sk.umd.prod.js +2 -2
  93. package/dist/lang/sl.umd.prod.js +2 -2
  94. package/dist/lang/sm.umd.prod.js +2 -2
  95. package/dist/lang/sq.umd.prod.js +7 -0
  96. package/dist/lang/sr-CYR.umd.prod.js +2 -2
  97. package/dist/lang/sr.umd.prod.js +2 -2
  98. package/dist/lang/sv.umd.prod.js +2 -2
  99. package/dist/lang/ta.umd.prod.js +2 -2
  100. package/dist/lang/th.umd.prod.js +2 -2
  101. package/dist/lang/tl.umd.prod.js +2 -2
  102. package/dist/lang/tr.umd.prod.js +2 -2
  103. package/dist/lang/ug.umd.prod.js +2 -2
  104. package/dist/lang/uk.umd.prod.js +2 -2
  105. package/dist/lang/ur-PK.umd.prod.js +2 -2
  106. package/dist/lang/uz-Cyrl.umd.prod.js +2 -2
  107. package/dist/lang/uz-Latn.umd.prod.js +2 -2
  108. package/dist/lang/vi.umd.prod.js +2 -2
  109. package/dist/lang/zh-CN.umd.prod.js +2 -2
  110. package/dist/lang/zh-TW.umd.prod.js +2 -2
  111. package/dist/quasar.client.js +28 -17
  112. package/dist/quasar.css +9 -7
  113. package/dist/quasar.prod.css +1 -1
  114. package/dist/quasar.rtl.css +15 -8
  115. package/dist/quasar.rtl.prod.css +1 -1
  116. package/dist/quasar.sass +9 -5
  117. package/dist/quasar.server.prod.cjs +7 -7
  118. package/dist/quasar.server.prod.js +8 -8
  119. package/dist/quasar.umd.js +28 -17
  120. package/dist/quasar.umd.prod.js +9 -9
  121. package/dist/types/index.d.ts +1 -0
  122. package/dist/types/utils/date.d.ts +45 -34
  123. package/dist/web-types/web-types.json +1 -1
  124. package/lang/ar-TN.js +8 -1
  125. package/lang/ar.js +8 -1
  126. package/lang/az-Latn.js +8 -1
  127. package/lang/bg.js +8 -1
  128. package/lang/bn.js +8 -1
  129. package/lang/bs-BA.js +8 -1
  130. package/lang/ca.js +8 -1
  131. package/lang/cs.js +8 -1
  132. package/lang/da.js +8 -1
  133. package/lang/de-CH.js +8 -1
  134. package/lang/de-DE.js +8 -1
  135. package/lang/de.js +8 -1
  136. package/lang/el.js +8 -1
  137. package/lang/en-GB.js +8 -1
  138. package/lang/en-US.js +8 -1
  139. package/lang/eo.js +8 -1
  140. package/lang/es.js +8 -1
  141. package/lang/et.js +8 -1
  142. package/lang/eu.js +8 -1
  143. package/lang/fa-IR.js +8 -1
  144. package/lang/fa.js +8 -1
  145. package/lang/fi.js +8 -1
  146. package/lang/fr.js +8 -1
  147. package/lang/gn.js +8 -1
  148. package/lang/he.js +8 -1
  149. package/lang/hi.js +8 -1
  150. package/lang/hr.js +8 -1
  151. package/lang/hu.js +8 -1
  152. package/lang/id.js +8 -1
  153. package/lang/index.json +1 -1
  154. package/lang/is.js +8 -1
  155. package/lang/it.js +8 -1
  156. package/lang/ja.js +8 -1
  157. package/lang/kk.js +8 -1
  158. package/lang/km.js +8 -1
  159. package/lang/ko-KR.js +8 -1
  160. package/lang/kur-CKB.js +8 -1
  161. package/lang/lt.js +8 -1
  162. package/lang/lu.js +8 -1
  163. package/lang/lv.js +8 -1
  164. package/lang/mk.js +8 -1
  165. package/lang/ml.js +8 -1
  166. package/lang/mm.js +8 -1
  167. package/lang/ms-MY.js +8 -1
  168. package/lang/ms.js +8 -1
  169. package/lang/my.js +8 -1
  170. package/lang/nb-NO.js +8 -1
  171. package/lang/nl.js +8 -1
  172. package/lang/pl.js +8 -1
  173. package/lang/pt-BR.js +8 -1
  174. package/lang/pt.js +8 -1
  175. package/lang/ro.js +8 -1
  176. package/lang/ru.js +8 -1
  177. package/lang/sk.js +8 -1
  178. package/lang/sl.js +8 -1
  179. package/lang/sm.js +8 -1
  180. package/lang/sq.js +106 -0
  181. package/lang/sr-CYR.js +8 -1
  182. package/lang/sr.js +8 -1
  183. package/lang/sv.js +8 -1
  184. package/lang/ta.js +8 -1
  185. package/lang/th.js +8 -1
  186. package/lang/tl.js +8 -1
  187. package/lang/tr.js +8 -1
  188. package/lang/ug.js +8 -1
  189. package/lang/uk.js +8 -1
  190. package/lang/ur-PK.js +8 -1
  191. package/lang/uz-Cyrl.js +8 -1
  192. package/lang/uz-Latn.js +8 -1
  193. package/lang/vi.js +8 -1
  194. package/lang/zh-CN.js +8 -1
  195. package/lang/zh-TW.js +8 -1
  196. package/package.json +5 -5
  197. package/src/components/chip/QChip.sass +8 -4
  198. package/src/components/date/QDate.js +5 -0
  199. package/src/components/editor/editor-utils.js +4 -3
  200. package/src/components/input/use-mask.js +0 -2
  201. package/src/components/select/QSelect.js +1 -0
  202. package/src/components/table/QTable.js +4 -4
  203. package/src/components/table/QTable.sass +2 -1
  204. package/src/plugins/addressbar/AddressbarColor.js +1 -5
  205. package/src/plugins/dark/Dark.js +3 -2
  206. package/src/plugins/lang/Lang.test.js +16 -2
  207. package/src/utils/date/date.js +1 -1
package/lang/zh-CN.js CHANGED
@@ -28,7 +28,14 @@ export default {
28
28
  }).format(date),
29
29
  firstDayOfWeek: 0, // 0-6, 0 - Sunday, 1 Monday, ...
30
30
  format24h: false,
31
- pluralDay: '天'
31
+ pluralDay: '天',
32
+ prevMonth: '上个月',
33
+ nextMonth: '下个月',
34
+ prevYear: '上一年',
35
+ nextYear: '下一年',
36
+ today: '今天',
37
+ prevRangeYears: range => `以前${ range }年`,
38
+ nextRangeYears: range => `接下来${ range }年`
32
39
  },
33
40
  table: {
34
41
  noData: '没有可用数据',
package/lang/zh-TW.js CHANGED
@@ -28,7 +28,14 @@ export default {
28
28
  }).format(date),
29
29
  firstDayOfWeek: 0, // 0-6, 0 - Sunday, 1 Monday, ...
30
30
  format24h: false,
31
- pluralDay: '日'
31
+ pluralDay: '日',
32
+ prevMonth: '上个月',
33
+ nextMonth: '下个月',
34
+ prevYear: '上一年',
35
+ nextYear: '下一年',
36
+ today: '今天',
37
+ prevRangeYears: range => `以前${ range }年`,
38
+ nextRangeYears: range => `接下来${ range }年`
32
39
  },
33
40
  table: {
34
41
  noData: '沒有資料',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quasar",
3
- "version": "2.18.0",
3
+ "version": "2.18.2",
4
4
  "description": "Build high-performance VueJS user interfaces (SPA, PWA, SSR, Mobile and Desktop) in record time",
5
5
  "type": "module",
6
6
  "module": "dist/quasar.client.js",
@@ -65,7 +65,7 @@
65
65
  "cssnano": "^7.0.6",
66
66
  "diff": "^5.2.0",
67
67
  "esbuild": "^0.25.0",
68
- "eslint": "^8.57.1",
68
+ "eslint": "^9.29.0",
69
69
  "fs-extra": "^11.2.0",
70
70
  "kolorist": "^1.8.0",
71
71
  "open": "^10.1.0",
@@ -76,8 +76,8 @@
76
76
  "tinyglobby": "^0.2.10",
77
77
  "typescript": "^5.6.2",
78
78
  "vue": "^3.5.5",
79
- "@quasar/extras": "1.16.17",
80
- "eslint-config-quasar": "0.0.1"
79
+ "@quasar/extras": "1.17.0",
80
+ "eslint-config-quasar": "0.0.3"
81
81
  },
82
82
  "vetur": {
83
83
  "tags": "dist/vetur/quasar-tags.json",
@@ -108,7 +108,7 @@
108
108
  "dev:build:ssr": "cd ./playground && quasar build -m ssr && cd ..",
109
109
  "dev:umd": "node build/script.test-umd.js",
110
110
  "dev:quploader": "cd ./playground/upload-server && pnpm i && cd ../.. && node playground/upload-server/server.js",
111
- "lint": "eslint --ext .js,.cjs,.mjs,.vue ./ --fix --report-unused-disable-directives",
111
+ "lint": "eslint --cache --fix",
112
112
  "format:types": "prettier --write \"types/**/*.{d.ts,ts,json}\"",
113
113
  "test": "pnpm --filter quasar-ui-test test",
114
114
  "test:watch": "pnpm --filter quasar-ui-test test:watch",
@@ -18,16 +18,20 @@
18
18
  .q-chip__icon
19
19
  color: inherit
20
20
 
21
- &--outline
22
- background: transparent !important
23
- border: 1px solid currentColor
24
-
25
21
  .q-avatar
26
22
  font-size: $chip-avatar-font-size
27
23
  margin-left: -.45em
28
24
  margin-right: .2em
29
25
  border-radius: 16px
30
26
 
27
+ &--outline
28
+ background: transparent !important
29
+ border: 1px solid currentColor
30
+
31
+ .q-avatar
32
+ // half padding and border width:
33
+ margin-left: calc(-.45em - 1px)
34
+
31
35
  &--selected
32
36
  .q-avatar
33
37
  display: none
@@ -1136,6 +1136,7 @@ export default createComponent({
1136
1136
  props.todayBtn === true ? h(QBtn, {
1137
1137
  class: 'q-date__header-today self-start',
1138
1138
  icon: $q.iconSet.datetime.today,
1139
+ 'aria-label': $q.lang.date.today,
1139
1140
  flat: true,
1140
1141
  size: 'sm',
1141
1142
  round: true,
@@ -1157,6 +1158,7 @@ export default createComponent({
1157
1158
  size: 'sm',
1158
1159
  flat: true,
1159
1160
  icon: dateArrow.value[ 0 ],
1161
+ 'aria-label': type === 'Years' ? $q.lang.date.prevYear : $q.lang.date.prevMonth,
1160
1162
  tabindex: tabindex.value,
1161
1163
  disable: boundaries.prev === false,
1162
1164
  ...getCache('go-#' + type, { onClick () { goTo(-1) } })
@@ -1189,6 +1191,7 @@ export default createComponent({
1189
1191
  size: 'sm',
1190
1192
  flat: true,
1191
1193
  icon: dateArrow.value[ 1 ],
1194
+ 'aria-label': type === 'Years' ? $q.lang.date.nextYear : $q.lang.date.nextMonth,
1192
1195
  tabindex: tabindex.value,
1193
1196
  disable: boundaries.next === false,
1194
1197
  ...getCache('go+#' + type, { onClick () { goTo(1) } })
@@ -1359,6 +1362,7 @@ export default createComponent({
1359
1362
  dense: true,
1360
1363
  flat: true,
1361
1364
  icon: dateArrow.value[ 0 ],
1365
+ 'aria-label': $q.lang.date.prevRangeYears(yearsInterval),
1362
1366
  tabindex: tabindex.value,
1363
1367
  disable: isDisabled(start),
1364
1368
  ...getCache('y-', { onClick: () => { startYear.value -= yearsInterval } })
@@ -1377,6 +1381,7 @@ export default createComponent({
1377
1381
  dense: true,
1378
1382
  flat: true,
1379
1383
  icon: dateArrow.value[ 1 ],
1384
+ 'aria-label': $q.lang.date.nextRangeYears(yearsInterval),
1380
1385
  tabindex: tabindex.value,
1381
1386
  disable: isDisabled(stop),
1382
1387
  ...getCache('y+', { onClick: () => { startYear.value += yearsInterval } })
@@ -31,15 +31,16 @@ function getBtn (eVm, btn, clickHandler, active = false) {
31
31
  : false),
32
32
  child = []
33
33
 
34
- if (btn.tip && eVm.$q.platform.is.desktop) {
34
+ if (eVm.$q.platform.is.desktop && (btn.tip || btn.htmlTip)) {
35
35
  const Key = btn.key
36
36
  ? h('div', [
37
37
  h('small', `(CTRL + ${ String.fromCharCode(btn.key) })`)
38
38
  ])
39
39
  : null
40
+
40
41
  child.push(
41
42
  h(QTooltip, { delay: 1000 }, () => [
42
- h('div', { innerHTML: btn.tip }),
43
+ h('div', btn.htmlTip ? { innerHTML: btn.htmlTip } : btn.tip),
43
44
  Key
44
45
  ])
45
46
  )
@@ -51,6 +52,7 @@ function getBtn (eVm, btn, clickHandler, active = false) {
51
52
  color: toggled ? btn.toggleColor || eVm.props.toolbarToggleColor : btn.color || eVm.props.toolbarColor,
52
53
  textColor: toggled && !eVm.props.toolbarPush ? null : btn.textColor || eVm.props.toolbarTextColor,
53
54
  label: btn.label,
55
+ 'aria-label': btn.label == null ? btn.tip : void 0,
54
56
  disable: btn.disable ? (typeof btn.disable === 'function' ? btn.disable(eVm) : true) : false,
55
57
  size: 'sm',
56
58
  onClick (e) {
@@ -266,7 +268,6 @@ export function getLinkEditor (eVm) {
266
268
  getGroup([
267
269
  h(QBtn, {
268
270
  key: 'qedt_btm_rem',
269
- tabindex: -1,
270
271
  ...eVm.buttonProps.value,
271
272
  label: eVm.$q.lang.label.remove,
272
273
  noCaps: true,
@@ -499,7 +499,6 @@ export default function (props, emit, emitValue, inputRef) {
499
499
 
500
500
  if (typeof maskDef === 'string') {
501
501
  output += maskDef
502
- valChar === maskDef && valIndex++
503
502
  }
504
503
  else if (valChar !== void 0 && maskDef.regex.test(valChar)) {
505
504
  output += maskDef.transform !== void 0
@@ -529,7 +528,6 @@ export default function (props, emit, emitValue, inputRef) {
529
528
 
530
529
  if (typeof maskDef === 'string') {
531
530
  output = maskDef + output
532
- valChar === maskDef && valIndex--
533
531
  }
534
532
  else if (valChar !== void 0 && maskDef.regex.test(valChar)) {
535
533
  do {
@@ -962,6 +962,7 @@ export default createComponent({
962
962
 
963
963
  return [
964
964
  h('span', {
965
+ class: 'ellipsis',
965
966
  [ valueAsHtml.value === true ? 'innerHTML' : 'textContent' ]: ariaCurrentValue.value
966
967
  })
967
968
  ]
@@ -873,7 +873,7 @@ export default createComponent({
873
873
  ...btnProps,
874
874
  icon: navIcon.value[ 0 ],
875
875
  disable: isFirstPage.value,
876
- ariaLabel: $q.lang.pagination.first,
876
+ 'aria-label': $q.lang.pagination.first,
877
877
  onClick: firstPage
878
878
  })
879
879
  )
@@ -884,7 +884,7 @@ export default createComponent({
884
884
  ...btnProps,
885
885
  icon: navIcon.value[ 1 ],
886
886
  disable: isFirstPage.value,
887
- ariaLabel: $q.lang.pagination.prev,
887
+ 'aria-label': $q.lang.pagination.prev,
888
888
  onClick: prevPage
889
889
  }),
890
890
 
@@ -893,7 +893,7 @@ export default createComponent({
893
893
  ...btnProps,
894
894
  icon: navIcon.value[ 2 ],
895
895
  disable: isLastPage.value,
896
- ariaLabel: $q.lang.pagination.next,
896
+ 'aria-label': $q.lang.pagination.next,
897
897
  onClick: nextPage
898
898
  })
899
899
  )
@@ -904,7 +904,7 @@ export default createComponent({
904
904
  ...btnProps,
905
905
  icon: navIcon.value[ 3 ],
906
906
  disable: isLastPage.value,
907
- ariaLabel: $q.lang.pagination.last,
907
+ 'aria-label': $q.lang.pagination.last,
908
908
  onClick: lastPage
909
909
  })
910
910
  )
@@ -242,7 +242,8 @@
242
242
  * On light background
243
243
  */
244
244
  .q-table__bottom
245
- border-top: 1px solid $table-border-color
245
+ &:not(&--nodata)
246
+ border-top: 1px solid $table-border-color
246
247
 
247
248
  .q-table
248
249
  thead, tr, th, td
@@ -7,11 +7,7 @@ let metaValue
7
7
  function getProp () {
8
8
  return client.is.winphone
9
9
  ? 'msapplication-navbutton-color'
10
- : (
11
- client.is.safari
12
- ? 'apple-mobile-web-app-status-bar-style'
13
- : 'theme-color' // Chrome, Firefox OS, Opera, Vivaldi, ...
14
- )
10
+ : 'theme-color' // Safari, Chrome, ...
15
11
  }
16
12
 
17
13
  function getMetaTag (v) {
@@ -26,7 +26,6 @@ const Plugin = createReactivePlugin({
26
26
  }
27
27
 
28
28
  Plugin.isActive = val === true
29
-
30
29
  document.body.classList.remove(`body--${ val === true ? 'light' : 'dark' }`)
31
30
  document.body.classList.add(`body--${ val === true ? 'dark' : 'light' }`)
32
31
  },
@@ -38,7 +37,9 @@ const Plugin = createReactivePlugin({
38
37
  },
39
38
 
40
39
  install ({ $q, ssrContext }) {
41
- const { dark } = $q.config
40
+ const dark = __QUASAR_SSR_CLIENT__
41
+ ? document.body.classList.contains('body--dark')
42
+ : $q.config.dark
42
43
 
43
44
  if (__QUASAR_SSR_SERVER__) {
44
45
  this.isActive = dark === true
@@ -49,7 +49,14 @@ describe('[Lang API]', () => {
49
49
  monthsShort: expect.any(Array),
50
50
  firstDayOfWeek: expect.any(Number),
51
51
  format24h: expect.any(Boolean),
52
- pluralDay: expect.any(String)
52
+ pluralDay: expect.any(String),
53
+ prevMonth: expect.any(String),
54
+ nextMonth: expect.any(String),
55
+ prevYear: expect.any(String),
56
+ nextYear: expect.any(String),
57
+ today: expect.any(String),
58
+ prevRangeYears: expect.any(Function),
59
+ nextRangeYears: expect.any(Function)
53
60
  },
54
61
  table: {
55
62
  noData: expect.any(String),
@@ -167,7 +174,14 @@ describe('[Lang API]', () => {
167
174
  monthsShort: [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ],
168
175
  firstDayOfWeek: 0,
169
176
  format24h: true,
170
- pluralDay: 'days'
177
+ pluralDay: 'days',
178
+ prevMonth: expect.any(String),
179
+ nextMonth: expect.any(String),
180
+ prevYear: expect.any(String),
181
+ nextYear: expect.any(String),
182
+ today: expect.any(String),
183
+ prevRangeYears: expect.any(Function),
184
+ nextRangeYears: expect.any(Function)
171
185
  },
172
186
  table: {
173
187
  noData: 'No data available',
@@ -466,7 +466,7 @@ export function __splitDate (str, mask, dateLocale, calendar, defaultModel) {
466
466
  }
467
467
  }
468
468
 
469
- date.dateHash = pad(date.year, 6) + '/' + pad(date.month) + '/' + pad(date.day)
469
+ date.dateHash = pad(date.year, 4) + '/' + pad(date.month) + '/' + pad(date.day)
470
470
  date.timeHash = pad(date.hour) + ':' + pad(date.minute) + ':' + pad(date.second) + tzString
471
471
 
472
472
  return date