quasar 2.1.8 → 2.2.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 (145) hide show
  1. package/dist/api/QCarousel.json +19 -5
  2. package/dist/api/QColor.json +6 -0
  3. package/dist/api/QInnerLoading.json +32 -0
  4. package/dist/api/QOptionGroup.json +58 -1
  5. package/dist/api/QRange.json +10 -3
  6. package/dist/api/QSeparator.json +1 -1
  7. package/dist/api/QSkeleton.json +14 -0
  8. package/dist/api/QSlider.json +10 -3
  9. package/dist/api/QStepper.json +16 -2
  10. package/dist/api/QTabPanels.json +16 -2
  11. package/dist/api/QTable.json +5 -0
  12. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  13. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  14. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  15. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  16. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  17. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  18. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  19. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  20. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  21. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  22. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  23. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  24. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  25. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  26. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  27. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  28. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  29. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  30. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  31. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  32. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  33. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  34. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  35. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  36. package/dist/icon-set/svg-mdi-v4.umd.prod.js +1 -1
  37. package/dist/icon-set/svg-mdi-v5.umd.prod.js +1 -1
  38. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  39. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  40. package/dist/icon-set/themify.umd.prod.js +1 -1
  41. package/dist/lang/ar.umd.prod.js +1 -1
  42. package/dist/lang/az-Latn.umd.prod.js +1 -1
  43. package/dist/lang/bg.umd.prod.js +1 -1
  44. package/dist/lang/bn.umd.prod.js +1 -1
  45. package/dist/lang/ca.umd.prod.js +1 -1
  46. package/dist/lang/cs.umd.prod.js +1 -1
  47. package/dist/lang/da.umd.prod.js +1 -1
  48. package/dist/lang/de.umd.prod.js +1 -1
  49. package/dist/lang/el.umd.prod.js +1 -1
  50. package/dist/lang/en-GB.umd.prod.js +1 -1
  51. package/dist/lang/en-US.umd.prod.js +1 -1
  52. package/dist/lang/eo.umd.prod.js +1 -1
  53. package/dist/lang/es.umd.prod.js +1 -1
  54. package/dist/lang/et.umd.prod.js +1 -1
  55. package/dist/lang/fa-IR.umd.prod.js +1 -1
  56. package/dist/lang/fa.umd.prod.js +1 -1
  57. package/dist/lang/fi.umd.prod.js +1 -1
  58. package/dist/lang/fr.umd.prod.js +1 -1
  59. package/dist/lang/gn.umd.prod.js +1 -1
  60. package/dist/lang/he.umd.prod.js +1 -1
  61. package/dist/lang/hr.umd.prod.js +1 -1
  62. package/dist/lang/hu.umd.prod.js +1 -1
  63. package/dist/lang/id.umd.prod.js +1 -1
  64. package/dist/lang/is.umd.prod.js +1 -1
  65. package/dist/lang/it.umd.prod.js +1 -1
  66. package/dist/lang/ja.umd.prod.js +1 -1
  67. package/dist/lang/km.umd.prod.js +1 -1
  68. package/dist/lang/ko-KR.umd.prod.js +1 -1
  69. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  70. package/dist/lang/lt.umd.prod.js +6 -0
  71. package/dist/lang/lu.umd.prod.js +1 -1
  72. package/dist/lang/lv.umd.prod.js +1 -1
  73. package/dist/lang/ml.umd.prod.js +1 -1
  74. package/dist/lang/ms.umd.prod.js +1 -1
  75. package/dist/lang/nb-NO.umd.prod.js +1 -1
  76. package/dist/lang/nl.umd.prod.js +1 -1
  77. package/dist/lang/pl.umd.prod.js +1 -1
  78. package/dist/lang/pt-BR.umd.prod.js +1 -1
  79. package/dist/lang/pt.umd.prod.js +1 -1
  80. package/dist/lang/ro.umd.prod.js +1 -1
  81. package/dist/lang/ru.umd.prod.js +1 -1
  82. package/dist/lang/sk.umd.prod.js +1 -1
  83. package/dist/lang/sl.umd.prod.js +1 -1
  84. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  85. package/dist/lang/sr.umd.prod.js +1 -1
  86. package/dist/lang/sv.umd.prod.js +1 -1
  87. package/dist/lang/ta.umd.prod.js +1 -1
  88. package/dist/lang/th.umd.prod.js +1 -1
  89. package/dist/lang/tr.umd.prod.js +1 -1
  90. package/dist/lang/ug.umd.prod.js +2 -2
  91. package/dist/lang/uk.umd.prod.js +1 -1
  92. package/dist/lang/vi.umd.prod.js +1 -1
  93. package/dist/lang/zh-CN.umd.prod.js +1 -1
  94. package/dist/lang/zh-TW.umd.prod.js +1 -1
  95. package/dist/quasar.cjs.prod.js +2 -2
  96. package/dist/quasar.css +24 -17
  97. package/dist/quasar.esm.prod.js +2 -2
  98. package/dist/quasar.prod.css +1 -1
  99. package/dist/quasar.rtl.css +29 -22
  100. package/dist/quasar.rtl.prod.css +1 -1
  101. package/dist/quasar.sass +24 -16
  102. package/dist/quasar.umd.js +374 -242
  103. package/dist/quasar.umd.prod.js +2 -2
  104. package/dist/ssr-directives/Morph.js +1 -1
  105. package/dist/types/index.d.ts +81 -12
  106. package/dist/vetur/quasar-attributes.json +39 -7
  107. package/dist/vetur/quasar-tags.json +9 -1
  108. package/dist/web-types/web-types.json +101 -15
  109. package/lang/index.json +4 -0
  110. package/lang/lt.js +103 -0
  111. package/lang/ug.js +42 -42
  112. package/package.json +1 -1
  113. package/src/components/btn/QBtn.js +17 -20
  114. package/src/components/carousel/QCarousel.js +8 -1
  115. package/src/components/carousel/QCarousel.json +9 -1
  116. package/src/components/color/QColor.js +73 -61
  117. package/src/components/color/QColor.json +7 -0
  118. package/src/components/color/QColor.sass +5 -1
  119. package/src/components/dialog/QDialog.js +6 -0
  120. package/src/components/drawer/QDrawer.js +3 -0
  121. package/src/components/inner-loading/QInnerLoading.js +31 -7
  122. package/src/components/inner-loading/QInnerLoading.json +29 -0
  123. package/src/components/inner-loading/QInnerLoading.sass +4 -0
  124. package/src/components/option-group/QOptionGroup.js +29 -19
  125. package/src/components/option-group/QOptionGroup.json +50 -1
  126. package/src/components/range/QRange.js +1 -1
  127. package/src/components/range/QRange.json +7 -3
  128. package/src/components/rating/QRating.js +59 -39
  129. package/src/components/rating/QRating.sass +8 -6
  130. package/src/components/select/QSelect.js +1 -1
  131. package/src/components/separator/QSeparator.json +1 -1
  132. package/src/components/skeleton/QSkeleton.js +15 -5
  133. package/src/components/skeleton/QSkeleton.json +9 -0
  134. package/src/components/skeleton/QSkeleton.sass +7 -6
  135. package/src/components/slider/QSlider.js +1 -1
  136. package/src/components/slider/QSlider.json +7 -3
  137. package/src/components/slider/use-slider.js +7 -2
  138. package/src/components/stepper/StepHeader.js +10 -10
  139. package/src/components/table/QTable.json +1 -0
  140. package/src/components/tabs/use-tab.js +11 -9
  141. package/src/components/time/QTime.js +0 -2
  142. package/src/composables/private/use-panel.js +13 -8
  143. package/src/composables/private/use-panel.json +11 -2
  144. package/src/css/core/transitions.sass +4 -4
  145. package/src/utils/date.js +93 -60
