quasar 2.9.2 → 2.10.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.
- package/dist/api/QBreadcrumbsEl.json +0 -14
- package/dist/api/QBtnDropdown.json +36 -0
- package/dist/api/QPagination.json +134 -102
- package/dist/api/QTabs.json +1 -1
- package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
- package/dist/icon-set/eva-icons.umd.prod.js +1 -1
- package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
- package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
- package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
- package/dist/icon-set/fontawesome-v6.umd.prod.js +1 -1
- package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
- package/dist/icon-set/line-awesome.umd.prod.js +1 -1
- package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
- package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
- package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
- package/dist/icon-set/material-icons.umd.prod.js +1 -1
- package/dist/icon-set/material-symbols-outlined.umd.prod.js +1 -1
- package/dist/icon-set/material-symbols-rounded.umd.prod.js +1 -1
- package/dist/icon-set/material-symbols-sharp.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
- package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
- package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
- package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
- package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +1 -1
- package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
- package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
- package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
- package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +1 -1
- package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
- package/dist/icon-set/svg-themify.umd.prod.js +1 -1
- package/dist/icon-set/themify.umd.prod.js +1 -1
- package/dist/lang/ar-TN.umd.prod.js +1 -1
- package/dist/lang/ar.umd.prod.js +1 -1
- package/dist/lang/az-Latn.umd.prod.js +1 -1
- package/dist/lang/bg.umd.prod.js +1 -1
- package/dist/lang/bn.umd.prod.js +1 -1
- package/dist/lang/ca.umd.prod.js +1 -1
- package/dist/lang/cs.umd.prod.js +1 -1
- package/dist/lang/da.umd.prod.js +1 -1
- package/dist/lang/de.umd.prod.js +1 -1
- package/dist/lang/el.umd.prod.js +1 -1
- package/dist/lang/en-GB.umd.prod.js +1 -1
- package/dist/lang/en-US.umd.prod.js +1 -1
- package/dist/lang/eo.umd.prod.js +1 -1
- package/dist/lang/es.umd.prod.js +1 -1
- package/dist/lang/et.umd.prod.js +1 -1
- package/dist/lang/eu.umd.prod.js +1 -1
- package/dist/lang/fa-IR.umd.prod.js +1 -1
- package/dist/lang/fa.umd.prod.js +1 -1
- package/dist/lang/fi.umd.prod.js +1 -1
- package/dist/lang/fr.umd.prod.js +1 -1
- package/dist/lang/gn.umd.prod.js +1 -1
- package/dist/lang/he.umd.prod.js +1 -1
- package/dist/lang/hr.umd.prod.js +1 -1
- package/dist/lang/hu.umd.prod.js +1 -1
- package/dist/lang/id.umd.prod.js +1 -1
- package/dist/lang/is.umd.prod.js +1 -1
- package/dist/lang/it.umd.prod.js +1 -1
- package/dist/lang/ja.umd.prod.js +1 -1
- package/dist/lang/km.umd.prod.js +1 -1
- package/dist/lang/ko-KR.umd.prod.js +1 -1
- package/dist/lang/kur-CKB.umd.prod.js +1 -1
- package/dist/lang/kz.umd.prod.js +1 -1
- package/dist/lang/lt.umd.prod.js +1 -1
- package/dist/lang/lu.umd.prod.js +1 -1
- package/dist/lang/lv.umd.prod.js +1 -1
- package/dist/lang/ml.umd.prod.js +1 -1
- package/dist/lang/mm.umd.prod.js +1 -1
- package/dist/lang/ms.umd.prod.js +1 -1
- package/dist/lang/my.umd.prod.js +1 -1
- package/dist/lang/nb-NO.umd.prod.js +1 -1
- package/dist/lang/nl.umd.prod.js +1 -1
- package/dist/lang/pl.umd.prod.js +1 -1
- package/dist/lang/pt-BR.umd.prod.js +1 -1
- package/dist/lang/pt.umd.prod.js +1 -1
- package/dist/lang/ro.umd.prod.js +1 -1
- package/dist/lang/ru.umd.prod.js +1 -1
- package/dist/lang/sk.umd.prod.js +1 -1
- package/dist/lang/sl.umd.prod.js +1 -1
- package/dist/lang/sm.umd.prod.js +1 -1
- package/dist/lang/sr-CYR.umd.prod.js +1 -1
- package/dist/lang/sr.umd.prod.js +1 -1
- package/dist/lang/sv.umd.prod.js +1 -1
- package/dist/lang/ta.umd.prod.js +1 -1
- package/dist/lang/th.umd.prod.js +1 -1
- package/dist/lang/tr.umd.prod.js +1 -1
- package/dist/lang/ug.umd.prod.js +1 -1
- package/dist/lang/uk.umd.prod.js +1 -1
- package/dist/lang/uz-Cyrl.umd.prod.js +1 -1
- package/dist/lang/uz-Latn.umd.prod.js +1 -1
- package/dist/lang/vi.umd.prod.js +1 -1
- package/dist/lang/zh-CN.umd.prod.js +1 -1
- package/dist/lang/zh-TW.umd.prod.js +1 -1
- package/dist/quasar.cjs.prod.js +2 -2
- package/dist/quasar.css +10 -0
- package/dist/quasar.esm.js +450 -300
- package/dist/quasar.esm.prod.js +2 -2
- package/dist/quasar.prod.css +1 -1
- package/dist/quasar.rtl.css +26 -0
- package/dist/quasar.rtl.prod.css +1 -1
- package/dist/quasar.sass +11 -1
- package/dist/quasar.umd.js +450 -300
- package/dist/quasar.umd.prod.js +2 -2
- package/dist/transforms/auto-import.json +7 -3
- package/dist/transforms/import-map.json +2 -0
- package/dist/types/index.d.ts +66 -51
- package/dist/vetur/quasar-attributes.json +61 -49
- package/dist/vetur/quasar-tags.json +16 -13
- package/dist/web-types/web-types.json +121 -92
- package/package.json +1 -1
- package/src/components/badge/QBadge.js +1 -1
- package/src/components/breadcrumbs/QBreadcrumbsEl.json +0 -4
- package/src/components/breadcrumbs/__tests__/BasicBreadcrumbs.vue +7 -0
- package/src/components/breadcrumbs/__tests__/BreadcrumbWithSeparatorSlot.vue +11 -0
- package/src/components/breadcrumbs/__tests__/QBreadcrumbs.spec.js +112 -0
- package/src/components/breadcrumbs/__tests__/QBreadcrumbsEl.spec.js +87 -0
- package/src/components/btn/use-btn.js +24 -14
- package/src/components/btn-dropdown/QBtnDropdown.js +39 -16
- package/src/components/btn-dropdown/QBtnDropdown.json +1 -1
- package/src/components/btn-toggle/QBtnToggle.js +14 -14
- package/src/components/checkbox/use-checkbox.js +1 -1
- package/src/components/chip/QChip.js +14 -11
- package/src/components/dialog/QDialog.js +2 -1
- package/src/components/dialog-bottom-sheet/BottomSheet.js +6 -2
- package/src/components/drawer/QDrawer.js +5 -3
- package/src/components/footer/QFooter.js +5 -3
- package/src/components/header/QHeader.js +5 -3
- package/src/components/input/use-mask.js +1 -1
- package/src/components/item/QItem.js +1 -0
- package/src/components/item/QList.js +1 -1
- package/src/components/option-group/QOptionGroup.js +1 -1
- package/src/components/page/QPage.js +11 -4
- package/src/components/page/QPageContainer.js +5 -3
- package/src/components/page-sticky/use-page-sticky.js +5 -3
- package/src/components/pagination/QPagination.js +265 -188
- package/src/components/pagination/QPagination.json +82 -65
- package/src/components/pagination/QPagination.sass +14 -0
- package/src/components/resize-observer/QResizeObserver.js +14 -10
- package/src/components/stepper/QStep.js +7 -5
- package/src/components/tab-panels/QTabPanel.js +1 -1
- package/src/components/tabs/QTabs.js +0 -7
- package/src/components/tabs/QTabs.json +1 -1
- package/src/components/tabs/use-tab.js +5 -3
- package/src/components/timeline/QTimelineEntry.js +5 -3
- package/src/components/toolbar/QToolbar.js +1 -1
- package/src/components/tooltip/QTooltip.js +1 -1
- package/src/components/uploader/QUploaderAddTrigger.js +7 -3
- package/src/composables/private/use-file.js +10 -1
- package/src/utils/private/symbols.js +2 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "",
|
|
3
3
|
"framework": "vue",
|
|
4
4
|
"name": "quasar",
|
|
5
|
-
"version": "2.
|
|
5
|
+
"version": "2.10.0",
|
|
6
6
|
"contributions": {
|
|
7
7
|
"html": {
|
|
8
8
|
"types-syntax": "typescript",
|
|
@@ -563,16 +563,6 @@
|
|
|
563
563
|
"description": "HTML tag to use\n\nExamples:\ndiv\nspan\ndiv\nspan",
|
|
564
564
|
"doc-url": "https://v2.quasar.dev/vue-components/breadcrumbs",
|
|
565
565
|
"default": "\"span\""
|
|
566
|
-
},
|
|
567
|
-
{
|
|
568
|
-
"name": "ripple",
|
|
569
|
-
"value": {
|
|
570
|
-
"kind": "expression",
|
|
571
|
-
"type": "boolean|object"
|
|
572
|
-
},
|
|
573
|
-
"description": "Configure material ripple (disable it by setting it to 'false' or supply a config object)\n\nExamples:\nfalse\n{ early: true, center: true, color: 'teal', keyCodes: [] }",
|
|
574
|
-
"doc-url": "https://v2.quasar.dev/vue-components/breadcrumbs",
|
|
575
|
-
"default": "true"
|
|
576
566
|
}
|
|
577
567
|
],
|
|
578
568
|
"events": [
|
|
@@ -613,6 +603,36 @@
|
|
|
613
603
|
"symbol": "QBtnDropdown"
|
|
614
604
|
},
|
|
615
605
|
"attributes": [
|
|
606
|
+
{
|
|
607
|
+
"name": "transition-show",
|
|
608
|
+
"value": {
|
|
609
|
+
"kind": "expression",
|
|
610
|
+
"type": "string"
|
|
611
|
+
},
|
|
612
|
+
"description": "One of Quasar's embedded transitions\n\nExamples:\nfade\nslide-down",
|
|
613
|
+
"doc-url": "https://v2.quasar.dev/vue-components/button-dropdown",
|
|
614
|
+
"default": "\"fade\""
|
|
615
|
+
},
|
|
616
|
+
{
|
|
617
|
+
"name": "transition-hide",
|
|
618
|
+
"value": {
|
|
619
|
+
"kind": "expression",
|
|
620
|
+
"type": "string"
|
|
621
|
+
},
|
|
622
|
+
"description": "One of Quasar's embedded transitions\n\nExamples:\nfade\nslide-down",
|
|
623
|
+
"doc-url": "https://v2.quasar.dev/vue-components/button-dropdown",
|
|
624
|
+
"default": "\"fade\""
|
|
625
|
+
},
|
|
626
|
+
{
|
|
627
|
+
"name": "transition-duration",
|
|
628
|
+
"value": {
|
|
629
|
+
"kind": "expression",
|
|
630
|
+
"type": "string|number"
|
|
631
|
+
},
|
|
632
|
+
"description": "Transition duration (in milliseconds, without unit)\n\nExamples:\n500\n1200",
|
|
633
|
+
"doc-url": "https://v2.quasar.dev/vue-components/button-dropdown",
|
|
634
|
+
"default": "300"
|
|
635
|
+
},
|
|
616
636
|
{
|
|
617
637
|
"name": "model-value",
|
|
618
638
|
"value": {
|
|
@@ -10119,7 +10139,7 @@
|
|
|
10119
10139
|
"name": "min",
|
|
10120
10140
|
"value": {
|
|
10121
10141
|
"kind": "expression",
|
|
10122
|
-
"type": "number"
|
|
10142
|
+
"type": "number|string"
|
|
10123
10143
|
},
|
|
10124
10144
|
"description": "Minimum page (must be lower than 'max')\n\nExamples:\n3",
|
|
10125
10145
|
"doc-url": "https://v2.quasar.dev/vue-components/pagination",
|
|
@@ -10129,50 +10149,12 @@
|
|
|
10129
10149
|
"name": "max",
|
|
10130
10150
|
"value": {
|
|
10131
10151
|
"kind": "expression",
|
|
10132
|
-
"type": "number"
|
|
10152
|
+
"type": "number|string"
|
|
10133
10153
|
},
|
|
10134
10154
|
"description": "Number of last page (must be higher than 'min')\n\nExamples:\n10",
|
|
10135
10155
|
"doc-url": "https://v2.quasar.dev/vue-components/pagination",
|
|
10136
10156
|
"required": true
|
|
10137
10157
|
},
|
|
10138
|
-
{
|
|
10139
|
-
"name": "color",
|
|
10140
|
-
"value": {
|
|
10141
|
-
"kind": "expression",
|
|
10142
|
-
"type": "string"
|
|
10143
|
-
},
|
|
10144
|
-
"description": "Color name for component from the Quasar Color Palette\n\nExamples:\nprimary\nteal-10",
|
|
10145
|
-
"doc-url": "https://v2.quasar.dev/vue-components/pagination",
|
|
10146
|
-
"default": "\"primary\""
|
|
10147
|
-
},
|
|
10148
|
-
{
|
|
10149
|
-
"name": "text-color",
|
|
10150
|
-
"value": {
|
|
10151
|
-
"kind": "expression",
|
|
10152
|
-
"type": "string"
|
|
10153
|
-
},
|
|
10154
|
-
"description": "Overrides text color (if needed); Color name from the Quasar Color Palette\n\nExamples:\nprimary\nteal-10",
|
|
10155
|
-
"doc-url": "https://v2.quasar.dev/vue-components/pagination"
|
|
10156
|
-
},
|
|
10157
|
-
{
|
|
10158
|
-
"name": "active-color",
|
|
10159
|
-
"value": {
|
|
10160
|
-
"kind": "expression",
|
|
10161
|
-
"type": "string"
|
|
10162
|
-
},
|
|
10163
|
-
"description": "Color name for component from the Quasar Color Palette\n\nExamples:\nprimary\nteal-10",
|
|
10164
|
-
"doc-url": "https://v2.quasar.dev/vue-components/pagination",
|
|
10165
|
-
"default": "\"primary\""
|
|
10166
|
-
},
|
|
10167
|
-
{
|
|
10168
|
-
"name": "active-text-color",
|
|
10169
|
-
"value": {
|
|
10170
|
-
"kind": "expression",
|
|
10171
|
-
"type": "string"
|
|
10172
|
-
},
|
|
10173
|
-
"description": "Overrides text color (if needed); Color name from the Quasar Color Palette\n\nExamples:\nprimary\nteal-10",
|
|
10174
|
-
"doc-url": "https://v2.quasar.dev/vue-components/pagination"
|
|
10175
|
-
},
|
|
10176
10158
|
{
|
|
10177
10159
|
"name": "dark",
|
|
10178
10160
|
"value": {
|
|
@@ -10183,24 +10165,6 @@
|
|
|
10183
10165
|
"doc-url": "https://v2.quasar.dev/vue-components/pagination",
|
|
10184
10166
|
"type": "boolean"
|
|
10185
10167
|
},
|
|
10186
|
-
{
|
|
10187
|
-
"name": "input-style",
|
|
10188
|
-
"value": {
|
|
10189
|
-
"kind": "expression",
|
|
10190
|
-
"type": "string|any[]|object"
|
|
10191
|
-
},
|
|
10192
|
-
"description": "Style definitions to be attributed to the input (if using one)\n\nExamples:\nbackground-color: #ff0000\n:input-style=\"{ backgroundColor: '#ff0000' }\"",
|
|
10193
|
-
"doc-url": "https://v2.quasar.dev/vue-components/pagination"
|
|
10194
|
-
},
|
|
10195
|
-
{
|
|
10196
|
-
"name": "input-class",
|
|
10197
|
-
"value": {
|
|
10198
|
-
"kind": "expression",
|
|
10199
|
-
"type": "string|any[]|object"
|
|
10200
|
-
},
|
|
10201
|
-
"description": "Class definitions to be attributed to the input (if using one)\n\nExamples:\nmy-special-class\n:input-class=\"{ 'my-special-class': <condition> }\"",
|
|
10202
|
-
"doc-url": "https://v2.quasar.dev/vue-components/pagination"
|
|
10203
|
-
},
|
|
10204
10168
|
{
|
|
10205
10169
|
"name": "size",
|
|
10206
10170
|
"value": {
|
|
@@ -10319,78 +10283,115 @@
|
|
|
10319
10283
|
"name": "max-pages",
|
|
10320
10284
|
"value": {
|
|
10321
10285
|
"kind": "expression",
|
|
10322
|
-
"type": "number"
|
|
10286
|
+
"type": "number|string"
|
|
10323
10287
|
},
|
|
10324
10288
|
"description": "Maximum number of page links to display at a time; 0 means Infinite\n\nExamples:\n5",
|
|
10325
10289
|
"doc-url": "https://v2.quasar.dev/vue-components/pagination"
|
|
10326
10290
|
},
|
|
10327
10291
|
{
|
|
10328
|
-
"name": "
|
|
10292
|
+
"name": "flat",
|
|
10329
10293
|
"value": {
|
|
10330
10294
|
"kind": "expression",
|
|
10331
|
-
"type": "boolean
|
|
10295
|
+
"type": "boolean"
|
|
10332
10296
|
},
|
|
10333
|
-
"description": "
|
|
10297
|
+
"description": "Use 'flat' design for non-active buttons (it's the default option)",
|
|
10334
10298
|
"doc-url": "https://v2.quasar.dev/vue-components/pagination",
|
|
10335
|
-
"
|
|
10299
|
+
"type": "boolean"
|
|
10336
10300
|
},
|
|
10337
10301
|
{
|
|
10338
|
-
"name": "
|
|
10302
|
+
"name": "outline",
|
|
10339
10303
|
"value": {
|
|
10340
10304
|
"kind": "expression",
|
|
10341
10305
|
"type": "boolean"
|
|
10342
10306
|
},
|
|
10343
|
-
"description": "
|
|
10307
|
+
"description": "Use 'outline' design for non-active buttons",
|
|
10344
10308
|
"doc-url": "https://v2.quasar.dev/vue-components/pagination",
|
|
10345
10309
|
"type": "boolean"
|
|
10346
10310
|
},
|
|
10347
10311
|
{
|
|
10348
|
-
"name": "
|
|
10312
|
+
"name": "unelevated",
|
|
10349
10313
|
"value": {
|
|
10350
10314
|
"kind": "expression",
|
|
10351
10315
|
"type": "boolean"
|
|
10352
10316
|
},
|
|
10353
|
-
"description": "
|
|
10317
|
+
"description": "Remove shadow for non-active buttons",
|
|
10354
10318
|
"doc-url": "https://v2.quasar.dev/vue-components/pagination",
|
|
10355
10319
|
"type": "boolean"
|
|
10356
10320
|
},
|
|
10357
10321
|
{
|
|
10358
|
-
"name": "
|
|
10322
|
+
"name": "push",
|
|
10359
10323
|
"value": {
|
|
10360
10324
|
"kind": "expression",
|
|
10361
10325
|
"type": "boolean"
|
|
10362
10326
|
},
|
|
10363
|
-
"description": "Use '
|
|
10327
|
+
"description": "Use 'push' design for non-active buttons",
|
|
10364
10328
|
"doc-url": "https://v2.quasar.dev/vue-components/pagination",
|
|
10365
10329
|
"type": "boolean"
|
|
10366
10330
|
},
|
|
10367
10331
|
{
|
|
10368
|
-
"name": "
|
|
10332
|
+
"name": "color",
|
|
10369
10333
|
"value": {
|
|
10370
10334
|
"kind": "expression",
|
|
10371
|
-
"type": "
|
|
10335
|
+
"type": "string"
|
|
10372
10336
|
},
|
|
10373
|
-
"description": "
|
|
10337
|
+
"description": "Color name from the Quasar Color Palette for the non-active buttons\n\nExamples:\nprimary\nteal-10",
|
|
10374
10338
|
"doc-url": "https://v2.quasar.dev/vue-components/pagination",
|
|
10375
|
-
"
|
|
10339
|
+
"default": "\"primary\""
|
|
10376
10340
|
},
|
|
10377
10341
|
{
|
|
10378
|
-
"name": "
|
|
10342
|
+
"name": "text-color",
|
|
10343
|
+
"value": {
|
|
10344
|
+
"kind": "expression",
|
|
10345
|
+
"type": "string"
|
|
10346
|
+
},
|
|
10347
|
+
"description": "Text color name from the Quasar Color Palette for the ACTIVE buttons\n\nExamples:\nprimary\nteal-10",
|
|
10348
|
+
"doc-url": "https://v2.quasar.dev/vue-components/pagination"
|
|
10349
|
+
},
|
|
10350
|
+
{
|
|
10351
|
+
"name": "active-design",
|
|
10352
|
+
"value": {
|
|
10353
|
+
"kind": "expression",
|
|
10354
|
+
"type": "'flat'|'outline'|'push'|'unelevated'"
|
|
10355
|
+
},
|
|
10356
|
+
"description": "The design of the ACTIVE button, similar to the flat/outline/push/unelevated props (but those are used for non-active buttons)",
|
|
10357
|
+
"doc-url": "https://v2.quasar.dev/vue-components/pagination"
|
|
10358
|
+
},
|
|
10359
|
+
{
|
|
10360
|
+
"name": "active-color",
|
|
10361
|
+
"value": {
|
|
10362
|
+
"kind": "expression",
|
|
10363
|
+
"type": "string"
|
|
10364
|
+
},
|
|
10365
|
+
"description": "Color name from the Quasar Color Palette for the ACTIVE button\n\nExamples:\nprimary\nteal-10",
|
|
10366
|
+
"doc-url": "https://v2.quasar.dev/vue-components/pagination",
|
|
10367
|
+
"default": "\"primary\""
|
|
10368
|
+
},
|
|
10369
|
+
{
|
|
10370
|
+
"name": "active-text-color",
|
|
10371
|
+
"value": {
|
|
10372
|
+
"kind": "expression",
|
|
10373
|
+
"type": "string"
|
|
10374
|
+
},
|
|
10375
|
+
"description": "Text color name from the Quasar Color Palette for the ACTIVE button\n\nExamples:\nprimary\nteal-10",
|
|
10376
|
+
"doc-url": "https://v2.quasar.dev/vue-components/pagination"
|
|
10377
|
+
},
|
|
10378
|
+
{
|
|
10379
|
+
"name": "round",
|
|
10379
10380
|
"value": {
|
|
10380
10381
|
"kind": "expression",
|
|
10381
10382
|
"type": "boolean"
|
|
10382
10383
|
},
|
|
10383
|
-
"description": "
|
|
10384
|
+
"description": "Makes a circle shaped button for all buttons",
|
|
10384
10385
|
"doc-url": "https://v2.quasar.dev/vue-components/pagination",
|
|
10385
10386
|
"type": "boolean"
|
|
10386
10387
|
},
|
|
10387
10388
|
{
|
|
10388
|
-
"name": "
|
|
10389
|
+
"name": "rounded",
|
|
10389
10390
|
"value": {
|
|
10390
10391
|
"kind": "expression",
|
|
10391
10392
|
"type": "boolean"
|
|
10392
10393
|
},
|
|
10393
|
-
"description": "
|
|
10394
|
+
"description": "Applies a more prominent border-radius for a squared shape button for all buttons",
|
|
10394
10395
|
"doc-url": "https://v2.quasar.dev/vue-components/pagination",
|
|
10395
10396
|
"type": "boolean"
|
|
10396
10397
|
},
|
|
@@ -10405,14 +10406,14 @@
|
|
|
10405
10406
|
"type": "boolean"
|
|
10406
10407
|
},
|
|
10407
10408
|
{
|
|
10408
|
-
"name": "
|
|
10409
|
+
"name": "gutter",
|
|
10409
10410
|
"value": {
|
|
10410
10411
|
"kind": "expression",
|
|
10411
|
-
"type": "
|
|
10412
|
+
"type": "string"
|
|
10412
10413
|
},
|
|
10413
|
-
"description": "
|
|
10414
|
+
"description": "Apply custom gutter; Size in CSS units, including unit name or standard size name (none|xs|sm|md|lg|xl)\n\nExamples:\n16px\n10px 5px\n2rem\nxs\nmd lg\n2px 2px 5px 7px",
|
|
10414
10415
|
"doc-url": "https://v2.quasar.dev/vue-components/pagination",
|
|
10415
|
-
"
|
|
10416
|
+
"default": "\"2px\""
|
|
10416
10417
|
},
|
|
10417
10418
|
{
|
|
10418
10419
|
"name": "padding",
|
|
@@ -10422,6 +10423,34 @@
|
|
|
10422
10423
|
},
|
|
10423
10424
|
"description": "Apply custom padding (vertical [horizontal]); Size in CSS units, including unit name or standard size name (none|xs|sm|md|lg|xl); Also removes the min width and height when set\n\nExamples:\n16px\n10px 5px\n2rem\nxs\nmd lg\n2px 2px 5px 7px",
|
|
10424
10425
|
"doc-url": "https://v2.quasar.dev/vue-components/pagination"
|
|
10426
|
+
},
|
|
10427
|
+
{
|
|
10428
|
+
"name": "input-style",
|
|
10429
|
+
"value": {
|
|
10430
|
+
"kind": "expression",
|
|
10431
|
+
"type": "string|any[]|object"
|
|
10432
|
+
},
|
|
10433
|
+
"description": "Style definitions to be attributed to the input (if using one)\n\nExamples:\nbackground-color: #ff0000\n:input-style=\"{ backgroundColor: '#ff0000' }\"",
|
|
10434
|
+
"doc-url": "https://v2.quasar.dev/vue-components/pagination"
|
|
10435
|
+
},
|
|
10436
|
+
{
|
|
10437
|
+
"name": "input-class",
|
|
10438
|
+
"value": {
|
|
10439
|
+
"kind": "expression",
|
|
10440
|
+
"type": "string|any[]|object"
|
|
10441
|
+
},
|
|
10442
|
+
"description": "Class definitions to be attributed to the input (if using one)\n\nExamples:\nmy-special-class\n:input-class=\"{ 'my-special-class': <condition> }\"",
|
|
10443
|
+
"doc-url": "https://v2.quasar.dev/vue-components/pagination"
|
|
10444
|
+
},
|
|
10445
|
+
{
|
|
10446
|
+
"name": "ripple",
|
|
10447
|
+
"value": {
|
|
10448
|
+
"kind": "expression",
|
|
10449
|
+
"type": "boolean|object"
|
|
10450
|
+
},
|
|
10451
|
+
"description": "Configure buttons material ripple (disable it by setting it to 'false' or supply a config object); Does not applies to boundary and ellipsis buttons\n\nExamples:\nfalse\n{ early: true, center: true, color: 'teal', keyCodes: [] }",
|
|
10452
|
+
"doc-url": "https://v2.quasar.dev/vue-components/pagination",
|
|
10453
|
+
"default": "true"
|
|
10425
10454
|
}
|
|
10426
10455
|
],
|
|
10427
10456
|
"events": [
|
package/package.json
CHANGED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<q-breadcrumbs v-bind="$attrs">
|
|
3
|
+
<q-breadcrumbs-el label="Home" icon="home" />
|
|
4
|
+
<q-breadcrumbs-el label="Components" icon="widgets" />
|
|
5
|
+
<q-breadcrumbs-el label="Toolbar" />
|
|
6
|
+
|
|
7
|
+
<template v-slot:separator>
|
|
8
|
+
<q-icon size="1.2em" name="arrow_forward" color="purple" />
|
|
9
|
+
</template>
|
|
10
|
+
</q-breadcrumbs>
|
|
11
|
+
</template>
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { mount } from '@cypress/vue'
|
|
2
|
+
import { alignMap, alignValues } from '../../../composables/private/use-align.js'
|
|
3
|
+
import BasicBreadcrumbs from './BasicBreadcrumbs.vue'
|
|
4
|
+
import BreadcrumbWithSeparatorSlot from './BreadcrumbWithSeparatorSlot.vue'
|
|
5
|
+
|
|
6
|
+
const gutterValues = [ 'xs', 'sm', 'md', 'lg', 'xl' ]
|
|
7
|
+
|
|
8
|
+
describe('Breadcrumbs API', () => {
|
|
9
|
+
describe('Props', () => {
|
|
10
|
+
describe('Category: content', () => {
|
|
11
|
+
describe('(prop): separator', () => {
|
|
12
|
+
it('should render a custom separator based on the defined value', () => {
|
|
13
|
+
const customSeparator = '>'
|
|
14
|
+
|
|
15
|
+
mount(BasicBreadcrumbs, {
|
|
16
|
+
props: {
|
|
17
|
+
separator: customSeparator
|
|
18
|
+
}
|
|
19
|
+
})
|
|
20
|
+
cy.get('.q-breadcrumbs__separator')
|
|
21
|
+
.each(($el) => cy.wrap($el).should('contain', customSeparator))
|
|
22
|
+
})
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
describe('(prop): gutter', () => {
|
|
26
|
+
it(`should render a breadcrumb with a gutter based on defined values: ${ gutterValues.join(', ') }`, () => {
|
|
27
|
+
mount(BasicBreadcrumbs)
|
|
28
|
+
|
|
29
|
+
// loop through each gutter value
|
|
30
|
+
for (const gutter of gutterValues) {
|
|
31
|
+
cy.get('.q-breadcrumbs > div')
|
|
32
|
+
.then(() => Cypress.vueWrapper.setProps({ gutter }))
|
|
33
|
+
.should('have.class', `q-gutter-${ gutter }`)
|
|
34
|
+
}
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
it('should render a breadcrumb with no gutter when the value is set to "none"', () => {
|
|
38
|
+
mount(BasicBreadcrumbs, {
|
|
39
|
+
props: {
|
|
40
|
+
gutter: 'none'
|
|
41
|
+
}
|
|
42
|
+
})
|
|
43
|
+
cy.get('.q-breadcrumbs > div')
|
|
44
|
+
.should('not.have.class', 'q-gutter')
|
|
45
|
+
})
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
describe('(prop): align', () => {
|
|
49
|
+
it(`should render a breadcrumb aligned based on defined values: ${ alignValues.join(', ') }`, () => {
|
|
50
|
+
mount(BasicBreadcrumbs)
|
|
51
|
+
|
|
52
|
+
// loop over alignValues
|
|
53
|
+
for (const align of alignValues) {
|
|
54
|
+
cy.get('.q-breadcrumbs > div')
|
|
55
|
+
.then(() => Cypress.vueWrapper.setProps({ align }))
|
|
56
|
+
.should('have.class', `justify-${ alignMap[ align ] }`)
|
|
57
|
+
}
|
|
58
|
+
})
|
|
59
|
+
})
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
describe('Category: style', () => {
|
|
63
|
+
describe('(prop): active-color', () => {
|
|
64
|
+
it('should change breadcrumb item color based on Quasar Color Palette', () => {
|
|
65
|
+
const activeColor = 'red'
|
|
66
|
+
|
|
67
|
+
mount(BasicBreadcrumbs, {
|
|
68
|
+
props: {
|
|
69
|
+
activeColor
|
|
70
|
+
}
|
|
71
|
+
})
|
|
72
|
+
cy.get('.q-breadcrumbs > div > .flex.items-center:not(.q-breadcrumbs--last)')
|
|
73
|
+
.each(($el) => cy.wrap($el).should('have.class', `text-${ activeColor }`))
|
|
74
|
+
})
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
describe('(prop): separator-color', () => {
|
|
78
|
+
it('should change breadcrumb separator color based on Quasar Color Palette', () => {
|
|
79
|
+
const separatorColor = 'red'
|
|
80
|
+
|
|
81
|
+
mount(BasicBreadcrumbs, {
|
|
82
|
+
props: {
|
|
83
|
+
separatorColor
|
|
84
|
+
}
|
|
85
|
+
})
|
|
86
|
+
cy.get('.q-breadcrumbs__separator')
|
|
87
|
+
.each(($el) => cy.wrap($el).should('have.class', `text-${ separatorColor }`))
|
|
88
|
+
})
|
|
89
|
+
})
|
|
90
|
+
})
|
|
91
|
+
})
|
|
92
|
+
|
|
93
|
+
describe('Slots', () => {
|
|
94
|
+
describe('(slot): default', () => {
|
|
95
|
+
it('should display the default slot content', () => {
|
|
96
|
+
mount(BasicBreadcrumbs)
|
|
97
|
+
|
|
98
|
+
cy.get('.q-breadcrumbs > div')
|
|
99
|
+
.should('contain', 'Home')
|
|
100
|
+
})
|
|
101
|
+
})
|
|
102
|
+
|
|
103
|
+
describe('(slot): separator', () => {
|
|
104
|
+
it('should display the separator slot content', () => {
|
|
105
|
+
mount(BreadcrumbWithSeparatorSlot)
|
|
106
|
+
|
|
107
|
+
cy.get('.q-breadcrumbs__separator')
|
|
108
|
+
.should('contain', 'arrow_forward')
|
|
109
|
+
})
|
|
110
|
+
})
|
|
111
|
+
})
|
|
112
|
+
})
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { mount } from '@cypress/vue'
|
|
2
|
+
import QBreadcrumbsEl from '../QBreadcrumbsEl.js'
|
|
3
|
+
|
|
4
|
+
describe('BreadcrumbsEl API', () => {
|
|
5
|
+
describe('Props', () => {
|
|
6
|
+
describe('Category: content', () => {
|
|
7
|
+
describe('(prop): label', () => {
|
|
8
|
+
it('should render a label inside the breadcrumb element', () => {
|
|
9
|
+
const label = 'Breadcrumb label'
|
|
10
|
+
|
|
11
|
+
mount(QBreadcrumbsEl, {
|
|
12
|
+
props: { label }
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
cy.get('.q-breadcrumbs__el')
|
|
16
|
+
.should('contain', label)
|
|
17
|
+
})
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
describe('(prop): icon', () => {
|
|
21
|
+
it('should render on the left of the breadcrumb element', () => {
|
|
22
|
+
const icon = 'home'
|
|
23
|
+
|
|
24
|
+
mount(QBreadcrumbsEl, {
|
|
25
|
+
props: { icon }
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
cy.get('.q-breadcrumbs__el')
|
|
29
|
+
.should('contain', icon)
|
|
30
|
+
})
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
describe('(prop): tag', () => {
|
|
34
|
+
it('should render a custom tag', () => {
|
|
35
|
+
const tag = 'a'
|
|
36
|
+
|
|
37
|
+
mount(QBreadcrumbsEl, {
|
|
38
|
+
props: { tag }
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
cy.get('.q-breadcrumbs__el')
|
|
42
|
+
.should('have.prop', 'tagName', tag.toUpperCase())
|
|
43
|
+
})
|
|
44
|
+
})
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
describe('Category: style', () => {
|
|
48
|
+
it.skip(' ', () => {
|
|
49
|
+
//
|
|
50
|
+
})
|
|
51
|
+
})
|
|
52
|
+
})
|
|
53
|
+
|
|
54
|
+
describe('Slots', () => {
|
|
55
|
+
describe('(slot): default', () => {
|
|
56
|
+
it('should render the default slot', () => {
|
|
57
|
+
const label = 'Breadcrumb label'
|
|
58
|
+
|
|
59
|
+
mount(QBreadcrumbsEl, {
|
|
60
|
+
slots: { default: label }
|
|
61
|
+
})
|
|
62
|
+
|
|
63
|
+
cy.get('.q-breadcrumbs__el')
|
|
64
|
+
.should('contain', label)
|
|
65
|
+
})
|
|
66
|
+
})
|
|
67
|
+
})
|
|
68
|
+
|
|
69
|
+
describe('Events', () => {
|
|
70
|
+
describe('(event): click', () => {
|
|
71
|
+
it('should emit "click" event when clicked', () => {
|
|
72
|
+
const fn = cy.stub()
|
|
73
|
+
|
|
74
|
+
mount(QBreadcrumbsEl, {
|
|
75
|
+
props: {
|
|
76
|
+
label: 'clicked breadcrumb',
|
|
77
|
+
onClick: fn
|
|
78
|
+
}
|
|
79
|
+
})
|
|
80
|
+
|
|
81
|
+
cy.get('.q-breadcrumbs__el')
|
|
82
|
+
.click()
|
|
83
|
+
.then(() => expect(fn).to.be.calledOnce)
|
|
84
|
+
})
|
|
85
|
+
})
|
|
86
|
+
})
|
|
87
|
+
})
|
|
@@ -4,7 +4,7 @@ import useAlign, { useAlignProps } from '../../composables/private/use-align.js'
|
|
|
4
4
|
import useSize, { useSizeProps } from '../../composables/private/use-size.js'
|
|
5
5
|
import useRouterLink, { useRouterLinkProps } from '../../composables/private/use-router-link.js'
|
|
6
6
|
|
|
7
|
-
const
|
|
7
|
+
export const btnPadding = {
|
|
8
8
|
none: 0,
|
|
9
9
|
xs: 4,
|
|
10
10
|
sm: 8,
|
|
@@ -24,6 +24,21 @@ const defaultSizes = {
|
|
|
24
24
|
const formTypes = [ 'button', 'submit', 'reset' ]
|
|
25
25
|
const mediaTypeRE = /[^\s]\/[^\s]/
|
|
26
26
|
|
|
27
|
+
export const btnDesignOptions = [ 'flat', 'outline', 'push', 'unelevated' ]
|
|
28
|
+
export const getBtnDesign = (props, defaultValue) => {
|
|
29
|
+
if (props.flat === true) return 'flat'
|
|
30
|
+
if (props.outline === true) return 'outline'
|
|
31
|
+
if (props.push === true) return 'push'
|
|
32
|
+
if (props.unelevated === true) return 'unelevated'
|
|
33
|
+
return defaultValue
|
|
34
|
+
}
|
|
35
|
+
export const getBtnDesignAttr = props => {
|
|
36
|
+
const design = getBtnDesign(props)
|
|
37
|
+
return design !== void 0
|
|
38
|
+
? { [ design ]: true }
|
|
39
|
+
: {}
|
|
40
|
+
}
|
|
41
|
+
|
|
27
42
|
export const useBtnProps = {
|
|
28
43
|
...useSizeProps,
|
|
29
44
|
...useRouterLinkProps,
|
|
@@ -37,13 +52,14 @@ export const useBtnProps = {
|
|
|
37
52
|
icon: String,
|
|
38
53
|
iconRight: String,
|
|
39
54
|
|
|
40
|
-
|
|
55
|
+
...btnDesignOptions.reduce(
|
|
56
|
+
(acc, val) => (acc[ val ] = Boolean) && acc,
|
|
57
|
+
{}
|
|
58
|
+
),
|
|
59
|
+
|
|
41
60
|
square: Boolean,
|
|
42
|
-
|
|
43
|
-
flat: Boolean,
|
|
44
|
-
unelevated: Boolean,
|
|
61
|
+
round: Boolean,
|
|
45
62
|
rounded: Boolean,
|
|
46
|
-
push: Boolean,
|
|
47
63
|
glossy: Boolean,
|
|
48
64
|
|
|
49
65
|
size: String,
|
|
@@ -93,7 +109,7 @@ export default function (props) {
|
|
|
93
109
|
? Object.assign({}, obj, {
|
|
94
110
|
padding: props.padding
|
|
95
111
|
.split(/\s+/)
|
|
96
|
-
.map(v => (v in
|
|
112
|
+
.map(v => (v in btnPadding ? btnPadding[ v ] + 'px' : v))
|
|
97
113
|
.join(' '),
|
|
98
114
|
minWidth: '0',
|
|
99
115
|
minHeight: '0'
|
|
@@ -113,13 +129,7 @@ export default function (props) {
|
|
|
113
129
|
isActionable.value === true ? props.tabindex || 0 : -1
|
|
114
130
|
))
|
|
115
131
|
|
|
116
|
-
const design = computed(() =>
|
|
117
|
-
if (props.flat === true) return 'flat'
|
|
118
|
-
if (props.outline === true) return 'outline'
|
|
119
|
-
if (props.push === true) return 'push'
|
|
120
|
-
if (props.unelevated === true) return 'unelevated'
|
|
121
|
-
return 'standard'
|
|
122
|
-
})
|
|
132
|
+
const design = computed(() => getBtnDesign(props, 'standard'))
|
|
123
133
|
|
|
124
134
|
const attributes = computed(() => {
|
|
125
135
|
const acc = { tabindex: tabIndex.value }
|