quasar 1.16.2 → 1.17.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.
- package/dist/api/BottomSheet.json +2 -2
- package/dist/api/Loading.json +0 -2
- package/dist/api/LoadingBar.json +1 -1
- package/dist/api/Notify.json +25 -25
- package/dist/api/QAjaxBar.json +23 -4
- package/dist/api/QAvatar.json +1 -1
- package/dist/api/QBreadcrumbsEl.json +32 -11
- package/dist/api/QBtn.json +35 -14
- package/dist/api/QBtnDropdown.json +36 -15
- package/dist/api/QBtnToggle.json +1 -1
- package/dist/api/QCarousel.json +7 -7
- package/dist/api/QCarouselSlide.json +2 -2
- package/dist/api/QChatMessage.json +1 -5
- package/dist/api/QChip.json +4 -4
- package/dist/api/QColor.json +6 -0
- package/dist/api/QDialog.json +7 -1
- package/dist/api/QExpansionItem.json +34 -13
- package/dist/api/QFab.json +34 -2
- package/dist/api/QFabAction.json +9 -1
- package/dist/api/QField.json +80 -6
- package/dist/api/QFile.json +80 -6
- package/dist/api/QImg.json +2 -2
- package/dist/api/QInnerLoading.json +32 -0
- package/dist/api/QInput.json +82 -6
- package/dist/api/QItem.json +31 -10
- package/dist/api/QOptionGroup.json +58 -1
- package/dist/api/QPagination.json +4 -4
- package/dist/api/QParallax.json +1 -1
- package/dist/api/QPopupEdit.json +14 -7
- package/dist/api/QPullToRefresh.json +1 -1
- package/dist/api/QRange.json +581 -96
- package/dist/api/QRating.json +3 -3
- package/dist/api/QRouteTab.json +32 -12
- package/dist/api/QScrollArea.json +188 -20
- package/dist/api/QSelect.json +82 -10
- package/dist/api/QSeparator.json +1 -1
- package/dist/api/QSlider.json +499 -34
- package/dist/api/QStep.json +4 -4
- package/dist/api/QStepper.json +4 -4
- package/dist/api/QTab.json +1 -1
- package/dist/api/QTable.json +4 -4
- package/dist/api/QTabs.json +9 -0
- package/dist/api/QTimelineEntry.json +2 -2
- package/dist/api/QToggle.json +1 -1
- package/dist/api/QTree.json +7 -1
- package/dist/api/QVideo.json +10 -0
- package/dist/icon-set/bootstrap-icons.umd.min.js +1 -1
- package/dist/icon-set/eva-icons.umd.min.js +1 -1
- package/dist/icon-set/fontawesome-v5-pro.umd.min.js +1 -1
- package/dist/icon-set/fontawesome-v5.umd.min.js +1 -1
- package/dist/icon-set/ionicons-v4.umd.min.js +1 -1
- package/dist/icon-set/line-awesome.umd.min.js +1 -1
- package/dist/icon-set/material-icons-outlined.umd.min.js +1 -1
- package/dist/icon-set/material-icons-round.umd.min.js +1 -1
- package/dist/icon-set/material-icons-sharp.umd.min.js +1 -1
- package/dist/icon-set/material-icons.umd.min.js +1 -1
- package/dist/icon-set/mdi-v3.umd.min.js +1 -1
- package/dist/icon-set/mdi-v4.umd.min.js +1 -1
- package/dist/icon-set/mdi-v5.umd.min.js +1 -1
- package/dist/icon-set/mdi-v6.umd.min.js +1 -1
- package/dist/icon-set/svg-bootstrap-icons.umd.min.js +1 -1
- package/dist/icon-set/svg-eva-icons.umd.min.js +1 -1
- package/dist/icon-set/svg-fontawesome-v5.umd.min.js +1 -1
- package/dist/icon-set/svg-ionicons-v4.umd.min.js +1 -1
- package/dist/icon-set/svg-ionicons-v5.umd.min.js +1 -1
- package/dist/icon-set/svg-ionicons-v6.umd.min.js +6 -0
- package/dist/icon-set/svg-line-awesome.umd.min.js +1 -1
- package/dist/icon-set/svg-material-icons-outlined.umd.min.js +1 -1
- package/dist/icon-set/svg-material-icons-round.umd.min.js +1 -1
- package/dist/icon-set/svg-material-icons-sharp.umd.min.js +1 -1
- package/dist/icon-set/svg-material-icons.umd.min.js +1 -1
- package/dist/icon-set/svg-mdi-v4.umd.min.js +1 -1
- package/dist/icon-set/svg-mdi-v5.umd.min.js +1 -1
- package/dist/icon-set/svg-mdi-v6.umd.min.js +1 -1
- package/dist/icon-set/svg-themify.umd.min.js +1 -1
- package/dist/icon-set/themify.umd.min.js +1 -1
- package/dist/lang/ar.umd.min.js +2 -2
- package/dist/lang/az-latn.umd.min.js +1 -1
- package/dist/lang/bg.umd.min.js +1 -1
- package/dist/lang/ca.umd.min.js +1 -1
- package/dist/lang/cs.umd.min.js +1 -1
- package/dist/lang/da.umd.min.js +1 -1
- package/dist/lang/de.umd.min.js +1 -1
- package/dist/lang/el.umd.min.js +1 -1
- package/dist/lang/en-gb.umd.min.js +1 -1
- package/dist/lang/en-us.umd.min.js +1 -1
- package/dist/lang/eo.umd.min.js +1 -1
- package/dist/lang/es.umd.min.js +1 -1
- package/dist/lang/et.umd.min.js +1 -1
- package/dist/lang/fa-ir.umd.min.js +1 -1
- package/dist/lang/fa.umd.min.js +1 -1
- package/dist/lang/fi.umd.min.js +1 -1
- package/dist/lang/fr.umd.min.js +2 -2
- package/dist/lang/gn.umd.min.js +1 -1
- package/dist/lang/he.umd.min.js +1 -1
- package/dist/lang/hr.umd.min.js +1 -1
- package/dist/lang/hu.umd.min.js +1 -1
- package/dist/lang/id.umd.min.js +1 -1
- package/dist/lang/is.umd.min.js +1 -1
- package/dist/lang/it.umd.min.js +1 -1
- package/dist/lang/ja.umd.min.js +1 -1
- package/dist/lang/km.umd.min.js +1 -1
- package/dist/lang/ko-kr.umd.min.js +1 -1
- package/dist/lang/kur-ckb.umd.min.js +1 -1
- package/dist/lang/lu.umd.min.js +1 -1
- package/dist/lang/lv.umd.min.js +1 -1
- package/dist/lang/ml.umd.min.js +1 -1
- package/dist/lang/ms.umd.min.js +1 -1
- package/dist/lang/nb-no.umd.min.js +1 -1
- package/dist/lang/nl.umd.min.js +1 -1
- package/dist/lang/pl.umd.min.js +1 -1
- package/dist/lang/pt-br.umd.min.js +1 -1
- package/dist/lang/pt.umd.min.js +1 -1
- package/dist/lang/ro.umd.min.js +1 -1
- package/dist/lang/ru.umd.min.js +1 -1
- package/dist/lang/sk.umd.min.js +1 -1
- package/dist/lang/sl.umd.min.js +1 -1
- package/dist/lang/sr.umd.min.js +2 -2
- package/dist/lang/sv.umd.min.js +1 -1
- package/dist/lang/ta.umd.min.js +1 -1
- package/dist/lang/th.umd.min.js +1 -1
- package/dist/lang/tr.umd.min.js +1 -1
- package/dist/lang/ug.umd.min.js +2 -2
- package/dist/lang/uk.umd.min.js +1 -1
- package/dist/lang/vi.umd.min.js +1 -1
- package/dist/lang/zh-hans.umd.min.js +2 -2
- package/dist/lang/zh-hant.umd.min.js +2 -2
- package/dist/quasar.addon.css +1 -1
- package/dist/quasar.addon.rtl.css +1 -1
- package/dist/quasar.common.js +2 -2
- package/dist/quasar.css +378 -226
- package/dist/quasar.esm.js +2 -2
- package/dist/quasar.ie.polyfills.js +1 -1
- package/dist/quasar.ie.polyfills.umd.min.js +1 -1
- package/dist/quasar.min.css +1 -1
- package/dist/quasar.rtl.css +510 -302
- package/dist/quasar.rtl.min.css +1 -1
- package/dist/quasar.sass +326 -211
- package/dist/quasar.styl +326 -209
- package/dist/quasar.umd.js +3240 -1889
- package/dist/quasar.umd.min.js +2 -2
- package/dist/quasar.umd.modern.js +3199 -1870
- package/dist/quasar.umd.modern.min.js +2 -2
- package/dist/transform-asset-urls.json +20 -0
- package/dist/types/index.d.ts +427 -105
- package/dist/types/utils/scroll.d.ts +1 -0
- package/dist/vetur/quasar-attributes.json +320 -92
- package/dist/vetur/quasar-tags.json +76 -19
- package/dist/web-types/web-types.json +1296 -257
- package/icon-set/svg-ionicons-v6.js +225 -0
- package/lang/ar.js +1 -1
- package/lang/fa-ir.js +3 -1
- package/lang/fa.js +3 -1
- package/lang/fr.js +1 -1
- package/lang/index.json +1 -1
- package/lang/kur-ckb.js +2 -2
- package/lang/sr.js +4 -4
- package/lang/ug.js +48 -46
- package/lang/zh-hans.js +1 -1
- package/lang/zh-hant.js +18 -18
- package/package.json +1 -1
- package/src/api.extends.json +1 -2
- package/src/components/ajax-bar/QAjaxBar.js +48 -26
- package/src/components/ajax-bar/QAjaxBar.json +22 -4
- package/src/components/breadcrumbs/QBreadcrumbs.js +15 -11
- package/src/components/breadcrumbs/QBreadcrumbs.sass +0 -3
- package/src/components/breadcrumbs/QBreadcrumbs.styl +0 -3
- package/src/components/breadcrumbs/QBreadcrumbsEl.js +25 -9
- package/src/components/btn/QBtn.js +3 -3
- package/src/components/btn-dropdown/QBtnDropdown.sass +2 -0
- package/src/components/btn-dropdown/QBtnDropdown.styl +2 -0
- package/src/components/btn-toggle/QBtnToggle.js +4 -1
- package/src/components/carousel/QCarousel.js +6 -2
- package/src/components/carousel/QCarousel.json +9 -1
- package/src/components/carousel/QCarouselSlide.json +2 -2
- package/src/components/chat/QChatMessage.json +1 -1
- package/src/components/color/QColor.js +100 -85
- package/src/components/color/QColor.json +7 -0
- package/src/components/color/QColor.sass +14 -24
- package/src/components/color/QColor.styl +14 -24
- package/src/components/date/QDate.js +7 -1
- package/src/components/date/QDate.sass +2 -0
- package/src/components/date/QDate.styl +2 -0
- package/src/components/dialog/QDialog.js +8 -4
- package/src/components/dialog/QDialog.json +8 -1
- package/src/components/drawer/QDrawer.js +16 -15
- package/src/components/editor/QEditor.js +2 -2
- package/src/components/editor/QEditor.sass +13 -1
- package/src/components/editor/QEditor.styl +13 -1
- package/src/components/expansion-item/QExpansionItem.js +13 -11
- package/src/components/fab/QFab.js +20 -11
- package/src/components/fab/QFab.json +35 -0
- package/src/components/fab/QFabAction.js +16 -9
- package/src/components/fab/QFabAction.json +10 -0
- package/src/components/field/QField.js +28 -23
- package/src/components/field/__QField.json +72 -8
- package/src/components/file/QFile.js +12 -4
- package/src/components/file/QFile.sass +4 -3
- package/src/components/file/QFile.styl +4 -3
- package/src/components/footer/QFooter.js +1 -1
- package/src/components/form/QForm.js +1 -1
- package/src/components/header/QHeader.js +1 -1
- package/src/components/icon/QIcon.js +92 -75
- package/src/components/icon/QIcon.sass +0 -1
- package/src/components/icon/QIcon.styl +0 -1
- package/src/components/img/QImg.json +2 -2
- package/src/components/infinite-scroll/QInfiniteScroll.js +49 -36
- package/src/components/inner-loading/QInnerLoading.js +54 -22
- package/src/components/inner-loading/QInnerLoading.json +29 -0
- package/src/components/inner-loading/QInnerLoading.sass +3 -0
- package/src/components/inner-loading/QInnerLoading.styl +3 -0
- package/src/components/item/QItem.js +9 -15
- package/src/components/layout/QLayout.js +49 -0
- package/src/components/linear-progress/QLinearProgress.js +6 -2
- package/src/components/menu/QMenu.js +5 -1
- package/src/components/option-group/QOptionGroup.js +32 -22
- package/src/components/option-group/QOptionGroup.json +50 -1
- package/src/components/parallax/QParallax.js +3 -0
- package/src/components/parallax/QParallax.json +1 -1
- package/src/components/popup-edit/QPopupEdit.js +41 -16
- package/src/components/popup-edit/QPopupEdit.json +15 -8
- package/src/components/range/QRange.js +223 -278
- package/src/components/range/QRange.json +11 -122
- package/src/components/rating/QRating.js +56 -38
- package/src/components/rating/QRating.json +3 -3
- package/src/components/rating/QRating.sass +8 -6
- package/src/components/rating/QRating.styl +8 -6
- package/src/components/resize-observer/QResizeObserver.js +15 -10
- package/src/components/scroll-area/QScrollArea.js +342 -126
- package/src/components/scroll-area/QScrollArea.json +164 -20
- package/src/components/scroll-area/QScrollArea.sass +5 -0
- package/src/components/scroll-area/QScrollArea.styl +5 -0
- package/src/components/scroll-observer/QScrollObserver.js +9 -2
- package/src/components/select/QSelect.js +8 -2
- package/src/components/select/QSelect.json +1 -1
- package/src/components/separator/QSeparator.js +0 -1
- package/src/components/separator/QSeparator.json +1 -1
- package/src/components/slider/QSlider.js +97 -140
- package/src/components/slider/QSlider.json +1 -122
- package/src/components/slider/QSlider.sass +205 -139
- package/src/components/slider/QSlider.styl +205 -139
- package/src/components/slider/slider-utils.js +468 -123
- package/src/components/slider/slider-utils.json +546 -0
- package/src/components/stepper/QStepper.js +1 -1
- package/src/components/stepper/QStepper.sass +25 -26
- package/src/components/stepper/QStepper.styl +25 -26
- package/src/components/table/QTable.sass +3 -0
- package/src/components/table/QTable.styl +3 -0
- package/src/components/tabs/QRouteTab.js +13 -13
- package/src/components/tabs/QRouteTab.json +0 -7
- package/src/components/tabs/QTab.js +71 -20
- package/src/components/tabs/QTabs.js +237 -52
- package/src/components/tabs/QTabs.json +8 -0
- package/src/components/tabs/QTabs.sass +6 -6
- package/src/components/tabs/QTabs.styl +6 -6
- package/src/components/time/QTime.js +6 -2
- package/src/components/timeline/QTimeline.sass +1 -2
- package/src/components/timeline/QTimeline.styl +1 -2
- package/src/components/timeline/QTimelineEntry.json +1 -1
- package/src/components/tree/QTree.js +10 -6
- package/src/components/tree/QTree.json +5 -0
- package/src/components/tree/QTree.sass +58 -4
- package/src/components/tree/QTree.styl +58 -4
- package/src/components/uploader/QUploaderBase.js +15 -19
- package/src/components/video/QVideo.js +4 -1
- package/src/components/video/QVideo.json +11 -0
- package/src/components/virtual-scroll/QVirtualScroll.sass +1 -0
- package/src/components/virtual-scroll/QVirtualScroll.styl +1 -0
- package/src/css/core/helpers.sass +3 -0
- package/src/css/core/helpers.styl +3 -0
- package/src/css/core/positioning.sass +5 -0
- package/src/css/core/positioning.styl +5 -0
- package/src/css/normalize.sass +0 -7
- package/src/css/variables.sass +4 -6
- package/src/css/variables.styl +4 -6
- package/src/directives/Scroll.js +2 -2
- package/src/directives/ScrollFire.js +1 -0
- package/src/ie-compat/ie.js +13 -13
- package/src/install.js +1 -1
- package/src/lang.js +7 -4
- package/src/mixins/anchor.js +3 -13
- package/src/mixins/btn.js +33 -38
- package/src/mixins/btn.json +26 -11
- package/src/mixins/file.js +27 -5
- package/src/mixins/fullscreen.js +16 -4
- package/src/mixins/portal.js +10 -10
- package/src/mixins/router-link.js +88 -14
- package/src/mixins/router-link.json +26 -10
- package/src/mixins/validate.js +33 -15
- package/src/mixins/virtual-scroll.js +40 -42
- package/src/plugins/AppFullscreen.js +41 -16
- package/src/plugins/BottomSheet.json +1 -1
- package/src/plugins/Cookies.js +1 -1
- package/src/plugins/Loading.js +8 -0
- package/src/plugins/LoadingBar.js +9 -0
- package/src/plugins/LoadingBar.json +1 -1
- package/src/plugins/Notify.js +351 -333
- package/src/plugins/Notify.json +20 -20
- package/src/plugins/Notify.sass +9 -3
- package/src/plugins/Notify.styl +9 -3
- package/src/utils/clone.js +53 -4
- package/src/utils/date.js +134 -69
- package/src/utils/dom.js +28 -9
- package/src/utils/extend.js +2 -2
- package/src/utils/focus-manager.js +8 -10
- package/src/utils/global-dialog.js +18 -1
- package/src/utils/is.js +2 -2
- package/src/utils/morph.js +2 -12
- package/src/utils/scroll.js +71 -35
package/src/plugins/Notify.json
CHANGED
|
@@ -47,9 +47,9 @@
|
|
|
47
47
|
|
|
48
48
|
"avatar": {
|
|
49
49
|
"type": "String",
|
|
50
|
-
"desc": "URL to an avatar/image; Suggestion: use
|
|
50
|
+
"desc": "URL to an avatar/image; Suggestion: use public folder",
|
|
51
51
|
"examples": [
|
|
52
|
-
"(
|
|
52
|
+
"(public folder) img/something.png",
|
|
53
53
|
"(relative path format) require('./my_img.jpg')",
|
|
54
54
|
"(URL) https://some-site.net/some-img.gif"
|
|
55
55
|
]
|
|
@@ -217,9 +217,9 @@
|
|
|
217
217
|
|
|
218
218
|
"avatar": {
|
|
219
219
|
"type": "String",
|
|
220
|
-
"desc": "URL to an avatar/image; Suggestion: use
|
|
220
|
+
"desc": "URL to an avatar/image; Suggestion: use public folder",
|
|
221
221
|
"examples": [
|
|
222
|
-
"(
|
|
222
|
+
"(public folder) img/something.png",
|
|
223
223
|
"(relative path format) require('./my_img.jpg')",
|
|
224
224
|
"(URL) https://some-site.net/some-img.gif"
|
|
225
225
|
]
|
|
@@ -278,7 +278,7 @@
|
|
|
278
278
|
"desc": "Style definitions to be attributed to the badge",
|
|
279
279
|
"examples": [
|
|
280
280
|
"background-color: #ff0000",
|
|
281
|
-
"
|
|
281
|
+
"{ backgroundColor: '#ff0000' }"
|
|
282
282
|
],
|
|
283
283
|
"addedIn": "v1.9.0"
|
|
284
284
|
},
|
|
@@ -287,7 +287,7 @@
|
|
|
287
287
|
"desc": "Class definitions to be attributed to the badge",
|
|
288
288
|
"examples": [
|
|
289
289
|
"my-special-class",
|
|
290
|
-
"
|
|
290
|
+
"{ 'my-special-class': <condition> }"
|
|
291
291
|
],
|
|
292
292
|
"addedIn": "v1.9.0"
|
|
293
293
|
},
|
|
@@ -302,7 +302,7 @@
|
|
|
302
302
|
"desc": "Class definitions to be attributed to the progress bar",
|
|
303
303
|
"examples": [
|
|
304
304
|
"my-special-class",
|
|
305
|
-
"
|
|
305
|
+
"{ 'my-special-class': <condition> }"
|
|
306
306
|
],
|
|
307
307
|
"addedIn": "v1.9.0"
|
|
308
308
|
},
|
|
@@ -415,9 +415,9 @@
|
|
|
415
415
|
|
|
416
416
|
"avatar": {
|
|
417
417
|
"type": "String",
|
|
418
|
-
"desc": "URL to an avatar/image; Suggestion: use
|
|
418
|
+
"desc": "URL to an avatar/image; Suggestion: use public folder",
|
|
419
419
|
"examples": [
|
|
420
|
-
"(
|
|
420
|
+
"(public folder) img/something.png",
|
|
421
421
|
"(relative path format) require('./my_img.jpg')",
|
|
422
422
|
"(URL) https://some-site.net/some-img.gif"
|
|
423
423
|
]
|
|
@@ -440,7 +440,7 @@
|
|
|
440
440
|
"desc": "Class definitions to be attributed to the progress bar",
|
|
441
441
|
"examples": [
|
|
442
442
|
"my-special-class",
|
|
443
|
-
"
|
|
443
|
+
"{ 'my-special-class': <condition> }"
|
|
444
444
|
],
|
|
445
445
|
"addedIn": "v1.9.0"
|
|
446
446
|
},
|
|
@@ -556,9 +556,9 @@
|
|
|
556
556
|
|
|
557
557
|
"avatar": {
|
|
558
558
|
"type": "String",
|
|
559
|
-
"desc": "URL to an avatar/image; Suggestion: use
|
|
559
|
+
"desc": "URL to an avatar/image; Suggestion: use public folder",
|
|
560
560
|
"examples": [
|
|
561
|
-
"(
|
|
561
|
+
"(public folder) img/something.png",
|
|
562
562
|
"(relative path format) require('./my_img.jpg')",
|
|
563
563
|
"(URL) https://some-site.net/some-img.gif"
|
|
564
564
|
]
|
|
@@ -609,7 +609,7 @@
|
|
|
609
609
|
"desc": "Style definitions to be attributed to the badge",
|
|
610
610
|
"examples": [
|
|
611
611
|
"background-color: #ff0000",
|
|
612
|
-
"
|
|
612
|
+
"{ backgroundColor: '#ff0000' }"
|
|
613
613
|
],
|
|
614
614
|
"addedIn": "v1.9.0"
|
|
615
615
|
},
|
|
@@ -618,7 +618,7 @@
|
|
|
618
618
|
"desc": "Class definitions to be attributed to the badge",
|
|
619
619
|
"examples": [
|
|
620
620
|
"my-special-class",
|
|
621
|
-
"
|
|
621
|
+
"{ 'my-special-class': <condition> }"
|
|
622
622
|
],
|
|
623
623
|
"addedIn": "v1.9.0"
|
|
624
624
|
},
|
|
@@ -633,7 +633,7 @@
|
|
|
633
633
|
"desc": "Class definitions to be attributed to the progress bar",
|
|
634
634
|
"examples": [
|
|
635
635
|
"my-special-class",
|
|
636
|
-
"
|
|
636
|
+
"{ 'my-special-class': <condition> }"
|
|
637
637
|
],
|
|
638
638
|
"addedIn": "v1.9.0"
|
|
639
639
|
},
|
|
@@ -750,9 +750,9 @@
|
|
|
750
750
|
|
|
751
751
|
"avatar": {
|
|
752
752
|
"type": "String",
|
|
753
|
-
"desc": "URL to an avatar/image; Suggestion: use
|
|
753
|
+
"desc": "URL to an avatar/image; Suggestion: use public folder",
|
|
754
754
|
"examples": [
|
|
755
|
-
"(
|
|
755
|
+
"(public folder) img/something.png",
|
|
756
756
|
"(relative path format) require('./my_img.jpg')",
|
|
757
757
|
"(URL) https://some-site.net/some-img.gif"
|
|
758
758
|
]
|
|
@@ -803,7 +803,7 @@
|
|
|
803
803
|
"desc": "Style definitions to be attributed to the badge",
|
|
804
804
|
"examples": [
|
|
805
805
|
"background-color: #ff0000",
|
|
806
|
-
"
|
|
806
|
+
"{ backgroundColor: '#ff0000' }"
|
|
807
807
|
],
|
|
808
808
|
"addedIn": "v1.9.0"
|
|
809
809
|
},
|
|
@@ -812,7 +812,7 @@
|
|
|
812
812
|
"desc": "Class definitions to be attributed to the badge",
|
|
813
813
|
"examples": [
|
|
814
814
|
"my-special-class",
|
|
815
|
-
"
|
|
815
|
+
"{ 'my-special-class': <condition> }"
|
|
816
816
|
],
|
|
817
817
|
"addedIn": "v1.9.0"
|
|
818
818
|
},
|
|
@@ -827,7 +827,7 @@
|
|
|
827
827
|
"desc": "Class definitions to be attributed to the progress bar",
|
|
828
828
|
"examples": [
|
|
829
829
|
"my-special-class",
|
|
830
|
-
"
|
|
830
|
+
"{ 'my-special-class': <condition> }"
|
|
831
831
|
],
|
|
832
832
|
"addedIn": "v1.9.0"
|
|
833
833
|
},
|
package/src/plugins/Notify.sass
CHANGED
|
@@ -40,16 +40,22 @@ body.q-ios-padding .q-notifications__list
|
|
|
40
40
|
|
|
41
41
|
&__icon
|
|
42
42
|
font-size: 24px
|
|
43
|
-
margin-right: 16px
|
|
44
43
|
flex: 0 0 1em
|
|
45
44
|
|
|
45
|
+
&--additional
|
|
46
|
+
margin-right: 16px
|
|
47
|
+
|
|
46
48
|
&__avatar
|
|
47
49
|
font-size: 32px
|
|
48
|
-
|
|
50
|
+
|
|
51
|
+
&--additional
|
|
52
|
+
margin-right: 8px
|
|
49
53
|
|
|
50
54
|
&__spinner
|
|
51
55
|
font-size: 32px
|
|
52
|
-
|
|
56
|
+
|
|
57
|
+
&--additional
|
|
58
|
+
margin-right: 8px
|
|
53
59
|
|
|
54
60
|
&__message
|
|
55
61
|
padding: 8px 0
|
package/src/plugins/Notify.styl
CHANGED
|
@@ -40,16 +40,22 @@ body.q-ios-padding .q-notifications__list
|
|
|
40
40
|
|
|
41
41
|
&__icon
|
|
42
42
|
font-size: 24px
|
|
43
|
-
margin-right: 16px
|
|
44
43
|
flex: 0 0 1em
|
|
45
44
|
|
|
45
|
+
&--additional
|
|
46
|
+
margin-right: 16px
|
|
47
|
+
|
|
46
48
|
&__avatar
|
|
47
49
|
font-size: 32px
|
|
48
|
-
|
|
50
|
+
|
|
51
|
+
&--additional
|
|
52
|
+
margin-right: 8px
|
|
49
53
|
|
|
50
54
|
&__spinner
|
|
51
55
|
font-size: 32px
|
|
52
|
-
|
|
56
|
+
|
|
57
|
+
&--additional
|
|
58
|
+
margin-right: 8px
|
|
53
59
|
|
|
54
60
|
&__message
|
|
55
61
|
padding: 8px 0
|
package/src/utils/clone.js
CHANGED
|
@@ -1,6 +1,55 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
// adapted from https://stackoverflow.com/a/40294058
|
|
2
|
+
|
|
3
|
+
export default function cloneDeep (data, hash = new WeakMap()) {
|
|
4
|
+
if (Object(data) !== data) return data
|
|
5
|
+
if (hash.has(data)) return hash.get(data)
|
|
6
|
+
|
|
7
|
+
const result = data instanceof Date
|
|
8
|
+
? new Date(data)
|
|
9
|
+
: (data instanceof RegExp
|
|
10
|
+
? new RegExp(data.source, data.flags)
|
|
11
|
+
: (data instanceof Set
|
|
12
|
+
? new Set()
|
|
13
|
+
: (data instanceof Map
|
|
14
|
+
? new Map()
|
|
15
|
+
: (typeof data.constructor !== 'function'
|
|
16
|
+
? Object.create(null)
|
|
17
|
+
: (data.prototype !== void 0 && typeof data.prototype.constructor === 'function'
|
|
18
|
+
? data
|
|
19
|
+
: new data.constructor()
|
|
20
|
+
)
|
|
21
|
+
)
|
|
22
|
+
)
|
|
23
|
+
)
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
if (typeof data.constructor === 'function' && typeof data.valueOf === 'function') {
|
|
27
|
+
const val = data.valueOf()
|
|
28
|
+
|
|
29
|
+
if (Object(val) !== val) {
|
|
30
|
+
const result = new data.constructor(val)
|
|
31
|
+
|
|
32
|
+
hash.set(data, result)
|
|
33
|
+
|
|
34
|
+
return result
|
|
35
|
+
}
|
|
5
36
|
}
|
|
37
|
+
|
|
38
|
+
hash.set(data, result)
|
|
39
|
+
|
|
40
|
+
if (data instanceof Set) {
|
|
41
|
+
data.forEach(val => {
|
|
42
|
+
result.add(cloneDeep(val, hash))
|
|
43
|
+
})
|
|
44
|
+
}
|
|
45
|
+
else if (data instanceof Map) {
|
|
46
|
+
data.forEach((val, key) => {
|
|
47
|
+
result.set(key, cloneDeep(val, hash))
|
|
48
|
+
})
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return Object.assign(
|
|
52
|
+
result,
|
|
53
|
+
...Object.keys(data).map(key => ({ [key]: cloneDeep(data[key], hash) }))
|
|
54
|
+
)
|
|
6
55
|
}
|
package/src/utils/date.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { isDate } from './is.js'
|
|
4
4
|
import { pad, capitalize } from './format.js'
|
|
5
5
|
import { jalaaliMonthLength } from './date-persian.js'
|
|
6
|
-
import lang from '../lang.js'
|
|
6
|
+
import lang, { defaultLang } from '../lang.js'
|
|
7
7
|
|
|
8
8
|
const
|
|
9
9
|
MILLISECONDS_IN_DAY = 86400000,
|
|
@@ -151,6 +151,128 @@ function getRegexData (mask, dateLocale) {
|
|
|
151
151
|
return res
|
|
152
152
|
}
|
|
153
153
|
|
|
154
|
+
function getDateLocale (paramDateLocale, langProps) {
|
|
155
|
+
return paramDateLocale !== void 0
|
|
156
|
+
? paramDateLocale
|
|
157
|
+
: (
|
|
158
|
+
langProps !== void 0
|
|
159
|
+
? langProps.date
|
|
160
|
+
: defaultLang.date
|
|
161
|
+
)
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
function formatTimezone (offset, delimeter = '') {
|
|
165
|
+
const
|
|
166
|
+
sign = offset > 0 ? '-' : '+',
|
|
167
|
+
absOffset = Math.abs(offset),
|
|
168
|
+
hours = Math.floor(absOffset / 60),
|
|
169
|
+
minutes = absOffset % 60
|
|
170
|
+
|
|
171
|
+
return sign + pad(hours) + delimeter + pad(minutes)
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
function applyYearMonthDayChange (date, mod, sign) {
|
|
175
|
+
let
|
|
176
|
+
year = date.getFullYear(),
|
|
177
|
+
month = date.getMonth(),
|
|
178
|
+
day = date.getDate()
|
|
179
|
+
|
|
180
|
+
if (mod.years !== void 0) {
|
|
181
|
+
year += sign * mod.years
|
|
182
|
+
}
|
|
183
|
+
else if (mod.year !== void 0) {
|
|
184
|
+
year += sign * mod.year
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
if (mod.months !== void 0) {
|
|
188
|
+
month += sign * mod.months
|
|
189
|
+
}
|
|
190
|
+
else if (mod.month !== void 0) {
|
|
191
|
+
month += sign * mod.month
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
if (mod.days !== void 0) {
|
|
195
|
+
day += sign * mod.days
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
date.setDate(1)
|
|
199
|
+
date.setMonth(2)
|
|
200
|
+
|
|
201
|
+
date.setFullYear(year)
|
|
202
|
+
date.setMonth(month)
|
|
203
|
+
date.setDate(day)
|
|
204
|
+
|
|
205
|
+
return date
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
const yearMonDay = [ 'years', 'year', 'months', 'month', 'days' ]
|
|
209
|
+
|
|
210
|
+
function getChange (date, mod, sign) {
|
|
211
|
+
const
|
|
212
|
+
d = new Date(date),
|
|
213
|
+
t = (
|
|
214
|
+
mod.years !== void 0 || mod.year !== void 0 ||
|
|
215
|
+
mod.months !== void 0 || mod.month !== void 0 ||
|
|
216
|
+
mod.days !== void 0
|
|
217
|
+
)
|
|
218
|
+
? applyYearMonthDayChange(d, mod, sign)
|
|
219
|
+
: d
|
|
220
|
+
|
|
221
|
+
for (const key in mod) {
|
|
222
|
+
if (yearMonDay.includes(key) === false) {
|
|
223
|
+
const op = capitalize(key)
|
|
224
|
+
t[`set${op}`](t[`get${op}`]() + sign * mod[key])
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
return t
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
function applyYearMonthDay (date, mod, middle) {
|
|
232
|
+
const
|
|
233
|
+
year = mod.year !== void 0
|
|
234
|
+
? mod.year
|
|
235
|
+
: (mod.years !== void 0 ? mod.years : date[`get${middle}FullYear`]()),
|
|
236
|
+
month = mod.month !== void 0
|
|
237
|
+
? mod.month - 1
|
|
238
|
+
: (mod.months !== void 0 ? mod.months : date[`get${middle}Month`]()),
|
|
239
|
+
maxDay = (new Date(year, month + 1, 0)).getDate(),
|
|
240
|
+
day = Math.min(maxDay, mod.date !== void 0 ? mod.date : date[`get${middle}Date`]())
|
|
241
|
+
|
|
242
|
+
date[`set${middle}Date`](1)
|
|
243
|
+
date[`set${middle}Month`](2)
|
|
244
|
+
|
|
245
|
+
date[`set${middle}FullYear`](year)
|
|
246
|
+
date[`set${middle}Month`](month)
|
|
247
|
+
date[`set${middle}Date`](day)
|
|
248
|
+
|
|
249
|
+
return date
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
const yearMonDayAdj = [ 'years', 'year', 'months', 'month', 'days' ]
|
|
253
|
+
|
|
254
|
+
export function adjustDate (date, mod, utc) {
|
|
255
|
+
const
|
|
256
|
+
middle = utc === true ? 'UTC' : '',
|
|
257
|
+
d = new Date(date),
|
|
258
|
+
t = (
|
|
259
|
+
mod.years !== void 0 || mod.year !== void 0 ||
|
|
260
|
+
mod.months !== void 0 || mod.month !== void 0 ||
|
|
261
|
+
mod.days !== void 0
|
|
262
|
+
)
|
|
263
|
+
? applyYearMonthDay(d, mod, middle)
|
|
264
|
+
: d
|
|
265
|
+
|
|
266
|
+
for (const key in mod) {
|
|
267
|
+
if (yearMonDayAdj.includes(key) === false) {
|
|
268
|
+
const op = key.charAt(0).toUpperCase() + key.slice(1)
|
|
269
|
+
t[`set${middle}${op}`](mod[key])
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
return t
|
|
274
|
+
}
|
|
275
|
+
|
|
154
276
|
export function extractDate (str, mask, dateLocale) {
|
|
155
277
|
const d = __splitDate(str, mask, dateLocale)
|
|
156
278
|
|
|
@@ -168,7 +290,7 @@ export function extractDate (str, mask, dateLocale) {
|
|
|
168
290
|
|
|
169
291
|
return d.timezoneOffset === null || d.timezoneOffset === tzOffset
|
|
170
292
|
? date
|
|
171
|
-
: getChange(date, { minutes: d.timezoneOffset - tzOffset },
|
|
293
|
+
: getChange(date, { minutes: d.timezoneOffset - tzOffset }, 1)
|
|
172
294
|
}
|
|
173
295
|
|
|
174
296
|
export function __splitDate (str, mask, dateLocale, calendar, defaultModel) {
|
|
@@ -201,7 +323,7 @@ export function __splitDate (str, mask, dateLocale, calendar, defaultModel) {
|
|
|
201
323
|
}
|
|
202
324
|
|
|
203
325
|
const
|
|
204
|
-
langOpts = dateLocale
|
|
326
|
+
langOpts = getDateLocale(dateLocale, lang.props),
|
|
205
327
|
months = langOpts.months,
|
|
206
328
|
monthsShort = langOpts.monthsShort
|
|
207
329
|
|
|
@@ -303,49 +425,12 @@ export function __splitDate (str, mask, dateLocale, calendar, defaultModel) {
|
|
|
303
425
|
}
|
|
304
426
|
}
|
|
305
427
|
|
|
306
|
-
date.dateHash = date.year + '/' + pad(date.month) + '/' + pad(date.day)
|
|
428
|
+
date.dateHash = pad(date.year, 6) + '/' + pad(date.month) + '/' + pad(date.day)
|
|
307
429
|
date.timeHash = pad(date.hour) + ':' + pad(date.minute) + ':' + pad(date.second) + tzString
|
|
308
430
|
|
|
309
431
|
return date
|
|
310
432
|
}
|
|
311
433
|
|
|
312
|
-
function formatTimezone (offset, delimeter = '') {
|
|
313
|
-
const
|
|
314
|
-
sign = offset > 0 ? '-' : '+',
|
|
315
|
-
absOffset = Math.abs(offset),
|
|
316
|
-
hours = Math.floor(absOffset / 60),
|
|
317
|
-
minutes = absOffset % 60
|
|
318
|
-
|
|
319
|
-
return sign + pad(hours) + delimeter + pad(minutes)
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
function setMonth (date, newMonth /* 1-based */) {
|
|
323
|
-
const
|
|
324
|
-
test = new Date(date.getFullYear(), newMonth, 0, 0, 0, 0, 0),
|
|
325
|
-
days = test.getDate()
|
|
326
|
-
|
|
327
|
-
date.setMonth(newMonth - 1, Math.min(days, date.getDate()))
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
function getChange (date, mod, add) {
|
|
331
|
-
const
|
|
332
|
-
t = new Date(date),
|
|
333
|
-
sign = (add ? 1 : -1)
|
|
334
|
-
|
|
335
|
-
Object.keys(mod).forEach(key => {
|
|
336
|
-
if (key === 'month') {
|
|
337
|
-
setMonth(t, t.getMonth() + 1 + sign * mod.month)
|
|
338
|
-
return
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
const op = key === 'year'
|
|
342
|
-
? 'FullYear'
|
|
343
|
-
: capitalize(key === 'days' ? 'date' : key)
|
|
344
|
-
t[`set${op}`](t[`get${op}`]() + sign * mod[key])
|
|
345
|
-
})
|
|
346
|
-
return t
|
|
347
|
-
}
|
|
348
|
-
|
|
349
434
|
export function isValid (date) {
|
|
350
435
|
return typeof date === 'number'
|
|
351
436
|
? true
|
|
@@ -403,30 +488,10 @@ export function isBetweenDates (date, from, to, opts = {}) {
|
|
|
403
488
|
}
|
|
404
489
|
|
|
405
490
|
export function addToDate (date, mod) {
|
|
406
|
-
return getChange(date, mod,
|
|
491
|
+
return getChange(date, mod, 1)
|
|
407
492
|
}
|
|
408
493
|
export function subtractFromDate (date, mod) {
|
|
409
|
-
return getChange(date, mod,
|
|
410
|
-
}
|
|
411
|
-
|
|
412
|
-
export function adjustDate (date, mod, utc) {
|
|
413
|
-
const
|
|
414
|
-
t = new Date(date),
|
|
415
|
-
prefix = `set${utc === true ? 'UTC' : ''}`
|
|
416
|
-
|
|
417
|
-
Object.keys(mod).forEach(key => {
|
|
418
|
-
if (key === 'month') {
|
|
419
|
-
setMonth(t, mod.month)
|
|
420
|
-
return
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
const op = key === 'year'
|
|
424
|
-
? 'FullYear'
|
|
425
|
-
: key.charAt(0).toUpperCase() + key.slice(1)
|
|
426
|
-
t[`${prefix}${op}`](mod[key])
|
|
427
|
-
})
|
|
428
|
-
|
|
429
|
-
return t
|
|
494
|
+
return getChange(date, mod, -1)
|
|
430
495
|
}
|
|
431
496
|
|
|
432
497
|
export function startOfDate (date, unit, utc) {
|
|
@@ -843,15 +908,15 @@ export function formatDate (val, mask, dateLocale, __forcedYear, __forcedTimezon
|
|
|
843
908
|
mask = defaultMask
|
|
844
909
|
}
|
|
845
910
|
|
|
846
|
-
const locale = dateLocale
|
|
847
|
-
? dateLocale
|
|
848
|
-
: lang.props.date
|
|
911
|
+
const locale = getDateLocale(dateLocale, lang.props)
|
|
849
912
|
|
|
850
913
|
return mask.replace(
|
|
851
914
|
token,
|
|
852
|
-
(match, text) =>
|
|
853
|
-
|
|
854
|
-
|
|
915
|
+
(match, text) => (
|
|
916
|
+
match in formatter
|
|
917
|
+
? formatter[match](date, locale, __forcedYear, __forcedTimezoneOffset)
|
|
918
|
+
: (text === void 0 ? match : text.split('\\]').join(']'))
|
|
919
|
+
)
|
|
855
920
|
)
|
|
856
921
|
}
|
|
857
922
|
|
package/src/utils/dom.js
CHANGED
|
@@ -46,6 +46,30 @@ export function ready (fn) {
|
|
|
46
46
|
document.addEventListener('DOMContentLoaded', fn, false)
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
+
// internal
|
|
50
|
+
export function getElement (el) {
|
|
51
|
+
const type = typeof el
|
|
52
|
+
|
|
53
|
+
if (type === 'function') {
|
|
54
|
+
el = el()
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (type === 'string') {
|
|
58
|
+
try {
|
|
59
|
+
el = document.querySelector(el)
|
|
60
|
+
}
|
|
61
|
+
catch (err) {}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (el !== Object(el)) {
|
|
65
|
+
return null
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return el._isVue === true && el.$el !== void 0
|
|
69
|
+
? el.$el
|
|
70
|
+
: el
|
|
71
|
+
}
|
|
72
|
+
|
|
49
73
|
// internal
|
|
50
74
|
export function childHasFocus (el, focusedEl) {
|
|
51
75
|
if (el === void 0 || el.contains(focusedEl) === true) {
|
|
@@ -62,15 +86,10 @@ export function childHasFocus (el, focusedEl) {
|
|
|
62
86
|
}
|
|
63
87
|
|
|
64
88
|
// internal
|
|
65
|
-
export function getBodyFullscreenElement (
|
|
66
|
-
return
|
|
67
|
-
?
|
|
68
|
-
|
|
69
|
-
activeEl === document.documentElement || activeEl === null
|
|
70
|
-
? document.body
|
|
71
|
-
: activeEl
|
|
72
|
-
)
|
|
73
|
-
: document.body
|
|
89
|
+
export function getBodyFullscreenElement (activeEl) {
|
|
90
|
+
return activeEl === document.documentElement || activeEl === null
|
|
91
|
+
? document.body
|
|
92
|
+
: activeEl
|
|
74
93
|
}
|
|
75
94
|
|
|
76
95
|
export default {
|
package/src/utils/extend.js
CHANGED
|
@@ -25,7 +25,7 @@ function isPlainObject (obj) {
|
|
|
25
25
|
let key
|
|
26
26
|
for (key in obj) {}
|
|
27
27
|
|
|
28
|
-
return key ===
|
|
28
|
+
return key === void 0 || hasOwn.call(obj, key)
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
export default function extend () {
|
|
@@ -72,7 +72,7 @@ export default function extend () {
|
|
|
72
72
|
|
|
73
73
|
target[name] = extend(deep, clone, copy)
|
|
74
74
|
}
|
|
75
|
-
else if (copy !==
|
|
75
|
+
else if (copy !== void 0) {
|
|
76
76
|
target[name] = copy
|
|
77
77
|
}
|
|
78
78
|
}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
let queue = []
|
|
2
|
-
|
|
2
|
+
let waitFlags = []
|
|
3
|
+
|
|
4
|
+
function clearFlag (flag) {
|
|
5
|
+
waitFlags = waitFlags.filter(entry => entry !== flag)
|
|
6
|
+
}
|
|
3
7
|
|
|
4
8
|
export function addFocusWaitFlag (flag) {
|
|
9
|
+
clearFlag(flag)
|
|
5
10
|
waitFlags.push(flag)
|
|
6
11
|
}
|
|
7
12
|
|
|
8
13
|
export function removeFocusWaitFlag (flag) {
|
|
9
|
-
|
|
10
|
-
if (index !== -1) {
|
|
11
|
-
waitFlags.splice(index, 1)
|
|
12
|
-
}
|
|
14
|
+
clearFlag(flag)
|
|
13
15
|
|
|
14
16
|
if (waitFlags.length === 0 && queue.length > 0) {
|
|
15
17
|
// only call last focus handler (can't focus multiple things at once)
|
|
@@ -24,13 +26,9 @@ export function addFocusFn (fn) {
|
|
|
24
26
|
}
|
|
25
27
|
else {
|
|
26
28
|
queue.push(fn)
|
|
27
|
-
return fn
|
|
28
29
|
}
|
|
29
30
|
}
|
|
30
31
|
|
|
31
32
|
export function removeFocusFn (fn) {
|
|
32
|
-
|
|
33
|
-
if (index !== -1) {
|
|
34
|
-
queue.splice(index, 1)
|
|
35
|
-
}
|
|
33
|
+
queue = queue.filter(entry => entry !== fn)
|
|
36
34
|
}
|
|
@@ -24,6 +24,23 @@ export function merge (target, source) {
|
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
let appRoot
|
|
28
|
+
|
|
29
|
+
function getDialogParent (parent, root) {
|
|
30
|
+
if (parent !== void 0) { return parent }
|
|
31
|
+
if (root !== void 0) { return root }
|
|
32
|
+
|
|
33
|
+
if (appRoot === void 0) {
|
|
34
|
+
const elRoot = document.getElementById('q-app')
|
|
35
|
+
|
|
36
|
+
if (elRoot && elRoot.__vue__) {
|
|
37
|
+
appRoot = elRoot.__vue__.$root
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return appRoot
|
|
42
|
+
}
|
|
43
|
+
|
|
27
44
|
export default function (DefaultComponent) {
|
|
28
45
|
return ({ className, class: klass, style, component, root, parent, ...props }) => {
|
|
29
46
|
if (isSSR === true) { return ssrAPI }
|
|
@@ -113,7 +130,7 @@ export default function (DefaultComponent) {
|
|
|
113
130
|
name: 'QGlobalDialog',
|
|
114
131
|
|
|
115
132
|
el: node,
|
|
116
|
-
parent: parent
|
|
133
|
+
parent: getDialogParent(parent, root),
|
|
117
134
|
|
|
118
135
|
render (h) {
|
|
119
136
|
return h(DialogComponent, {
|
package/src/utils/is.js
CHANGED
|
@@ -99,10 +99,10 @@ export function isDeepEqual (a, b) {
|
|
|
99
99
|
return a.toString() === b.toString()
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
-
const keys = Object.keys(a)
|
|
102
|
+
const keys = Object.keys(a).filter(key => a[key] !== void 0)
|
|
103
103
|
length = keys.length
|
|
104
104
|
|
|
105
|
-
if (length !== Object.keys(b).length) {
|
|
105
|
+
if (length !== Object.keys(b).filter(key => b[key] !== void 0).length) {
|
|
106
106
|
return false
|
|
107
107
|
}
|
|
108
108
|
|