package/lang/lt.js ADDED
@@ -0,0 +1,103 @@
1
+ function plurals (n, opts) {
2
+ const index = n % 10 === 1 && n % 100 !== 11
3
+ ? 0
4
+ : (
5
+ n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 10 || n % 100 >= 20)
6
+ ? 1
7
+ : 2
8
+ )
9
+
10
+ return opts[ index ].replace(/{}/g, n)
11
+ }
12
+
13
+ export default {
14
+ isoName: 'lt',
15
+ nativeName: 'Lithuanian',
16
+ label: {
17
+ clear: 'Išvalyti',
18
+ ok: 'Gerai',
19
+ cancel: 'Atšaukti',
20
+ close: 'Uždaryti',
21
+ set: 'Nustatyti',
22
+ select: 'Pasirinkti',
23
+ reset: 'Atkurti',
24
+ remove: 'Pašalinti',
25
+ update: 'Atnaujinti',
26
+ create: 'Sukurti',
27
+ search: 'Ieškoti',
28
+ filter: 'Filtruoti',
29
+ refresh: 'Atnaujinti'
30
+ },
31
+ date: {
32
+ days: 'Sekmadienis_Pirmadienis_Antradienis_Trečiadienis_Ketvirtadienis_Penktadienis_Šeštadienis'.split('_'),
33
+ daysShort: 'S_P_A_T_K_Pn_Š'.split('_'),
34
+ months: 'Sausis_Vasaris_Kovas_Balandis_Gegužė_Birželis_Liepa_Rugpjūtis_Rugsėjis_Spalis_Lapkritis_Gruodis'.split('_'),
35
+ monthsShort: 'Sau_Vas_Kov_Bal_Geg_Bir_Lie_Rgp_Rgs_Spa_Lap_Gru'.split('_'),
36
+ firstDayOfWeek: 1, // 0-6, 0 - Sunday, 1 Monday, ...
37
+ format24h: true,
38
+ pluralDay: 'dienos'
39
+ },
40
+ table: {
41
+ noData: 'Nėra duomenų',
42
+ noResults: 'Įrašų nerasta',
43
+ loading: 'Įkeliama...',
44
+ selectedRecords: rows => (
45
+ rows > 0
46
+ ? plurals(rows, [ 'Pasirinktas {} įrašas', 'Pasirinkti {} įrašai', 'Pasirinkta {} įrašų' ]) + '.'
47
+ : 'Nepasirinktas joks įrašas.'
48
+ ),
49
+ recordsPerPage: 'Puslapyje:',
50
+ allRows: 'Visi',
51
+ pagination: (start, end, total) => start + '-' + end + ' iš ' + total,
52
+ columns: 'Stulpeliai'
53
+ },
54
+ editor: {
55
+ url: 'URL',
56
+ bold: 'Paryškintasis',
57
+ italic: 'Kursyvas',
58
+ strikethrough: 'Perbraukimas',
59
+ underline: 'Pabrauktasis',
60
+ unorderedList: 'Ženkleliai',
61
+ orderedList: 'Numeravimas',
62
+ subscript: 'Apatinis indeksas',
63
+ superscript: 'Viršutinis indeksas',
64
+ hyperlink: 'Įterpti Hipersaitą',
65
+ toggleFullscreen: 'Įjungti pilno ekrano režimą',
66
+ quote: 'Cituoti',
67
+ left: 'Lygiuoti kairėje',
68
+ center: 'Centrinė lygiuotė',
69
+ right: 'Lygiuoti dešinėje',
70
+ justify: 'Abipusė lygiuotė',
71
+ print: 'Spausdinti',
72
+ outdent: 'Mažinti įtrauką',
73
+ indent: 'Didinti įtrauką',
74
+ removeFormat: 'Valyti formatavimą',
75
+ formatting: 'Formatavimas',
76
+ fontSize: 'Šrifto dydis',
77
+ align: 'Lygiuoti',
78
+ hr: 'Įterpti horizontalią liniją',
79
+ undo: 'Anuliuoti veiksmą',
80
+ redo: 'Perdaryti veiksmą',
81
+ heading1: 'Antraštė 1',
82
+ heading2: 'Antraštė 2',
83
+ heading3: 'Antraštė 3',
84
+ heading4: 'Antraštė 4',
85
+ heading5: 'Antraštė 5',
86
+ heading6: 'Antraštė 6',
87
+ paragraph: 'Pastraipa',
88
+ code: 'Kodas',
89
+ size1: 'Mažiausias',
90
+ size2: 'Mažas',
91
+ size3: 'Normalus',
92
+ size4: 'Vidutinis',
93
+ size5: 'Didelis',
94
+ size6: 'Labai didelis',
95
+ size7: 'Didžiausias',
96
+ defaultFont: 'Numatytasis šriftas',
97
+ viewSource: 'Peržiūrėti kodo režimu'
98
+ },
99
+ tree: {
100
+ noNodes: 'Nėra elementų',
101
+ noResults: 'Elementų nerasta'
102
+ }
103
+ }
package/lang/ug.js CHANGED
@@ -42,48 +42,48 @@ export default {
42
42
  },
