@maple-design/ui-vue 1.1.0 → 1.1.1
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/es/_components/field-presentation/EditorPanel.vue.mjs +3 -3
- package/es/_components/field-presentation/editor-pending.mjs +4 -0
- package/es/_components/field-presentation/form-bridge.mjs +1 -1
- package/es/_components/field-presentation/with-field-presentation.mjs +51 -8
- package/es/_components/picker-field/PickerField.vue.mjs +3 -13
- package/es/_components/picker-field/TemporalCurrent.vue.mjs +2 -3
- package/es/_components/picker-field/range-labels.mjs +18 -0
- package/es/_components/selected-options/style/index.css +33 -15
- package/es/_components/selection-field/use-selection-session.mjs +1 -0
- package/es/_components/virtual-list-v2/VirtualList2.vue.mjs +26 -4
- package/es/action-sheet/ActionSheet2.vue.mjs +2 -3
- package/es/auto-complete/auto-complete.mjs +2 -2
- package/es/auto-complete/presentation.mjs +1 -0
- package/es/auto-complete/props.mjs +2 -0
- package/es/auto-complete/style/index.css +7 -2
- package/es/back-top/style/index.css +1 -1
- package/es/breadcrumb/style/index.css +1 -1
- package/es/button/base.mjs +7 -0
- package/es/button/index.mjs +9 -9
- package/es/button/style/index.css +1 -1
- package/es/card/Card.vue.mjs +55 -13
- package/es/carousel/style/index.css +1 -1
- package/es/carousel/use-carousel-locale.mjs +10 -3
- package/es/cascader/CascaderMenu.vue.mjs +2 -2
- package/es/cascader/cascader-option.mjs +15 -6
- package/es/cascader/field-adapter.mjs +1 -0
- package/es/cascader/props.mjs +2 -0
- package/es/cascader/style/index.css +36 -9
- package/es/cascader/style/index.mjs +1 -0
- package/es/cascader/use-cascader-focus.mjs +9 -6
- package/es/checkbox/CheckboxGroup.vue.mjs +2 -2
- package/es/checkbox/base.mjs +7 -0
- package/es/checkbox/index.mjs +1 -1
- package/es/checkbox/presentation.mjs +2 -2
- package/es/checkbox/style/index.css +1 -1
- package/es/countdown/use-countdown.mjs +9 -2
- package/es/date/DatePanelActions.vue.mjs +4 -4
- package/es/date/DateRangeQuickPanel.vue.mjs +2 -2
- package/es/date/DateShortcuts.vue.mjs +2 -2
- package/es/date/field-adapter.mjs +2 -3
- package/es/date/picker-panels/DayPickerPanel2.vue.mjs +4 -5
- package/es/date/picker-panels/MonthPickerPanel2.vue.mjs +5 -6
- package/es/date/picker-panels/PanelHeader2.vue.mjs +6 -7
- package/es/date/picker-panels/YearPickerPanel2.vue.mjs +2 -2
- package/es/date/presentation/CalendarContent2.vue.mjs +13 -14
- package/es/date/presentation/CalendarViewport.vue.mjs +2 -3
- package/es/date/presentation/use-date-locale.mjs +2 -3
- package/es/date/presentation/use-field-locale.mjs +5 -6
- package/es/date/presentation/use-panel-actions-locale.mjs +4 -5
- package/es/date-range/presentation/RangeContent2.vue.mjs +4 -5
- package/es/dialog/Dialog.vue.mjs +3 -3
- package/es/ellipsis/style/index.css +1 -1
- package/es/fab/Fab.mjs +4 -5
- package/es/form/FormItemLabel.vue.mjs +4 -3
- package/es/form/focus-explicit-label.mjs +52 -0
- package/es/input/base.mjs +7 -0
- package/es/input/index.mjs +19 -19
- package/es/locale/date-text.mjs +38 -0
- package/es/locale/misc-text.mjs +23 -0
- package/es/locale/temporal-text.mjs +22 -0
- package/es/locale/zh-CN.mjs +235 -131
- package/es/maple-vue.mjs +1 -1
- package/es/maple.css +273 -207
- package/es/maple.esm.js +19385 -18978
- package/es/nav-menu/style/index.css +1 -1
- package/es/notice-bar/NoticeBar2.vue.mjs +2 -3
- package/es/number-keyboard/NumberKeyboard2.vue.mjs +5 -6
- package/es/pagination/PageInput.vue.mjs +2 -2
- package/es/pagination/style/index.css +2 -2
- package/es/people-select/PeopleSelect.mjs +35 -54
- package/es/people-select/Person.vue.mjs +3 -3
- package/es/people-select/emits.mjs +1 -1
- package/es/people-select/people-select.mjs +6 -8
- package/es/people-select/presentation.mjs +3 -1
- package/es/people-select/props.mjs +9 -3
- package/es/people-select/selection.mjs +64 -0
- package/es/people-select/style/index.css +6 -0
- package/es/picker/Picker.vue.mjs +2 -2
- package/es/picker/Picker2.vue.mjs +4 -5
- package/es/picker/base.mjs +7 -0
- package/es/picker/index.mjs +5 -5
- package/es/progress/style/index.css +2 -2
- package/es/radio/style/index.css +1 -1
- package/es/rate/style/index.css +2 -2
- package/es/ripple/index.mjs +78 -0
- package/es/search/HistoryContent.vue.mjs +4 -4
- package/es/search/Search.vue.mjs +4 -4
- package/es/search/props.mjs +1 -2
- package/es/select/props.mjs +2 -0
- package/es/select/select.mjs +14 -4
- package/es/select/style/index.css +22 -12
- package/es/select/use-select-controller.mjs +22 -2
- package/es/slider/Slider.vue.mjs +43 -21
- package/es/slider/SliderInput.vue.mjs +14 -2
- package/es/slider/style/index.css +2 -2
- package/es/steps/style/index.css +10 -10
- package/es/switch/Switch.vue.mjs +12 -1
- package/es/switch/style/index.css +1 -1
- package/es/tab-bar/TabBar.vue.mjs +2 -2
- package/es/tab-bar/style/index.css +2 -2
- package/es/tabs/style/index.css +1 -1
- package/es/tabs/use-tabs-configuration.mjs +2 -3
- package/es/themes/alps-light/index.mjs +10 -11
- package/es/themes/create-brand-dark.mjs +18 -0
- package/es/themes/dark/breadcrumb-item.mjs +1 -1
- package/es/themes/dark/cascader.mjs +1 -1
- package/es/themes/dark/index.mjs +2 -2
- package/es/themes/firefly-light/index.mjs +12 -13
- package/es/themes/index.mjs +2 -2
- package/es/themes/maple-light/index.mjs +2 -2
- package/es/time/presentation/TimeFieldPanel.vue.mjs +2 -2
- package/es/time/presentation/TimePanelContent2.vue.mjs +8 -9
- package/es/time/presentation/use-field-locale.mjs +5 -6
- package/es/time/props.mjs +1 -1
- package/es/time-range/presentation/TimePanelContent2.vue.mjs +6 -7
- package/es/time-range/props.mjs +1 -1
- package/es/trigger/popup-move-focus.mjs +6 -6
- package/es/trigger/position.mjs +49 -3
- package/es/trigger/positioner.mjs +34 -5
- package/es/trigger/trigger.mjs +1 -1
- package/es/upload/Upload.vue.mjs +18 -2
- package/es/upload/composables/use-upload-queue.mjs +10 -1
- package/es/upload/composables/use-uploader.mjs +45 -11
- package/es/upload/use-upload-locale.mjs +16 -12
- package/es/utils/modal-focus.mjs +9 -2
- package/es/utils/modal-surface.mjs +9 -3
- package/highlight/web-types.en-US.json +698 -176
- package/highlight/web-types.zh-CN.json +699 -177
- package/lib/_components/field-presentation/EditorPanel.vue.js +3 -3
- package/lib/_components/field-presentation/editor-pending.js +4 -0
- package/lib/_components/field-presentation/with-field-presentation.js +50 -7
- package/lib/_components/picker-field/PickerField.vue.js +3 -13
- package/lib/_components/picker-field/TemporalCurrent.vue.js +2 -3
- package/lib/_components/picker-field/range-labels.js +18 -0
- package/lib/_components/selected-options/style/index.css +33 -15
- package/lib/_components/selection-field/use-selection-session.js +1 -0
- package/lib/_components/virtual-list-v2/VirtualList2.vue.js +25 -3
- package/lib/action-sheet/ActionSheet2.vue.js +2 -3
- package/lib/auto-complete/auto-complete.js +2 -2
- package/lib/auto-complete/presentation.js +1 -0
- package/lib/auto-complete/props.js +2 -0
- package/lib/auto-complete/style/index.css +7 -2
- package/lib/back-top/style/index.css +1 -1
- package/lib/breadcrumb/style/index.css +1 -1
- package/lib/button/base.js +7 -0
- package/lib/button/index.js +4 -4
- package/lib/button/style/index.css +1 -1
- package/lib/card/Card.vue.js +55 -13
- package/lib/carousel/style/index.css +1 -1
- package/lib/carousel/use-carousel-locale.js +9 -2
- package/lib/cascader/CascaderMenu.vue.js +2 -2
- package/lib/cascader/cascader-option.js +15 -6
- package/lib/cascader/field-adapter.js +1 -0
- package/lib/cascader/props.js +2 -0
- package/lib/cascader/style/index.css +36 -9
- package/lib/cascader/style/index.js +1 -0
- package/lib/cascader/use-cascader-focus.js +9 -6
- package/lib/checkbox/base.js +7 -0
- package/lib/checkbox/index.js +4 -4
- package/lib/checkbox/presentation.js +2 -2
- package/lib/checkbox/style/index.css +1 -1
- package/lib/countdown/use-countdown.js +9 -2
- package/lib/date/DatePanelActions.vue.js +4 -4
- package/lib/date/DateRangeQuickPanel.vue.js +2 -2
- package/lib/date/DateShortcuts.vue.js +2 -2
- package/lib/date/field-adapter.js +2 -3
- package/lib/date/picker-panels/DayPickerPanel2.vue.js +6 -7
- package/lib/date/picker-panels/MonthPickerPanel2.vue.js +7 -8
- package/lib/date/picker-panels/PanelHeader2.vue.js +6 -7
- package/lib/date/picker-panels/YearPickerPanel2.vue.js +2 -2
- package/lib/date/presentation/CalendarContent2.vue.js +13 -14
- package/lib/date/presentation/CalendarViewport.vue.js +2 -3
- package/lib/date/presentation/use-date-locale.js +2 -3
- package/lib/date/presentation/use-field-locale.js +5 -6
- package/lib/date/presentation/use-panel-actions-locale.js +4 -5
- package/lib/date-range/presentation/RangeContent2.vue.js +4 -5
- package/lib/dialog/Dialog.vue.js +3 -3
- package/lib/ellipsis/style/index.css +1 -1
- package/lib/fab/Fab.js +4 -5
- package/lib/form/FormItemLabel.vue.js +3 -2
- package/lib/form/focus-explicit-label.js +52 -0
- package/lib/input/base.js +7 -0
- package/lib/input/index.js +5 -5
- package/lib/locale/date-text.js +38 -0
- package/lib/locale/misc-text.js +23 -0
- package/lib/locale/temporal-text.js +22 -0
- package/lib/locale/zh-CN.js +234 -130
- package/lib/maple-vue.js +1 -1
- package/lib/maple.cjs.js +3637 -2963
- package/lib/maple.css +273 -207
- package/lib/nav-menu/style/index.css +1 -1
- package/lib/notice-bar/NoticeBar2.vue.js +2 -3
- package/lib/number-keyboard/NumberKeyboard2.vue.js +5 -6
- package/lib/pagination/PageInput.vue.js +2 -2
- package/lib/pagination/style/index.css +2 -2
- package/lib/people-select/PeopleSelect.js +34 -53
- package/lib/people-select/Person.vue.js +3 -3
- package/lib/people-select/emits.js +1 -1
- package/lib/people-select/people-select.js +6 -8
- package/lib/people-select/presentation.js +3 -1
- package/lib/people-select/props.js +9 -3
- package/lib/people-select/selection.js +64 -0
- package/lib/people-select/style/index.css +6 -0
- package/lib/picker/Picker.vue.js +2 -2
- package/lib/picker/Picker2.vue.js +4 -5
- package/lib/picker/base.js +7 -0
- package/lib/picker/index.js +5 -5
- package/lib/progress/style/index.css +2 -2
- package/lib/radio/style/index.css +1 -1
- package/lib/rate/style/index.css +2 -2
- package/lib/ripple/index.js +78 -0
- package/lib/search/HistoryContent.vue.js +4 -4
- package/lib/search/Search.vue.js +4 -4
- package/lib/search/props.js +1 -2
- package/lib/select/props.js +2 -0
- package/lib/select/select.js +14 -4
- package/lib/select/style/index.css +22 -12
- package/lib/select/use-select-controller.js +22 -2
- package/lib/slider/Slider.vue.js +42 -20
- package/lib/slider/SliderInput.vue.js +14 -2
- package/lib/slider/style/index.css +2 -2
- package/lib/steps/style/index.css +10 -10
- package/lib/switch/Switch.vue.js +11 -0
- package/lib/switch/style/index.css +1 -1
- package/lib/tab-bar/TabBar.vue.js +2 -2
- package/lib/tab-bar/style/index.css +2 -2
- package/lib/tabs/style/index.css +1 -1
- package/lib/tabs/use-tabs-configuration.js +2 -3
- package/lib/themes/alps-light/index.js +10 -11
- package/lib/themes/create-brand-dark.js +18 -0
- package/lib/themes/dark/breadcrumb-item.js +1 -1
- package/lib/themes/dark/cascader.js +1 -1
- package/lib/themes/dark/index.js +2 -2
- package/lib/themes/firefly-light/index.js +12 -13
- package/lib/themes/index.js +2 -2
- package/lib/themes/maple-light/index.js +2 -2
- package/lib/time/presentation/TimeFieldPanel.vue.js +2 -2
- package/lib/time/presentation/TimePanelContent2.vue.js +8 -9
- package/lib/time/presentation/use-field-locale.js +5 -6
- package/lib/time/props.js +1 -1
- package/lib/time-range/presentation/TimePanelContent2.vue.js +6 -7
- package/lib/time-range/props.js +1 -1
- package/lib/trigger/popup-move-focus.js +6 -6
- package/lib/trigger/position.js +48 -2
- package/lib/trigger/positioner.js +33 -4
- package/lib/trigger/trigger.js +1 -1
- package/lib/upload/Upload.vue.js +17 -1
- package/lib/upload/composables/use-upload-queue.js +10 -1
- package/lib/upload/composables/use-uploader.js +45 -11
- package/lib/upload/use-upload-locale.js +15 -11
- package/lib/utils/modal-focus.js +9 -2
- package/lib/utils/modal-surface.js +9 -3
- package/package.json +6 -6
- package/types/styleVars.d.ts +3 -0
- package/types-generated/_components/field-presentation/editor-pending.d.ts +3 -0
- package/types-generated/_components/field-presentation/with-field-presentation.d.ts +2 -0
- package/types-generated/_components/picker-field/range-labels.d.ts +1 -0
- package/types-generated/action-sheet/ActionSheet.vue.d.ts +2 -1
- package/types-generated/action-sheet/index.d.ts +1 -1
- package/types-generated/auto-complete/auto-complete.d.ts +13 -4
- package/types-generated/auto-complete/index.d.ts +30 -0
- package/types-generated/auto-complete/presentation.d.ts +9 -0
- package/types-generated/auto-complete/props.d.ts +5 -1
- package/types-generated/breadcrumb/index.d.ts +72 -2
- package/types-generated/button/base.d.ts +266 -0
- package/types-generated/button/index.d.ts +3 -1
- package/types-generated/cascader/Cascader.vue.d.ts +10 -1
- package/types-generated/cascader/CascaderPanel.vue.d.ts +1 -1
- package/types-generated/cascader/index.d.ts +39 -9
- package/types-generated/cascader/presentation.d.ts +18 -3
- package/types-generated/cascader/props.d.ts +5 -0
- package/types-generated/cascader/style/index.d.ts +1 -0
- package/types-generated/cascader/use-cascader-controller.d.ts +4 -0
- package/types-generated/checkbox/base.d.ts +361 -0
- package/types-generated/checkbox/index.d.ts +362 -3
- package/types-generated/date/picker-panels/DayPickerPanel.vue.d.ts +6 -248
- package/types-generated/date/picker-panels/MonthPickerPanel.vue.d.ts +8 -249
- package/types-generated/date/picker-panels/PanelHeader.vue.d.ts +3 -124
- package/types-generated/date/picker-panels/YearPickerPanel.vue.d.ts +6 -248
- package/types-generated/date/presentation/CalendarContent.vue.d.ts +1169 -966
- package/types-generated/date-range/presentation/RangeContent.vue.d.ts +2561 -1430
- package/types-generated/form/focus-explicit-label.d.ts +2 -0
- package/types-generated/index.d.ts +1 -1
- package/types-generated/input/base.d.ts +481 -0
- package/types-generated/input/index.d.ts +2 -0
- package/types-generated/locale/date-text.d.ts +2 -0
- package/types-generated/locale/misc-text.d.ts +2 -0
- package/types-generated/locale/temporal-text.d.ts +2 -0
- package/types-generated/maple-vue.d.ts +1 -1
- package/types-generated/menu/index.d.ts +1022 -2
- package/types-generated/people-select/PeopleSelect.d.ts +38 -16
- package/types-generated/people-select/emits.d.ts +3 -2
- package/types-generated/people-select/index.d.ts +135 -63
- package/types-generated/people-select/people-select.d.ts +47 -16
- package/types-generated/people-select/presentation.d.ts +46 -16
- package/types-generated/people-select/props.d.ts +18 -7
- package/types-generated/people-select/selection.d.ts +11 -0
- package/types-generated/people-select/types.d.ts +5 -1
- package/types-generated/picker/Picker.vue.d.ts +5 -125
- package/types-generated/picker/base.d.ts +2043 -0
- package/types-generated/picker/index.d.ts +1134 -206
- package/types-generated/radio/index.d.ts +365 -2
- package/types-generated/search/Search.vue.d.ts +2 -2
- package/types-generated/search/props.d.ts +1 -1
- package/types-generated/select/index.d.ts +30 -0
- package/types-generated/select/native-editor-owner.d.ts +1 -0
- package/types-generated/select/props.d.ts +6 -1
- package/types-generated/select/select.d.ts +9 -0
- package/types-generated/select/use-select-controller.d.ts +5 -0
- package/types-generated/slider/SliderInput.vue.d.ts +4 -0
- package/types-generated/themes/dark/cascader.d.ts +1 -1
- package/types-generated/themes/index.d.ts +2 -2
- package/types-generated/time/presentation/TimePanelContent.vue.d.ts +1117 -309
- package/types-generated/time/props.d.ts +3 -2
- package/types-generated/time-range/picker-props.d.ts +1 -1
- package/types-generated/time-range/presentation/TimePanelContent.vue.d.ts +1125 -317
- package/types-generated/time-range/props.d.ts +6 -5
- package/types-generated/trigger/position.d.ts +1 -0
- package/types-generated/upload/Upload.vue.d.ts +11 -11
- package/types-generated/upload/composables/use-upload-queue.d.ts +1 -0
- package/types-generated/upload/composables/use-uploader.d.ts +2 -0
- package/types-generated/utils/modal-focus.d.ts +1 -0
- package/umd/_components/selected-options/style/index.css +33 -15
- package/umd/auto-complete/style/index.css +7 -2
- package/umd/back-top/style/index.css +1 -1
- package/umd/breadcrumb/style/index.css +1 -1
- package/umd/button/style/index.css +1 -1
- package/umd/carousel/style/index.css +1 -1
- package/umd/cascader/style/index.css +36 -9
- package/umd/checkbox/style/index.css +1 -1
- package/umd/ellipsis/style/index.css +1 -1
- package/umd/maple.css +273 -207
- package/umd/maple.js +3 -3
- package/umd/nav-menu/style/index.css +1 -1
- package/umd/pagination/style/index.css +2 -2
- package/umd/people-select/style/index.css +6 -0
- package/umd/progress/style/index.css +2 -2
- package/umd/radio/style/index.css +1 -1
- package/umd/rate/style/index.css +2 -2
- package/umd/select/style/index.css +22 -12
- package/umd/slider/style/index.css +2 -2
- package/umd/steps/style/index.css +10 -10
- package/umd/switch/style/index.css +1 -1
- package/umd/tab-bar/style/index.css +2 -2
- package/umd/tabs/style/index.css +1 -1
package/es/card/Card.vue.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineComponent, computed, ref, shallowRef, watch, nextTick, onBeforeUnmount, onDeactivated, onActivated, withDirectives, openBlock, createElementBlock, normalizeStyle, unref, normalizeClass, createElementVNode, renderSlot, createCommentVNode, toDisplayString, createBlock, createVNode, withModifiers, withCtx } from "vue";
|
|
2
2
|
import { IconClose } from "@maple-design/icons-vue";
|
|
3
3
|
import { getRect, doubleRaf } from "@maple-design/shared-vue";
|
|
4
|
-
import
|
|
4
|
+
import MpButton from "../button/base.mjs";
|
|
5
5
|
import { useLock } from "../context/lock.mjs";
|
|
6
6
|
import { useZIndex } from "../context/zIndex.mjs";
|
|
7
7
|
import "../divider/index.mjs";
|
|
@@ -64,29 +64,29 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
64
64
|
let stopInactiveFocusTracking;
|
|
65
65
|
function trackInactiveFocus() {
|
|
66
66
|
stopInactiveFocusTracking?.();
|
|
67
|
-
const
|
|
68
|
-
if (!
|
|
67
|
+
const document2 = card.value?.ownerDocument;
|
|
68
|
+
if (!document2) {
|
|
69
69
|
return;
|
|
70
70
|
}
|
|
71
71
|
const remember = (target) => {
|
|
72
72
|
const element = target;
|
|
73
|
-
if (element && typeof element.focus === "function" && !card.value?.contains(element) && element !==
|
|
73
|
+
if (element && typeof element.focus === "function" && !card.value?.contains(element) && element !== document2.body && element !== document2.documentElement) {
|
|
74
74
|
returnFocus = element;
|
|
75
75
|
}
|
|
76
76
|
};
|
|
77
|
-
remember(
|
|
77
|
+
remember(document2.activeElement);
|
|
78
78
|
const onFocus = (event) => remember(event.target);
|
|
79
|
-
|
|
80
|
-
stopInactiveFocusTracking = () =>
|
|
79
|
+
document2.addEventListener("focusin", onFocus, true);
|
|
80
|
+
stopInactiveFocusTracking = () => document2.removeEventListener("focusin", onFocus, true);
|
|
81
81
|
}
|
|
82
82
|
function updateReturnFocus(open) {
|
|
83
|
-
const
|
|
84
|
-
if (!
|
|
83
|
+
const document2 = card.value?.ownerDocument;
|
|
84
|
+
if (!document2) {
|
|
85
85
|
return;
|
|
86
86
|
}
|
|
87
|
-
const focused =
|
|
87
|
+
const focused = document2.activeElement;
|
|
88
88
|
if (open) {
|
|
89
|
-
returnFocus = focused && focused !==
|
|
89
|
+
returnFocus = focused && focused !== document2.body && focused !== document2.documentElement ? focused : null;
|
|
90
90
|
return;
|
|
91
91
|
}
|
|
92
92
|
const target = returnFocus;
|
|
@@ -100,6 +100,37 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
100
100
|
const { onStackTop } = usePopupLayer(wantsFloating, zIndex, () => card.value?.ownerDocument, true);
|
|
101
101
|
const available = () => active && !disposed;
|
|
102
102
|
let openingWaiting = false;
|
|
103
|
+
let cancelOpeningFrames;
|
|
104
|
+
function waitForOwnerFrames(view) {
|
|
105
|
+
cancelOpeningFrames?.();
|
|
106
|
+
return new Promise((resolve) => {
|
|
107
|
+
let handle;
|
|
108
|
+
let settled = false;
|
|
109
|
+
const finish = (completed) => {
|
|
110
|
+
if (settled) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
settled = true;
|
|
114
|
+
if (cancelOpeningFrames === cancel) {
|
|
115
|
+
cancelOpeningFrames = void 0;
|
|
116
|
+
}
|
|
117
|
+
resolve(completed);
|
|
118
|
+
};
|
|
119
|
+
const cancel = () => {
|
|
120
|
+
if (handle !== void 0) {
|
|
121
|
+
view.cancelAnimationFrame?.(handle);
|
|
122
|
+
}
|
|
123
|
+
finish(false);
|
|
124
|
+
};
|
|
125
|
+
cancelOpeningFrames = cancel;
|
|
126
|
+
handle = view.requestAnimationFrame(() => {
|
|
127
|
+
if (settled) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
handle = view.requestAnimationFrame(() => finish(true));
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
}
|
|
103
134
|
let reducedMotion = false;
|
|
104
135
|
let stopMotionTracking;
|
|
105
136
|
function trackMotion(element) {
|
|
@@ -150,6 +181,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
150
181
|
wantsFloating,
|
|
151
182
|
(value) => {
|
|
152
183
|
const token = ++generation;
|
|
184
|
+
cancelOpeningFrames?.();
|
|
153
185
|
if (!active) {
|
|
154
186
|
if (!disposed && value) {
|
|
155
187
|
trackInactiveFocus();
|
|
@@ -181,6 +213,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
181
213
|
return;
|
|
182
214
|
}
|
|
183
215
|
const token = ++generation;
|
|
216
|
+
cancelOpeningFrames?.();
|
|
184
217
|
const element = card.value;
|
|
185
218
|
let consumed = false;
|
|
186
219
|
clearTimeout(floater.value ?? void 0);
|
|
@@ -208,7 +241,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
208
241
|
dropdownFloaterLeft = floaterLeft.value;
|
|
209
242
|
showFloatingButtons.value = true;
|
|
210
243
|
if (!reducedMotion) {
|
|
211
|
-
|
|
244
|
+
const view = element.ownerDocument.defaultView;
|
|
245
|
+
if (view && typeof document !== "undefined" && element.ownerDocument !== document && typeof view.requestAnimationFrame === "function") {
|
|
246
|
+
if (!await waitForOwnerFrames(view)) {
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
} else {
|
|
250
|
+
await doubleRaf();
|
|
251
|
+
}
|
|
212
252
|
}
|
|
213
253
|
if (!current(token, element) || !wantsFloating()) {
|
|
214
254
|
return;
|
|
@@ -231,6 +271,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
231
271
|
return;
|
|
232
272
|
}
|
|
233
273
|
const token = ++generation;
|
|
274
|
+
cancelOpeningFrames?.();
|
|
234
275
|
const element = card.value;
|
|
235
276
|
let consumed = false;
|
|
236
277
|
clearTimeout(dropper);
|
|
@@ -328,6 +369,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
328
369
|
}
|
|
329
370
|
});
|
|
330
371
|
function cleanup() {
|
|
372
|
+
cancelOpeningFrames?.();
|
|
331
373
|
openingWaiting = false;
|
|
332
374
|
active = false;
|
|
333
375
|
generation++;
|
|
@@ -473,7 +515,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
473
515
|
})
|
|
474
516
|
}, [
|
|
475
517
|
renderSlot(_ctx.$slots, "close-button", {}, () => [
|
|
476
|
-
createVNode(unref(
|
|
518
|
+
createVNode(unref(MpButton), {
|
|
477
519
|
"data-card-cover": "",
|
|
478
520
|
class: normalizeClass(unref(classes)(unref(n)("close-button"), unref(n)("$-elevation--6"))),
|
|
479
521
|
"aria-label": props.closeButtonAriaLabel ?? unref(closeLabel),
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
--mp-carousel-card-opacity: 0.6;
|
|
29
29
|
--mp-carousel-focus-width: 2px;
|
|
30
30
|
--mp-carousel-focus-offset: 2px;
|
|
31
|
-
--mp-carousel-focus-color: var(--mp-sys-color-
|
|
31
|
+
--mp-carousel-focus-color: var(--mp-sys-color-action-primary);
|
|
32
32
|
}
|
|
33
33
|
.mp-carousel {
|
|
34
34
|
position: relative;
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
import { computed } from "vue";
|
|
2
|
-
import "../locale/index.mjs";
|
|
3
2
|
import { injectLocaleProvider } from "../locale-provider/provide.mjs";
|
|
4
|
-
import { t } from "../locale/state.mjs";
|
|
3
|
+
import { t, defaultLocaleReady } from "../locale/state.mjs";
|
|
4
|
+
import { defaultCarouselGoto, defaultCarouselSlide, defaultCarouselNext, defaultCarouselPrevious, defaultCarouselLabel } from "../locale/zh-CN.mjs";
|
|
5
5
|
function useCarouselLocale() {
|
|
6
6
|
const { t: translate } = injectLocaleProvider();
|
|
7
|
-
const
|
|
7
|
+
const defaults = {
|
|
8
|
+
"carousel.label": defaultCarouselLabel,
|
|
9
|
+
"carousel.previous": defaultCarouselPrevious,
|
|
10
|
+
"carousel.next": defaultCarouselNext,
|
|
11
|
+
"carousel.slide": defaultCarouselSlide,
|
|
12
|
+
"carousel.goto": defaultCarouselGoto
|
|
13
|
+
};
|
|
14
|
+
const message = (key) => String(translate ? translate(key) : t(key) ?? (!defaultLocaleReady.value ? defaults[key] : void 0));
|
|
8
15
|
return computed(() => ({
|
|
9
16
|
label: message("carousel.label"),
|
|
10
17
|
previous: message("carousel.previous"),
|
|
@@ -4,7 +4,7 @@ import { useFieldTexts } from "../_components/field-presentation/texts.mjs";
|
|
|
4
4
|
import { selectionEditorSurface } from "../_components/selected-options/context.mjs";
|
|
5
5
|
import _sfc_main$1 from "../_components/selected-options/SelectedOptions.vue.mjs";
|
|
6
6
|
import { provideFormErrorDescriptionBoundary } from "../form/error-description.mjs";
|
|
7
|
-
import
|
|
7
|
+
import MpInput from "../input/base.mjs";
|
|
8
8
|
import { createNamespace } from "../utils/components.mjs";
|
|
9
9
|
import BaseCascaderPanel from "./base-cascader-panel.mjs";
|
|
10
10
|
import CascaderSearchPanel from "./cascader-search-panel.mjs";
|
|
@@ -36,7 +36,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
36
36
|
onClear: _ctx.controller.clearSelection
|
|
37
37
|
}, {
|
|
38
38
|
default: withCtx(() => [
|
|
39
|
-
_ctx.searchable ? (openBlock(), createBlock(unref(
|
|
39
|
+
_ctx.searchable ? (openBlock(), createBlock(unref(MpInput), {
|
|
40
40
|
key: 0,
|
|
41
41
|
"model-value": _ctx.controller.computedInputValue,
|
|
42
42
|
"edit-mode": "direct",
|
|
@@ -2,10 +2,12 @@ import { defineComponent, inject, useId, ref, computed, onDeactivated, onBeforeU
|
|
|
2
2
|
import { IconCheck, IconLoading, IconRight } from "@maple-design/icons-vue";
|
|
3
3
|
import { isolateEditorForm } from "../_components/field-presentation/form-bridge.mjs";
|
|
4
4
|
import { isFunction } from "../_utils/is.mjs";
|
|
5
|
-
import
|
|
5
|
+
import _Checkbox from "../checkbox/base.mjs";
|
|
6
6
|
import { getPrefixCls, createNamespace } from "../utils/components.mjs";
|
|
7
7
|
import { cascaderInjectionKey } from "./context.mjs";
|
|
8
8
|
import { getCheckedStatus, getOptionLabel } from "./utils.mjs";
|
|
9
|
+
const INTERACTIVE_ROLES = /* @__PURE__ */ new Set(["button", "link", "checkbox", "radio", "switch", "textbox", "combobox", "menuitem", "menuitemcheckbox", "menuitemradio", "option", "treeitem", "gridcell", "slider", "spinbutton", "tab"]);
|
|
10
|
+
const CONCRETE_ROLES = new Set("alert alertdialog application article banner blockquote button caption cell checkbox code columnheader combobox comment complementary contentinfo definition deletion directory document emphasis feed figure form generic grid gridcell group heading image img insertion link list listbox listitem log main mark marquee math menu menubar menuitem menuitemcheckbox menuitemradio meter navigation none note option paragraph presentation progressbar radio radiogroup region row rowgroup rowheader scrollbar search searchbox sectionfooter sectionheader separator slider spinbutton status strong suggestion subscript superscript switch tab table tablist tabpanel term textbox time timer toolbar tooltip tree treegrid treeitem doc-abstract doc-acknowledgments doc-afterword doc-appendix doc-backlink doc-biblioentry doc-bibliography doc-biblioref doc-chapter doc-colophon doc-conclusion doc-cover doc-credit doc-credits doc-dedication doc-endnote doc-endnotes doc-epigraph doc-epilogue doc-errata doc-example doc-footnote doc-foreword doc-glossary doc-glossref doc-index doc-introduction doc-noteref doc-notice doc-pagebreak doc-pagefooter doc-pageheader doc-pagelist doc-part doc-preface doc-prologue doc-pullquote doc-qna doc-subtitle doc-tip doc-toc graphics-document graphics-object graphics-symbol".split(" "));
|
|
9
11
|
function ownsOptionClick(event) {
|
|
10
12
|
if (event.defaultPrevented) {
|
|
11
13
|
return false;
|
|
@@ -29,7 +31,14 @@ function ownsOptionClick(event) {
|
|
|
29
31
|
if (element?.nodeType !== 1 || typeof element.matches !== "function") {
|
|
30
32
|
continue;
|
|
31
33
|
}
|
|
32
|
-
|
|
34
|
+
const primaryRole = element.getAttribute("role")?.trim().split(/\s+/).find((role) => CONCRETE_ROLES.has(role));
|
|
35
|
+
if (primaryRole && INTERACTIVE_ROLES.has(primaryRole)) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
if (element.hasAttribute("tabindex") && element.tabIndex >= 0) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
if (element.matches('li[data-cascader-key], button, a[href], input, select, textarea, summary, audio[controls], video[controls], [contenteditable]:not([contenteditable="false"])')) {
|
|
33
42
|
return false;
|
|
34
43
|
}
|
|
35
44
|
if (element.matches("label") && (element.htmlFor || element.querySelector("input, button, select, textarea"))) {
|
|
@@ -110,7 +119,9 @@ const CascaderOption = /* @__PURE__ */ defineComponent({
|
|
|
110
119
|
},
|
|
111
120
|
onMouseleave: (event) => {
|
|
112
121
|
const element = event.currentTarget;
|
|
113
|
-
const
|
|
122
|
+
const nodeRoot = element.getRootNode();
|
|
123
|
+
const focusRoot = "activeElement" in nodeRoot ? nodeRoot : element.ownerDocument;
|
|
124
|
+
const focused = focusRoot.activeElement;
|
|
114
125
|
let focusedOption = focused?.closest("[data-cascader-key]");
|
|
115
126
|
const panelSelector = `.${getPrefixCls("cascader")}-panel, .${getPrefixCls("cascader")}-editor-panel`;
|
|
116
127
|
const panel = element.closest(panelSelector);
|
|
@@ -197,7 +208,7 @@ const CascaderOption = /* @__PURE__ */ defineComponent({
|
|
|
197
208
|
}, events), [props.multiple && createVNode("span", {
|
|
198
209
|
"class": `${prefixCls}-checkbox`,
|
|
199
210
|
"onClick": (event) => event.stopPropagation()
|
|
200
|
-
}, [createVNode(
|
|
211
|
+
}, [createVNode(_Checkbox, {
|
|
201
212
|
"editMode": "direct",
|
|
202
213
|
"uninjectGroupContext": true,
|
|
203
214
|
"modelValue": Boolean(checkedStatus.value.checked),
|
|
@@ -209,9 +220,7 @@ const CascaderOption = /* @__PURE__ */ defineComponent({
|
|
|
209
220
|
if (props.option.disabled || props.option.selectionDisabled) {
|
|
210
221
|
return;
|
|
211
222
|
}
|
|
212
|
-
const task = handlePathChange(new Event("change"));
|
|
213
223
|
cascaderCtx.onClickOption?.(props.option, Boolean(checked));
|
|
214
|
-
return task;
|
|
215
224
|
}
|
|
216
225
|
}, null)]), createVNode("div", {
|
|
217
226
|
"class": `${prefixCls}-label`
|
|
@@ -2,6 +2,7 @@ import { h } from "vue";
|
|
|
2
2
|
import { optionValueText } from "../_components/field-presentation/option-labels.mjs";
|
|
3
3
|
import _sfc_main from "./CascaderEditor.vue.mjs";
|
|
4
4
|
const cascaderFieldAdapter = {
|
|
5
|
+
selectionConfirmation: "update",
|
|
5
6
|
pauseSelectionWhileLoading: true,
|
|
6
7
|
methods: ["focus", "blur", "refresh"],
|
|
7
8
|
defaultPresentation: "popup",
|
package/es/cascader/props.mjs
CHANGED
|
@@ -6,6 +6,8 @@ import { emptyValueProp } from "../utils/empty-value.mjs";
|
|
|
6
6
|
import { popupContainerProp } from "../utils/popup-container.mjs";
|
|
7
7
|
const cascaderProps = {
|
|
8
8
|
...fieldLoadingProps,
|
|
9
|
+
/** 弹出编辑是否需要确认;未设置时单选即提交,多选保留确认。 */
|
|
10
|
+
needConfirm: { type: Boolean, default: void 0 },
|
|
9
11
|
openTriggerTarget: openTriggerTargetProp,
|
|
10
12
|
/** 清空动作产生的模型值;省略保留原默认值。 */
|
|
11
13
|
/** 内置本地过滤是否区分大小写;自定义过滤函数优先。 */
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
--mp-cascader-size-item-height: 36px;
|
|
12
12
|
--mp-cascader-font-item-size: var(--mp-sys-font-size-md);
|
|
13
13
|
--mp-cascader-margin-item-icon-left: var(--mp-sys-space-5);
|
|
14
|
-
--mp-cascader-item-check-color: var(--mp-sys-color-
|
|
14
|
+
--mp-cascader-item-check-color: var(--mp-sys-color-action-primary);
|
|
15
15
|
--mp-cascader-item-check-size: var(--mp-sys-font-size-md);
|
|
16
16
|
--mp-cascader-item-text-color: var(--mp-sys-color-content-primary);
|
|
17
17
|
--mp-cascader-item-icon-color: var(--mp-sys-color-content-secondary);
|
|
@@ -19,11 +19,11 @@
|
|
|
19
19
|
--mp-cascader-padding-item-right: var(--mp-sys-space-5);
|
|
20
20
|
--mp-cascader-size-item-icon: 12px;
|
|
21
21
|
--mp-cascader-item-text-color-hover: var(--mp-cascader-item-text-color);
|
|
22
|
-
--mp-cascader-item-text-color-active: var(--mp-
|
|
22
|
+
--mp-cascader-item-text-color-active: var(--mp-sys-color-action-primary);
|
|
23
23
|
--mp-cascader-item-text-color-disabled: var(--mp-sys-color-content-disabled);
|
|
24
24
|
--mp-cascader-item-text-color-disabled-active: var(--mp-sys-color-content-disabled);
|
|
25
|
-
--mp-cascader-item-bg-active:
|
|
26
|
-
--mp-cascader-item-bg-hover: var(--mp-
|
|
25
|
+
--mp-cascader-item-bg-active: transparent;
|
|
26
|
+
--mp-cascader-item-bg-hover: var(--mp-color-fill-2);
|
|
27
27
|
--mp-cascader-item-bg-disabled: transparent;
|
|
28
28
|
--mp-cascader-item-bg-disabled-active: var(--mp-color-fill-2);
|
|
29
29
|
--mp-cascader-checkbox-bg-hover: var(--mp-color-fill-3);
|
|
@@ -222,17 +222,44 @@
|
|
|
222
222
|
.mp-cascader-search-option-disabled:hover .mp-cascader-option-check {
|
|
223
223
|
color: var(--mp-cascader-item-text-color-disabled);
|
|
224
224
|
}
|
|
225
|
-
.mp-cascader-option-active
|
|
226
|
-
|
|
227
|
-
|
|
225
|
+
.mp-cascader-option-active,
|
|
226
|
+
.mp-cascader-search-option-active {
|
|
227
|
+
color: var(--mp-cascader-item-text-color-hover);
|
|
228
|
+
background-color: var(--mp-cascader-item-bg-hover);
|
|
228
229
|
transition: all var(--mp-sys-motion-duration-standard) var(--mp-sys-motion-easing-standard);
|
|
229
230
|
}
|
|
230
|
-
.mp-cascader-option-
|
|
231
|
+
.mp-cascader-option-selected,
|
|
232
|
+
.mp-cascader-search-option-selected {
|
|
231
233
|
color: var(--mp-cascader-item-text-color-active);
|
|
232
234
|
background-color: var(--mp-cascader-item-bg-active);
|
|
233
235
|
}
|
|
236
|
+
.mp-cascader-option-selected:hover,
|
|
237
|
+
.mp-cascader-search-option-selected:hover,
|
|
238
|
+
.mp-cascader-option-selected.mp-cascader-option-active,
|
|
239
|
+
.mp-cascader-search-option-selected.mp-cascader-option-active,
|
|
240
|
+
.mp-cascader-option-selected.mp-cascader-search-option-active,
|
|
241
|
+
.mp-cascader-search-option-selected.mp-cascader-search-option-active,
|
|
242
|
+
.mp-cascader-option-selected.mp-cascader-search-option-hover,
|
|
243
|
+
.mp-cascader-search-option-selected.mp-cascader-search-option-hover {
|
|
244
|
+
color: var(--mp-cascader-item-text-color-active);
|
|
245
|
+
background-color: var(--mp-cascader-item-bg-hover);
|
|
246
|
+
}
|
|
234
247
|
.mp-cascader-option-active.mp-cascader-option-disabled,
|
|
235
|
-
.mp-cascader-option-active.mp-cascader-option-disabled
|
|
248
|
+
.mp-cascader-option-active.mp-cascader-search-option-disabled,
|
|
249
|
+
.mp-cascader-search-option-active.mp-cascader-option-disabled,
|
|
250
|
+
.mp-cascader-search-option-active.mp-cascader-search-option-disabled,
|
|
251
|
+
.mp-cascader-option-active.mp-cascader-option-disabled:hover,
|
|
252
|
+
.mp-cascader-option-active.mp-cascader-search-option-disabled:hover,
|
|
253
|
+
.mp-cascader-search-option-active.mp-cascader-option-disabled:hover,
|
|
254
|
+
.mp-cascader-search-option-active.mp-cascader-search-option-disabled:hover,
|
|
255
|
+
.mp-cascader-option-selected.mp-cascader-option-disabled,
|
|
256
|
+
.mp-cascader-option-selected.mp-cascader-search-option-disabled,
|
|
257
|
+
.mp-cascader-search-option-selected.mp-cascader-option-disabled,
|
|
258
|
+
.mp-cascader-search-option-selected.mp-cascader-search-option-disabled,
|
|
259
|
+
.mp-cascader-option-selected.mp-cascader-option-disabled:hover,
|
|
260
|
+
.mp-cascader-option-selected.mp-cascader-search-option-disabled:hover,
|
|
261
|
+
.mp-cascader-search-option-selected.mp-cascader-option-disabled:hover,
|
|
262
|
+
.mp-cascader-search-option-selected.mp-cascader-search-option-disabled:hover {
|
|
236
263
|
color: var(--mp-cascader-item-text-color-disabled-active);
|
|
237
264
|
background-color: var(--mp-cascader-item-bg-disabled-active);
|
|
238
265
|
}
|
|
@@ -8,6 +8,7 @@ import '../../trigger/style/index.mjs'
|
|
|
8
8
|
import '../../empty/style/index.mjs'
|
|
9
9
|
import '../../loading/style/index.mjs'
|
|
10
10
|
import '../../button/style/index.mjs'
|
|
11
|
+
import '../../checkbox/style/index.mjs'
|
|
11
12
|
import '../../picker/style/index.mjs'
|
|
12
13
|
import '../../popup/style/index.mjs'
|
|
13
14
|
import './index.css'
|
|
@@ -6,11 +6,13 @@ function useCascaderFocus(activeKey) {
|
|
|
6
6
|
onBeforeUnmount(() => cancelPendingFocus?.());
|
|
7
7
|
return (root, option, originPanel, panelSelector) => {
|
|
8
8
|
const key = activeKey.value;
|
|
9
|
-
|
|
9
|
+
const document = root.ownerDocument;
|
|
10
|
+
const nodeRoot = root.getRootNode();
|
|
11
|
+
const focusRoot = "activeElement" in nodeRoot ? nodeRoot : document;
|
|
12
|
+
if (!key || !root.contains(option) || focusRoot.activeElement !== option) {
|
|
10
13
|
return;
|
|
11
14
|
}
|
|
12
15
|
cancelPendingFocus?.();
|
|
13
|
-
const document = root.ownerDocument;
|
|
14
16
|
const view = document.defaultView;
|
|
15
17
|
if (!view) {
|
|
16
18
|
return;
|
|
@@ -34,7 +36,7 @@ function useCascaderFocus(activeKey) {
|
|
|
34
36
|
}
|
|
35
37
|
};
|
|
36
38
|
const onFocus = (next) => {
|
|
37
|
-
if (next.target !== option) {
|
|
39
|
+
if (next.target !== option && !next.composedPath().includes(option)) {
|
|
38
40
|
cleanup();
|
|
39
41
|
}
|
|
40
42
|
};
|
|
@@ -42,9 +44,10 @@ function useCascaderFocus(activeKey) {
|
|
|
42
44
|
if (done) {
|
|
43
45
|
return;
|
|
44
46
|
}
|
|
45
|
-
const focused =
|
|
46
|
-
const
|
|
47
|
-
|
|
47
|
+
const focused = focusRoot.activeElement;
|
|
48
|
+
const docFocus = document.activeElement;
|
|
49
|
+
const lostToRemoval = !option.isConnected && (docFocus === document.body || docFocus === document.documentElement) && (focused === null || focused === document.body || focused === document.documentElement);
|
|
50
|
+
if (!root.isConnected || root.getRootNode() !== nodeRoot || activeKey.value !== key || focused !== option && !lostToRemoval) {
|
|
48
51
|
cleanup();
|
|
49
52
|
return;
|
|
50
53
|
}
|
|
@@ -6,7 +6,7 @@ import { ChoiceLabel } from "./choice-label.mjs";
|
|
|
6
6
|
import { normalizeChoiceOptions } from "./choice-options.mjs";
|
|
7
7
|
import { useChoiceState, choiceLimit } from "./choice-state.mjs";
|
|
8
8
|
import { checkboxGroupKey } from "./context.mjs";
|
|
9
|
-
import
|
|
9
|
+
import Checkbox from "./presentation.mjs";
|
|
10
10
|
import { checkboxGroupProps } from "./props.mjs";
|
|
11
11
|
import { useCheckboxGroupMethods } from "./use-checkbox-group-methods.mjs";
|
|
12
12
|
import { useChoiceForm } from "./use-choice-form.mjs";
|
|
@@ -75,7 +75,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
75
75
|
"aria-disabled": unref(mergedDisabled) || void 0
|
|
76
76
|
}), [
|
|
77
77
|
props.options !== void 0 ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(normalizedOptions.value, (option) => {
|
|
78
|
-
return openBlock(), createBlock(unref(
|
|
78
|
+
return openBlock(), createBlock(unref(Checkbox), {
|
|
79
79
|
key: `${typeof option.value}:${String(option.value)}`,
|
|
80
80
|
"edit-mode": "direct",
|
|
81
81
|
value: option.value,
|
package/es/checkbox/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { withInstall, withPropsDefaultsSetter } from "../utils/components.mjs";
|
|
2
|
+
import _Checkbox from "./base.mjs";
|
|
2
3
|
import CheckboxGroup from "./group-presentation.mjs";
|
|
3
|
-
import _Checkbox from "./presentation.mjs";
|
|
4
4
|
import { checkboxProps, checkboxGroupProps } from "./props.mjs";
|
|
5
5
|
const Checkbox = withInstall(
|
|
6
6
|
_Checkbox,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { withFieldPresentation } from "../_components/field-presentation/with-field-presentation.mjs";
|
|
2
2
|
import _sfc_main from "./Checkbox.vue.mjs";
|
|
3
|
-
const
|
|
3
|
+
const Checkbox = withFieldPresentation(_sfc_main, { methods: ["toggle", "focus", "blur"] });
|
|
4
4
|
export {
|
|
5
|
-
|
|
5
|
+
Checkbox as default
|
|
6
6
|
};
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
:root,
|
|
5
5
|
:where([data-mp-theme]) {
|
|
6
6
|
--mp-checkbox-control-color: var(--mp-sys-color-content-secondary);
|
|
7
|
-
--mp-checkbox-control-color-checked: var(--mp-sys-color-
|
|
7
|
+
--mp-checkbox-control-color-checked: var(--mp-sys-color-action-primary);
|
|
8
8
|
--mp-checkbox-control-color-disabled: var(--mp-sys-color-content-disabled);
|
|
9
9
|
--mp-checkbox-control-color-error: var(--mp-sys-color-content-danger);
|
|
10
10
|
--mp-checkbox-control-size: 24px;
|
|
@@ -46,9 +46,12 @@ function useCountdown(props, emit) {
|
|
|
46
46
|
let resumeOnActivate = false;
|
|
47
47
|
let generation = 0;
|
|
48
48
|
let handle;
|
|
49
|
-
function
|
|
49
|
+
function updateDisplay() {
|
|
50
50
|
timeData.value = splitTime(remaining);
|
|
51
51
|
showTime.value = parseFormat(props.format, timeData.value);
|
|
52
|
+
}
|
|
53
|
+
function display() {
|
|
54
|
+
updateDisplay();
|
|
52
55
|
emit("change", timeData.value);
|
|
53
56
|
}
|
|
54
57
|
function cancel() {
|
|
@@ -93,11 +96,15 @@ function useCountdown(props, emit) {
|
|
|
93
96
|
}
|
|
94
97
|
function pause() {
|
|
95
98
|
resumeOnActivate = false;
|
|
96
|
-
|
|
99
|
+
const wasRunning = running;
|
|
100
|
+
if (wasRunning) {
|
|
97
101
|
remaining = Math.max(0, deadline - performance.now());
|
|
98
102
|
}
|
|
99
103
|
running = false;
|
|
100
104
|
cancel();
|
|
105
|
+
if (wasRunning && mounted) {
|
|
106
|
+
updateDisplay();
|
|
107
|
+
}
|
|
101
108
|
}
|
|
102
109
|
function reset() {
|
|
103
110
|
if (!mounted) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, openBlock, createElementBlock, normalizeClass, unref, renderSlot, normalizeProps, guardReactiveProps, createBlock, withCtx, createVNode, createCommentVNode, createTextVNode, toDisplayString } from "vue";
|
|
2
2
|
import { IconThunderbolt } from "@maple-design/icons-vue";
|
|
3
|
-
import
|
|
3
|
+
import MpButton from "../button/base.mjs";
|
|
4
4
|
import { createNamespace } from "../utils/components.mjs";
|
|
5
5
|
import { usePanelActionsLocale } from "./presentation/use-panel-actions-locale.mjs";
|
|
6
6
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
@@ -31,7 +31,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
31
31
|
selectNow: () => emit("select-now"),
|
|
32
32
|
nowDisabled: _ctx.nowDisabled
|
|
33
33
|
})), () => [
|
|
34
|
-
_ctx.showQuick ? (openBlock(), createBlock(unref(
|
|
34
|
+
_ctx.showQuick ? (openBlock(), createBlock(unref(MpButton), {
|
|
35
35
|
key: 0,
|
|
36
36
|
variant: "text",
|
|
37
37
|
status: "primary",
|
|
@@ -49,7 +49,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
49
49
|
]),
|
|
50
50
|
_: 1
|
|
51
51
|
}, 8, ["class", "aria-label", "aria-pressed", "disabled"])) : createCommentVNode("", true),
|
|
52
|
-
_ctx.showNow ? (openBlock(), createBlock(unref(
|
|
52
|
+
_ctx.showNow ? (openBlock(), createBlock(unref(MpButton), {
|
|
53
53
|
key: 1,
|
|
54
54
|
variant: "text",
|
|
55
55
|
disabled: _ctx.nowDisabled,
|
|
@@ -60,7 +60,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
60
60
|
]),
|
|
61
61
|
_: 1
|
|
62
62
|
}, 8, ["disabled"])) : createCommentVNode("", true),
|
|
63
|
-
_ctx.showConfirm ? (openBlock(), createBlock(unref(
|
|
63
|
+
_ctx.showConfirm ? (openBlock(), createBlock(unref(MpButton), {
|
|
64
64
|
key: 2,
|
|
65
65
|
status: "primary",
|
|
66
66
|
disabled: !_ctx.canConfirm,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent, unref, openBlock, createElementBlock, normalizeClass, Fragment, renderList, createBlock, withCtx, resolveDynamicComponent, createTextVNode, toDisplayString, createCommentVNode } from "vue";
|
|
2
|
-
import
|
|
2
|
+
import MpButton from "../button/base.mjs";
|
|
3
3
|
import { createNamespace } from "../utils/components.mjs";
|
|
4
4
|
import { useRangeQuickPanel } from "./range-quick-selection.mjs";
|
|
5
5
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
@@ -16,7 +16,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
16
16
|
"aria-label": "快捷选择"
|
|
17
17
|
}, [
|
|
18
18
|
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(quick).items.value, (item, index) => {
|
|
19
|
-
return openBlock(), createBlock(unref(
|
|
19
|
+
return openBlock(), createBlock(unref(MpButton), {
|
|
20
20
|
key: index,
|
|
21
21
|
variant: "text",
|
|
22
22
|
status: "primary",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent, openBlock, createElementBlock, normalizeClass, unref, Fragment, renderList, createBlock, withCtx, resolveDynamicComponent, createTextVNode, toDisplayString } from "vue";
|
|
2
|
-
import
|
|
2
|
+
import MpButton from "../button/base.mjs";
|
|
3
3
|
import { createNamespace } from "../utils/components.mjs";
|
|
4
4
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
5
5
|
...{ name: createNamespace("date-shortcuts").name },
|
|
@@ -18,7 +18,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
18
18
|
class: normalizeClass(unref(classes)(unref(n)(), unref(n)(`--${_ctx.position}`)))
|
|
19
19
|
}, [
|
|
20
20
|
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.shortcuts, (shortcut, index) => {
|
|
21
|
-
return openBlock(), createBlock(unref(
|
|
21
|
+
return openBlock(), createBlock(unref(MpButton), {
|
|
22
22
|
key: index,
|
|
23
23
|
variant: "text",
|
|
24
24
|
disabled: _ctx.blocked || shortcut.disabled,
|
|
@@ -3,12 +3,11 @@ import { isFieldOpenClick } from "../_components/picker-field/open-trigger.mjs";
|
|
|
3
3
|
import _sfc_main$1 from "../_components/picker-field/PickerField.vue.mjs";
|
|
4
4
|
import { provideRangeField } from "../_components/picker-field/range-field-context.mjs";
|
|
5
5
|
import { fieldDecoratorProps } from "../field-decorator/props.mjs";
|
|
6
|
-
import "../locale/
|
|
6
|
+
import { dateText } from "../locale/date-text.mjs";
|
|
7
7
|
import { isDateSelectionValid } from "./date-rules.mjs";
|
|
8
8
|
import { dateEventPayload, formatDateValue } from "./date-value.mjs";
|
|
9
9
|
import _sfc_main from "./DatePanel.vue.mjs";
|
|
10
10
|
import { dateFieldPanelOptions } from "./field-panel-options.mjs";
|
|
11
|
-
import { t } from "../locale/state.mjs";
|
|
12
11
|
function dateFieldAdapter(range) {
|
|
13
12
|
return {
|
|
14
13
|
methods: ["focus", "blur"],
|
|
@@ -24,7 +23,7 @@ function dateFieldAdapter(range) {
|
|
|
24
23
|
class: ["mp-date-range", attrs.class],
|
|
25
24
|
texts: [0, 1].map((index) => formatDateValue(value?.[index], props)),
|
|
26
25
|
placeholder: Array.isArray(props.placeholder) ? props.placeholder[0] : props.placeholder,
|
|
27
|
-
placeholders: Array.isArray(props.placeholder) ? props.placeholder : typeof props.placeholder === "string" ? [props.placeholder, props.placeholder] : [
|
|
26
|
+
placeholders: Array.isArray(props.placeholder) ? props.placeholder : typeof props.placeholder === "string" ? [props.placeholder, props.placeholder] : [dateText("dateRangeStart"), dateText("dateRangeEnd")],
|
|
28
27
|
range: true,
|
|
29
28
|
openTriggerTarget: props.openTriggerTarget,
|
|
30
29
|
separator: props.separator,
|
|
@@ -4,16 +4,15 @@ import dayjs from "dayjs";
|
|
|
4
4
|
import isSameOrAfter from "dayjs/plugin/isSameOrAfter.js";
|
|
5
5
|
import isSameOrBefore from "dayjs/plugin/isSameOrBefore.js";
|
|
6
6
|
import { navigateTemporalGrid } from "../../_utils/temporal-keyboard.mjs";
|
|
7
|
-
import
|
|
8
|
-
import "../../locale/index.mjs";
|
|
7
|
+
import MpButton from "../../button/base.mjs";
|
|
9
8
|
import { injectLocaleProvider } from "../../locale-provider/provide.mjs";
|
|
9
|
+
import { dateText } from "../../locale/date-text.mjs";
|
|
10
10
|
import { createNamespace } from "../../utils/components.mjs";
|
|
11
11
|
import { calendarMonthDays } from "../../utils/picker-data.mjs";
|
|
12
12
|
import { isRangeHighlighted } from "../range-highlight.mjs";
|
|
13
13
|
import { useCalendarRangeStyle } from "../use-calendar-range-style.mjs";
|
|
14
14
|
import PanelHeader from "./PanelHeader.vue.mjs";
|
|
15
15
|
import { WEEK_HEADER } from "../presentation-props.mjs";
|
|
16
|
-
import { t } from "../../locale/state.mjs";
|
|
17
16
|
dayjs.extend(isSameOrBefore);
|
|
18
17
|
dayjs.extend(isSameOrAfter);
|
|
19
18
|
const { n, classes } = createNamespace("day-picker");
|
|
@@ -21,7 +20,7 @@ const { n: nDate } = createNamespace("date-picker");
|
|
|
21
20
|
const _sfc_main = defineComponent({
|
|
22
21
|
name: createNamespace("day-picker-panel").name,
|
|
23
22
|
components: {
|
|
24
|
-
MpButton
|
|
23
|
+
MpButton,
|
|
25
24
|
PanelHeader
|
|
26
25
|
},
|
|
27
26
|
props: {
|
|
@@ -82,7 +81,7 @@ const _sfc_main = defineComponent({
|
|
|
82
81
|
}
|
|
83
82
|
return [...WEEK_HEADER.slice(index), ...WEEK_HEADER.slice(0, index)];
|
|
84
83
|
});
|
|
85
|
-
const getDayAbbr = (key) => (pt ||
|
|
84
|
+
const getDayAbbr = (key) => (pt || dateText)("datePickerWeekDict")?.[key].abbr ?? "";
|
|
86
85
|
const filterDay = (day) => day > 0 ? day : "";
|
|
87
86
|
const days = computed(() => {
|
|
88
87
|
const {
|