43
43
  editor: {
44
44
  url: 'URL',
45
- bold: '粗体',
46
- italic: '斜体',
47
- strikethrough: '删除线',
48
- underline: '下划线',
49
- unorderedList: '无序列表',
50
- orderedList: '有序列表',
51
- subscript: '下标',
52
- superscript: '上标',
53
- hyperlink: '超链接',
54
- toggleFullscreen: '全屏切换',
55
- quote: '引号',
56
- left: '左对齐',
57
- center: '居中对齐',
58
- right: '右对齐',
59
- justify: '两端对齐',
60
- print: '打印',
61
- outdent: '减少缩进',
62
- indent: '增加缩进',
63
- removeFormat: '清除样式',
64
- formatting: '格式化',
65
- fontSize: '字体大小',
66
- align: '对齐',
67
- hr: '插入水平线',
68
- undo: '撤消',
69
- redo: '重做',
70
- heading1: '标题一',
71
- heading2: '标题二',
72
- heading3: '标题三',
73
- heading4: '标题四',
74
- heading5: '标题五',
75
- heading6: '标题六',
76
- paragraph: '段落',
77
- code: '代码',
78
- size1: '非常小',
79
- size2: '比较小',
80
- size3: '正常',
81
- size4: '中等偏大',
82
- size5: '',
83
- size6: '非常大',
84
- size7: '超级大',
85
- defaultFont: '默认字体',
86
- viewSource: '查看资料'
45
+ bold: 'Bold',
46
+ italic: 'ئىتالىيان',
47
+ strikethrough: 'Strikethrough',
48
+ underline: 'ئاستى سىزىق',
49
+ unorderedList: 'تەرتىپسىز تىزىملىك',
50
+ orderedList: 'زاكاز تىزىملىكى',
51
+ subscript: 'مۇشتەرى',
52
+ superscript: 'Superscript',
53
+ hyperlink: 'Hyperlink',
54
+ toggleFullscreen: 'تولۇق ئېكراننى ئالماشتۇرۇڭ',
55
+ quote: 'نەقىل',
56
+ left: 'سول تەڭگە',
57
+ center: 'Center align',
58
+ right: 'ئوڭ توغرىلاش',
59
+ justify: 'توغرىلاشنى توغرىلاڭ',
60
+ print: 'بېسىش',
61
+ outdent: 'تەۋەككۈلچىلىكنى ئازايتىش',
62
+ indent: 'تەۋەككۈلچىلىكنى ئاشۇرۇش',
63
+ removeFormat: 'فورماتنى ئۆچۈرۈڭ',
64
+ formatting: 'فورماتلاش',
65
+ fontSize: 'خەت چوڭلۇقى',
66
+ align: 'توغرىلاش',
67
+ hr: 'توغرىسىغا قائىدە قىستۇرۇش',
68
+ undo: 'ئەمەلدىن قالدۇرۇش',
69
+ redo: 'Redo',
70
+ heading1: 'Heading 1',
71
+ heading2: 'Heading 2',
72
+ heading3: 'Heading 3',
73
+ heading4: 'Heading 4',
74
+ heading5: 'Heading 5',
75
+ heading6: 'Heading 6',
76
+ paragraph: 'ئابزاس',
77
+ code: 'كود',
78
+ size1: 'بەك كىچىك',
79
+ size2: 'ئازراق كىچىك',
80
+ size3: 'نورمال',
81
+ size4: 'ئوتتۇراھال چوڭ',
82
+ size5: 'چوڭ',
83
+ size6: 'بەك چوڭ',
84
+ size7: 'ئەڭ چوڭ',
85
+ defaultFont: 'كۆڭۈلدىكى خەت نۇسخىسى',
86
+ viewSource: 'مەنبەنى كۆرۈش',
87
87
  },
88
88
  tree: {
89
89
  noNodes: 'ئۇچۇر يوق',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quasar",
3
- "version": "2.1.8",
3
+ "version": "2.2.2",
4
4
  "description": "Build high-performance VueJS user interfaces (SPA, PWA, SSR, Mobile and Desktop) in record time",
5
5
  "main": "dist/quasar.cjs.prod.js",
6
6
  "module": "dist/quasar.esm.prod.js",
@@ -1,4 +1,4 @@
1
- import { h, defineComponent, ref, computed, Transition, onBeforeUnmount, getCurrentInstance } from 'vue'
1
+ import { h, defineComponent, ref, computed, Transition, onBeforeUnmount, withDirectives, getCurrentInstance } from 'vue'
2
2
 
3
3
  import QIcon from '../icon/QIcon.js'
4
4
  import QSpinner from '../spinner/QSpinner.js'
@@ -7,7 +7,7 @@ import Ripple from '../../directives/Ripple.js'
7
7
 
8
8
  import useBtn, { useBtnProps } from './use-btn.js'
9
9
 
10
- import { hMergeSlot, hDir } from '../../utils/private/render.js'
10
+ import { hMergeSlot } from '../../utils/private/render.js'
11
11
  import { stop, prevent, stopAndPrevent, listenOpts } from '../../utils/event.js'
12
12
  import { isKeyCode } from '../../utils/private/key-composition.js'
13
13
 
@@ -50,7 +50,7 @@ export default defineComponent({
50
50
  )
51
51
 
52
52
  const ripple = computed(() => (
53
- props.ripple === false
53
+ props.disable === true || props.ripple === false
54
54
  ? false
55
55
  : {
56
56
  keyCodes: isLink.value === true ? [ 13, 32 ] : [ 13 ],
@@ -58,6 +58,8 @@ export default defineComponent({
58
58
  }
59
59
  ))
60
60
 
61
+ const rippleProps = computed(() => ({ center: props.round }))
62
+
61
63
  const percentageStyle = computed(() => {
62
64
  const val = Math.max(0, Math.min(100, props.percentage))
63
65
  return val > 0
@@ -91,16 +93,6 @@ export default defineComponent({
91
93
  }
92
94
  })
93
95
 
94
- const directives = computed(() => {
95
- // if props.disable !== true && props.ripple !== false
96
- return [ [
97
- Ripple,
98
- ripple.value,
99
- void 0,
100
- { center: props.round }
101
- ] ]
102
- })
103
-
104
96
  const nodeProps = computed(() => ({
105
97
  ref: rootRef,
106
98
  class: 'q-btn q-btn-item non-selectable no-outline ' + classes.value,
@@ -364,13 +356,18 @@ export default defineComponent({
364
356
  ))
365
357
  )
366
358
 
367
- return hDir(
368
- isLink.value === true ? 'a' : 'button',
369
- nodeProps.value,
370
- child,
371
- 'ripple',
372
- props.disable !== true && props.ripple !== false,
373
- () => directives.value
359
+ return withDirectives(
360
+ h(
361
+ isLink.value === true ? 'a' : 'button',
362
+ nodeProps.value,
363
+ child
364
+ ),
365
+ [ [
366
+ Ripple,
367
+ ripple.value,
368
+ void 0,
369
+ rippleProps.value
370
+ ] ]
374
371
  )
375
372
  }
376
373
  }
@@ -136,7 +136,14 @@ export default defineComponent({
136
136
  })
137
137
 
138
138
  function startTimer () {
139
- timer = setTimeout(nextPanel, isNumber(props.autoplay) ? props.autoplay : 5000)
139
+ const duration = isNumber(props.autoplay) === true
140
+ ? props.autoplay
141
+ : 5000
142
+
143
+ timer = setTimeout(
144
+ duration >= 0 ? nextPanel : previousPanel,
145
+ Math.abs(duration)
146
+ )
140
147
  }
141
148
 
142
149
  onMounted(() => {
@@ -40,7 +40,7 @@
40
40
 
41
41
  "autoplay": {
42
42
  "type": [ "Number", "Boolean" ],
43
- "desc": "Jump to next slide at fixed time intervals (in milliseconds); 'false' disables autoplay, 'true' enables it for 5000ms intervals",
43
+ "desc": "Jump to next slide (if 'true' or val > 0) or previous slide (if val < 0) at fixed time intervals (in milliseconds); 'false' disables autoplay, 'true' enables it for 5000ms intervals",
44
44
  "default": false,
45
45
  "examples": [
46
46
  ":autoplay=\"2500\"",
@@ -92,6 +92,14 @@
92
92
  "type": "Boolean",
93
93
  "desc": "Show thumbnails",
94
94
  "category": "content"
95
+ },
96
+
97
+ "transition-prev": {
98
+ "default": "fade"
99
+ },
100
+
101
+ "transition-next": {
102
+ "default": "fade"
95
103
  }
96
104
  },
97
105
 
@@ -60,6 +60,7 @@ export default defineComponent({
60
60
  palette: Array,
61
61
 
62
62
  noHeader: Boolean,
63
+ noHeaderTabs: Boolean,
63
64
  noFooter: Boolean,
64
65
 
65
66
  square: Boolean,
@@ -145,7 +146,7 @@ export default defineComponent({
145
146
  ? true
146
147
  : luminosity(model.value) > 0.4
147
148
 
148
- return 'q-color-picker__header-content absolute-full'
149
+ return 'q-color-picker__header-content'
149
150
  + ` q-color-picker__header-content--${ light ? 'light' : 'dark' }`
150
151
  })
151
152
 
@@ -496,6 +497,63 @@ export default defineComponent({
496
497
  }
497
498
 
498
499
  function getHeader () {
500
+ const child = []
501
+
502
+ props.noHeaderTabs !== true && child.push(
503
+ h(QTabs, {
504
+ class: 'q-color-picker__header-tabs',
505
+ modelValue: topView.value,
506
+ dense: true,
507
+ align: 'justify',
508
+ ...getCache('topVTab', {
509
+ 'onUpdate:modelValue': val => { topView.value = val }
510
+ })
511
+ }, () => [
512
+ h(QTab, {
513
+ label: 'HEX' + (hasAlpha.value === true ? 'A' : ''),
514
+ name: 'hex',
515
+ ripple: false
516
+ }),
517
+
518
+ h(QTab, {
519
+ label: 'RGB' + (hasAlpha.value === true ? 'A' : ''),
520
+ name: 'rgb',
521
+ ripple: false
522
+ })
523
+ ])
524
+ )
525
+
526
+ child.push(
527
+ h('div', {
528
+ class: 'q-color-picker__header-banner row flex-center no-wrap'
529
+ }, [
530
+ h('input', {
531
+ class: 'fit',
532
+ value: model.value[ topView.value ],
533
+ ...(editable.value !== true
534
+ ? { readonly: true }
535
+ : {}
536
+ ),
537
+ ...getCache('topIn', {
538
+ onInput: evt => {
539
+ updateErrorIcon(onEditorChange(evt) === true)
540
+ },
541
+ onChange: stop,
542
+ onBlur: evt => {
543
+ onEditorChange(evt, true) === true && proxy.$forceUpdate()
544
+ updateErrorIcon(false)
545
+ }
546
+ })
547
+ }),
548
+
549
+ h(QIcon, {
550
+ ref: errorIconRef,
551
+ class: 'q-color-picker__error-icon absolute no-pointer-events',
552
+ name: $q.iconSet.type.negative
553
+ })
554
+ ])
555
+ )
556
+
499
557
  return h('div', {
500
558
  class: 'q-color-picker__header relative-position overflow-hidden'
501
559
  }, [
@@ -504,57 +562,7 @@ export default defineComponent({
504
562
  h('div', {
505
563
  class: headerClass.value,
506
564
  style: currentBgColor.value
507
- }, [
508
- h(QTabs, {
509
- modelValue: topView.value,
510
- dense: true,
511
- align: 'justify',
512
- ...getCache('topVTab', {
513
- 'onUpdate:modelValue': val => { topView.value = val }
514
- })
515
- }, () => [
516
- h(QTab, {
517
- label: 'HEX' + (hasAlpha.value === true ? 'A' : ''),
518
- name: 'hex',
519
- ripple: false
520
- }),
521
-
522
- h(QTab, {
523
- label: 'RGB' + (hasAlpha.value === true ? 'A' : ''),
524
- name: 'rgb',
525
- ripple: false
526
- })
527
- ]),
528
-
529
- h('div', {
530
- class: 'q-color-picker__header-banner row flex-center no-wrap'
531
- }, [
532
- h('input', {
533
- class: 'fit',
534
- value: model.value[ topView.value ],
535
- ...(editable.value !== true
536
- ? { readonly: true }
537
- : {}
538
- ),
539
- ...getCache('topIn', {
540
- onInput: evt => {
541
- updateErrorIcon(onEditorChange(evt) === true)
542
- },
543
- onChange: stop,
544
- onBlur: evt => {
545
- onEditorChange(evt, true) === true && proxy.$forceUpdate()
546
- updateErrorIcon(false)
547
- }
548
- })
549
- }),
550
-
551
- h(QIcon, {
552
- ref: errorIconRef,
553
- class: 'q-color-picker__error-icon absolute no-pointer-events',
554
- name: $q.iconSet.type.negative
555
- })
556
- ])
557
- ])
565
+ }, child)
558
566
  ])
559
567
  }
560
568
 
@@ -790,19 +798,23 @@ export default defineComponent({
790
798
  }
791
799
 
792
800
  function getPaletteTab () {
801
+ const fn = color => h('div', {
802
+ class: 'q-color-picker__cube col-auto',
803
+ style: { backgroundColor: color },
804
+ ...(
805
+ editable.value === true
806
+ ? getCache('palette#' + color, {
807
+ onClick: () => { onPalettePick(color) }
808
+ })
809
+ : {}
810
+ )
811
+ })
812
+
793
813
  return [
794
814
  h('div', {
795
815
  class: 'row items-center q-color-picker__palette-rows'
796
816
  + (editable.value === true ? ' q-color-picker__palette-rows--editable' : '')
797
- }, computedPalette.value.map(color => h('div', {
798
- class: 'q-color-picker__cube col-auto',
799
- style: { backgroundColor: color },
800
- ...(editable.value === true ? getCache('palette#' + color, {
801
- onClick: () => {
802
- onPalettePick(color)
803
- }
804
- }) : {})
805
- })))
817
+ }, computedPalette.value.map(fn))
806
818
  ]
807
819
  }
808
820
 
@@ -64,6 +64,13 @@
64
64
  "category": "content"
65
65
  },
66
66
 
67
+ "no-header-tabs": {
68
+ "type": "Boolean",
69
+ "desc": "Do not render header tabs (only the input)",
70
+ "category": "content",
71
+ "addedIn": "v2.2"
72
+ },
73
+
67
74
  "no-footer": {
68
75
  "type": "Boolean",
69
76
  "desc": "Do not render footer; Useful when you want a specific view ('default-view' prop) and don't want the user to be able to switch it",
@@ -16,7 +16,11 @@
16
16
  border: 1px solid $separator-color
17
17
 
18
18
  &__header
19
- height: 68px
19
+
20
+ &-tabs
21
+ height: 32px
22
+ &-banner
23
+ height: 36px
20
24
 
21
25
  input
22
26
  line-height: 24px
@@ -135,6 +135,10 @@ export default defineComponent({
135
135
  : transitionShow.value
136
136
  ))
137
137
 
138
+ const transitionStyle = computed(
139
+ () => `--q-transition-duration: ${ props.transitionDuration }ms`
140
+ )
141
+
138
142
  const useBackdrop = computed(() => showing.value === true && props.seamless !== true)
139
143
 
140
144
  const onEvents = computed(() => (
@@ -375,6 +379,7 @@ export default defineComponent({
375
379
  useBackdrop.value === true
376
380
  ? h('div', {
377
381
  class: 'q-dialog__backdrop fixed-full',
382
+ style: transitionStyle.value,
378
383
  'aria-hidden': 'true',
379
384
  onMousedown: onBackdropClick
380
385
  })
@@ -389,6 +394,7 @@ export default defineComponent({
389
394
  ? h('div', {
390
395
  ref: innerRef,
391
396
  class: classes.value,
397
+ style: transitionStyle.value,
392
398
  tabindex: -1,
393
399
  ...onEvents.value
394
400
  }, hSlot(slots.default))
@@ -460,6 +460,9 @@ export default defineComponent({
460
460
  flagMiniAnimate.value = true
461
461
  timerMini = setTimeout(() => {
462
462
  flagMiniAnimate.value = false
463
+ if (vm && vm.proxy && vm.proxy.$el) {
464
+ vm.proxy.$el.classList.remove('q-drawer--mini-animate')
465
+ }
463
466
  }, 150)
464
467
  }
465
468
 
@@ -18,7 +18,11 @@ export default defineComponent({
18
18
  size: {
19
19
  type: [ String, Number ],
20
20
  default: 42
21
- }
21
+ },
22
+
23
+ label: String,
24
+ labelClass: String,
25
+ labelStyle: [ String, Array, Object ]
22
26
  },
23
27
 
24
28
  setup (props, { slots }) {
@@ -32,6 +36,31 @@ export default defineComponent({
32
36
  + (isDark.value === true ? ' q-inner-loading--dark' : '')
33
37
  )
34
38
 
39
+ const labelClass = computed(() =>
40
+ 'q-inner-loading__label'
41
+ + (props.labelClass !== void 0 ? ` ${ props.labelClass}` : '')
42
+ )
43
+
44
+ function getInner () {
45
+ const child = [
46
+ h(QSpinner, {
47
+ size: props.size,
48
+ color: props.color
49
+ })
50
+ ]
51
+
52
+ if (props.label !== void 0) {
53
+ child.push(
54
+ h('div', {
55
+ class: labelClass.value,
56
+ style: props.labelStyle
57
+ }, [ props.label ])
58
+ )
59
+ }
60
+
61
+ return child
62
+ }
63
+
35
64
  function getContent () {
36
65
  return props.showing === true
37
66
  ? h(
@@ -39,12 +68,7 @@ export default defineComponent({
39
68
  { class: classes.value, style: transitionStyle.value },
40
69
  slots.default !== void 0
41
70
  ? slots.default()
42
- : [
43
- h(QSpinner, {
44
- size: props.size,
45
- color: props.color
46
- })
47
- ]
71
+ : getInner()
48
72
  )
49
73
  : null
50
74
  }
@@ -22,6 +22,35 @@
22
22
  "default": "42px"
23
23
  },
24
24
 
25
+ "label": {
26
+ "type": "String",
27
+ "desc": "Add a label; Gets overriden when using the default slot",
28
+ "examples": [ "Please wait..." ],
29
+ "category": "label",
30
+ "addedIn": "v2.2"
31
+ },
32
+
33
+ "label-class": {
34
+ "type": "String",
35
+ "desc": "Add CSS class(es) to the label; Works along the 'label' prop only",
36
+ "examples": [
37
+ "text-red q-mt-xl"
38
+ ],
39
+ "category": "label",
40
+ "addedIn": "v2.2"
41
+ },
42
+
43
+ "label-style": {
44
+ "type": [ "Array", "String", "Object" ],
45
+ "desc": "Apply custom style to the label; Works along the 'label' prop only",
46
+ "examples": [
47
+ "font-size: 28px",
48
+ ":label-style=\"{ color: '#ff0000' }\""
49
+ ],
50
+ "category": "label",
51
+ "addedIn": "v2.2"
52
+ },
53
+
25
54
  "dark": {
26
55
  "extends": "dark"
27
56
  }
@@ -1,4 +1,8 @@
1
1
  .q-inner-loading
2
2
  background: $light-dimmed-background
3
+
3
4
  &--dark
4
5
  background: $dimmed-background
6
+
7
+ &__label
8
+ margin-top: 8px