@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/lib/trigger/position.js
CHANGED
|
@@ -99,14 +99,29 @@ function getScrollElements(element) {
|
|
|
99
99
|
const visited = /* @__PURE__ */ new Set();
|
|
100
100
|
while (root && !visited.has(root.ownerDocument)) {
|
|
101
101
|
visited.add(root.ownerDocument);
|
|
102
|
-
|
|
102
|
+
const parent = (node) => {
|
|
103
|
+
if (node.assignedSlot) {
|
|
104
|
+
return node.assignedSlot;
|
|
105
|
+
}
|
|
106
|
+
if (node.parentElement) {
|
|
107
|
+
return node.parentElement;
|
|
108
|
+
}
|
|
109
|
+
const tree = node.getRootNode();
|
|
110
|
+
return tree.nodeType === 11 && "host" in tree ? tree.host : null;
|
|
111
|
+
};
|
|
112
|
+
let current = parent(root);
|
|
113
|
+
const ancestors = /* @__PURE__ */ new Set();
|
|
103
114
|
while (current && current !== current.ownerDocument.documentElement) {
|
|
115
|
+
if (ancestors.has(current)) {
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
ancestors.add(current);
|
|
104
119
|
const style = current.ownerDocument.defaultView?.getComputedStyle(current);
|
|
105
120
|
const overflow = `${style?.overflow ?? ""}${style?.overflowX ?? ""}${style?.overflowY ?? ""}`;
|
|
106
121
|
if (/(auto|scroll|overlay)/.test(overflow)) {
|
|
107
122
|
result.push(current);
|
|
108
123
|
}
|
|
109
|
-
current = current
|
|
124
|
+
current = parent(current);
|
|
110
125
|
}
|
|
111
126
|
try {
|
|
112
127
|
root = root.ownerDocument.defaultView?.frameElement ?? void 0;
|
|
@@ -116,6 +131,36 @@ function getScrollElements(element) {
|
|
|
116
131
|
}
|
|
117
132
|
return result;
|
|
118
133
|
}
|
|
134
|
+
function getSlotChangeRoots(element) {
|
|
135
|
+
const roots = [];
|
|
136
|
+
const visited = /* @__PURE__ */ new Set();
|
|
137
|
+
let current = element;
|
|
138
|
+
while (current && !visited.has(current)) {
|
|
139
|
+
visited.add(current);
|
|
140
|
+
const parentShadow = current.parentElement?.shadowRoot;
|
|
141
|
+
if (parentShadow) {
|
|
142
|
+
roots.push(parentShadow);
|
|
143
|
+
}
|
|
144
|
+
if (current.assignedSlot) {
|
|
145
|
+
current = current.assignedSlot;
|
|
146
|
+
} else if (current.parentElement) {
|
|
147
|
+
current = current.parentElement;
|
|
148
|
+
} else {
|
|
149
|
+
const tree = current.getRootNode();
|
|
150
|
+
if (tree.nodeType === 11 && "host" in tree) {
|
|
151
|
+
roots.push(tree);
|
|
152
|
+
current = tree.host;
|
|
153
|
+
} else {
|
|
154
|
+
try {
|
|
155
|
+
current = current.ownerDocument.defaultView?.frameElement;
|
|
156
|
+
} catch {
|
|
157
|
+
current = void 0;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return roots;
|
|
163
|
+
}
|
|
119
164
|
function getScrollViews(element) {
|
|
120
165
|
const result = [];
|
|
121
166
|
let document = element?.ownerDocument;
|
|
@@ -137,3 +182,4 @@ function getScrollViews(element) {
|
|
|
137
182
|
exports.calculatePopupPosition = calculatePopupPosition;
|
|
138
183
|
exports.getScrollElements = getScrollElements;
|
|
139
184
|
exports.getScrollViews = getScrollViews;
|
|
185
|
+
exports.getSlotChangeRoots = getSlotChangeRoots;
|
|
@@ -9,9 +9,11 @@ function rafThrottle(callback, ownerView) {
|
|
|
9
9
|
let frame;
|
|
10
10
|
let frameView;
|
|
11
11
|
let latest;
|
|
12
|
+
let latestTarget;
|
|
12
13
|
let generation = 0;
|
|
13
14
|
const run = (event) => {
|
|
14
15
|
latest = event;
|
|
16
|
+
latestTarget = event?.currentTarget ?? event?.target;
|
|
15
17
|
if (frame !== void 0) {
|
|
16
18
|
return;
|
|
17
19
|
}
|
|
@@ -29,8 +31,10 @@ function rafThrottle(callback, ownerView) {
|
|
|
29
31
|
frame = void 0;
|
|
30
32
|
frameView = void 0;
|
|
31
33
|
const currentEvent = latest;
|
|
34
|
+
const currentTarget = latestTarget;
|
|
32
35
|
latest = void 0;
|
|
33
|
-
|
|
36
|
+
latestTarget = void 0;
|
|
37
|
+
callback(currentEvent, currentTarget);
|
|
34
38
|
});
|
|
35
39
|
};
|
|
36
40
|
run.cancel = () => {
|
|
@@ -41,6 +45,7 @@ function rafThrottle(callback, ownerView) {
|
|
|
41
45
|
frame = void 0;
|
|
42
46
|
frameView = void 0;
|
|
43
47
|
latest = void 0;
|
|
48
|
+
latestTarget = void 0;
|
|
44
49
|
};
|
|
45
50
|
return run;
|
|
46
51
|
}
|
|
@@ -56,6 +61,7 @@ function useTriggerPositioner(options, context) {
|
|
|
56
61
|
let scrollPositions = /* @__PURE__ */ new WeakMap();
|
|
57
62
|
let windowPositions = /* @__PURE__ */ new WeakMap();
|
|
58
63
|
let scrollViews = [];
|
|
64
|
+
let slotRoots = [];
|
|
59
65
|
function update() {
|
|
60
66
|
const reference = context.reference.value;
|
|
61
67
|
const popup = context.popup.value;
|
|
@@ -141,10 +147,10 @@ function useTriggerPositioner(options, context) {
|
|
|
141
147
|
}
|
|
142
148
|
}
|
|
143
149
|
const scrolling = rafThrottle(
|
|
144
|
-
(
|
|
150
|
+
(_event, eventTarget) => {
|
|
145
151
|
const shouldClose = options.scrollToClose || context.globalScrollToClose.value;
|
|
146
|
-
if (shouldClose &&
|
|
147
|
-
const target =
|
|
152
|
+
if (shouldClose && eventTarget) {
|
|
153
|
+
const target = eventTarget;
|
|
148
154
|
const previous = scrollPositions.get(target) ?? [target.scrollTop, target.scrollLeft];
|
|
149
155
|
scrollPositions.set(target, previous);
|
|
150
156
|
if (Math.abs(target.scrollTop - previous[0]) >= options.scrollToCloseDistance || Math.abs(target.scrollLeft - previous[1]) >= options.scrollToCloseDistance) {
|
|
@@ -191,11 +197,30 @@ function useTriggerPositioner(options, context) {
|
|
|
191
197
|
for (const view of scrollViews) {
|
|
192
198
|
view.removeEventListener("scroll", onWindowScroll);
|
|
193
199
|
}
|
|
200
|
+
for (const slot of slotRoots) {
|
|
201
|
+
slot.removeEventListener("slotchange", onSlotChange);
|
|
202
|
+
}
|
|
203
|
+
slotRoots = [];
|
|
194
204
|
scrollViews = [];
|
|
195
205
|
scrollElements = [];
|
|
196
206
|
scrollPositions = /* @__PURE__ */ new WeakMap();
|
|
197
207
|
windowPositions = /* @__PURE__ */ new WeakMap();
|
|
198
208
|
}
|
|
209
|
+
function onSlotChange() {
|
|
210
|
+
positionGeneration++;
|
|
211
|
+
const reference = context.reference.value;
|
|
212
|
+
const popup = context.popup.value;
|
|
213
|
+
const nextElements = [.../* @__PURE__ */ new Set([...position.getScrollElements(reference), ...position.getScrollElements(popup)])];
|
|
214
|
+
const nextViews = [.../* @__PURE__ */ new Set([...position.getScrollViews(reference), ...position.getScrollViews(popup)])];
|
|
215
|
+
const nextRoots = [.../* @__PURE__ */ new Set([...position.getSlotChangeRoots(reference), ...position.getSlotChangeRoots(popup)])];
|
|
216
|
+
function changed(before, after) {
|
|
217
|
+
return before.length !== after.length || before.some((item, index) => item !== after[index]);
|
|
218
|
+
}
|
|
219
|
+
if (changed(scrollElements, nextElements) || changed(scrollViews, nextViews) || changed(slotRoots, nextRoots)) {
|
|
220
|
+
bindScroll();
|
|
221
|
+
}
|
|
222
|
+
vue.nextTick(update);
|
|
223
|
+
}
|
|
199
224
|
function bindScroll() {
|
|
200
225
|
unbindScroll();
|
|
201
226
|
const reference = context.reference.value;
|
|
@@ -204,6 +229,10 @@ function useTriggerPositioner(options, context) {
|
|
|
204
229
|
if (!active || !reference || !popup || !context.visible.value || suspended) {
|
|
205
230
|
return;
|
|
206
231
|
}
|
|
232
|
+
slotRoots = [.../* @__PURE__ */ new Set([...position.getSlotChangeRoots(reference), ...position.getSlotChangeRoots(popup)])];
|
|
233
|
+
for (const slot of slotRoots) {
|
|
234
|
+
slot.addEventListener("slotchange", onSlotChange);
|
|
235
|
+
}
|
|
207
236
|
scrollElements = [.../* @__PURE__ */ new Set([...position.getScrollElements(reference), ...position.getScrollElements(popup)])];
|
|
208
237
|
for (const element of scrollElements) {
|
|
209
238
|
scrollPositions.set(element, [element.scrollTop, element.scrollLeft]);
|
package/lib/trigger/trigger.js
CHANGED
|
@@ -164,7 +164,7 @@ const Trigger = /* @__PURE__ */ vue.defineComponent({
|
|
|
164
164
|
});
|
|
165
165
|
return () => {
|
|
166
166
|
const referenceNodes = mergeFirstReferenceClass(slots.default?.() ?? [], visible.value ? props2.openedClass : void 0);
|
|
167
|
-
const contentNodes = slots.content?.() ?? [];
|
|
167
|
+
const contentNodes = renderState.rendered.value ? slots.content?.() ?? [] : [];
|
|
168
168
|
const hiddenByEmpty = props2.hideEmpty && isEmptyContent(contentNodes);
|
|
169
169
|
nodes.value = referenceNodes;
|
|
170
170
|
return vue.createVNode(vue.Fragment, null, [referenceNodes, vue.createVNode(vue.Teleport, {
|
package/lib/upload/Upload.vue.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
3
|
const vue = require("vue");
|
|
4
4
|
const iconsVue = require("@maple-design/icons-vue");
|
|
5
|
+
const editorPending = require("../_components/field-presentation/editor-pending.js");
|
|
5
6
|
const PendingFeedback_vue_vue_type_script_setup_true_lang = require("../_components/pending-feedback/PendingFeedback.vue.js");
|
|
6
7
|
const errorDescription = require("../form/error-description.js");
|
|
7
8
|
const preview = require("../image/preview.js");
|
|
@@ -135,6 +136,21 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
135
136
|
}
|
|
136
137
|
}
|
|
137
138
|
});
|
|
139
|
+
const editorPending$1 = vue.inject(editorPending.fieldEditorControlPending, void 0);
|
|
140
|
+
vue.watch(
|
|
141
|
+
uploader.editorPending,
|
|
142
|
+
(value) => {
|
|
143
|
+
if (editorPending$1) {
|
|
144
|
+
editorPending$1.value = value;
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
{ flush: "sync" }
|
|
148
|
+
);
|
|
149
|
+
vue.onBeforeUnmount(() => {
|
|
150
|
+
if (editorPending$1) {
|
|
151
|
+
editorPending$1.value = false;
|
|
152
|
+
}
|
|
153
|
+
});
|
|
138
154
|
const {
|
|
139
155
|
fileList,
|
|
140
156
|
maxReached,
|
|
@@ -255,7 +271,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
255
271
|
class: vue.normalizeClass(vue.unref(n)("input")),
|
|
256
272
|
type: "file",
|
|
257
273
|
accept: _ctx.accept,
|
|
258
|
-
capture: _ctx.capture,
|
|
274
|
+
capture: _ctx.capture === false ? void 0 : _ctx.capture === true ? "" : _ctx.capture,
|
|
259
275
|
multiple: !vue.unref(replacementTarget) && (_ctx.multiple || _ctx.directory),
|
|
260
276
|
disabled: vue.unref(disabledState),
|
|
261
277
|
webkitdirectory: !vue.unref(replacementTarget) && _ctx.directory || void 0,
|
|
@@ -4,10 +4,13 @@ const vue = require("vue");
|
|
|
4
4
|
function useUploadQueue(options) {
|
|
5
5
|
const inner = vue.ref((options.defaultValue?.() ?? []).map((file) => ({ ...file })));
|
|
6
6
|
const fileList = vue.computed(() => options.modelValue?.() ?? inner.value);
|
|
7
|
+
let revision = 0;
|
|
7
8
|
let pending;
|
|
8
9
|
let pendingBase;
|
|
9
10
|
const mutationList = () => pending && fileList.value === pendingBase ? pending : fileList.value;
|
|
10
11
|
function commit(next, changed) {
|
|
12
|
+
const currentRevision = ++revision;
|
|
13
|
+
const startedActive = options.isActive?.() ?? true;
|
|
11
14
|
pendingBase = fileList.value;
|
|
12
15
|
pending = next;
|
|
13
16
|
if (options.modelValue?.() === void 0) {
|
|
@@ -20,7 +23,9 @@ function useUploadQueue(options) {
|
|
|
20
23
|
}
|
|
21
24
|
});
|
|
22
25
|
options.onUpdateModelValue?.(next);
|
|
23
|
-
options.
|
|
26
|
+
if (revision === currentRevision && (!startedActive || (options.isActive?.() ?? true))) {
|
|
27
|
+
options.onChange?.(next, changed);
|
|
28
|
+
}
|
|
24
29
|
}
|
|
25
30
|
function append(files) {
|
|
26
31
|
if (files.length) {
|
|
@@ -66,6 +71,10 @@ function useUploadQueue(options) {
|
|
|
66
71
|
function reset() {
|
|
67
72
|
if (fileList.value.length) {
|
|
68
73
|
commit([]);
|
|
74
|
+
} else {
|
|
75
|
+
revision++;
|
|
76
|
+
pending = void 0;
|
|
77
|
+
pendingBase = void 0;
|
|
69
78
|
}
|
|
70
79
|
}
|
|
71
80
|
return {
|
|
@@ -11,6 +11,7 @@ const useFilePicker = require("./use-file-picker.js");
|
|
|
11
11
|
const useUploadQueue = require("./use-upload-queue.js");
|
|
12
12
|
function useUploader(options) {
|
|
13
13
|
const feedback = usePendingFeedback.usePendingFeedback();
|
|
14
|
+
const preparation = usePendingFeedback.usePendingFeedback();
|
|
14
15
|
let active = true;
|
|
15
16
|
let inactive = false;
|
|
16
17
|
let generation = 0;
|
|
@@ -28,7 +29,8 @@ function useUploader(options) {
|
|
|
28
29
|
modelValue: options.modelValue,
|
|
29
30
|
defaultValue: options.defaultValue,
|
|
30
31
|
onChange: options.onChange,
|
|
31
|
-
onUpdateModelValue: options.onUpdateModelValue
|
|
32
|
+
onUpdateModelValue: options.onUpdateModelValue,
|
|
33
|
+
isActive: () => active && !inactive
|
|
32
34
|
});
|
|
33
35
|
const replacementTarget = vue.ref();
|
|
34
36
|
const metadataVersion = vue.ref(0);
|
|
@@ -204,8 +206,8 @@ function useUploader(options) {
|
|
|
204
206
|
}
|
|
205
207
|
function enqueue(files, rejected, previous) {
|
|
206
208
|
const epoch = generation;
|
|
207
|
-
adding = adding.then(() => prepareFiles(files, rejected, epoch, previous)).catch(() => {
|
|
208
|
-
});
|
|
209
|
+
adding = preparation.track(() => adding.then(() => prepareFiles(files, rejected, epoch, previous)).catch(() => {
|
|
210
|
+
}));
|
|
209
211
|
return adding;
|
|
210
212
|
}
|
|
211
213
|
async function prepareFiles(files, initialRejected, epoch, previous) {
|
|
@@ -223,7 +225,9 @@ function useUploader(options) {
|
|
|
223
225
|
}
|
|
224
226
|
}
|
|
225
227
|
} catch {
|
|
226
|
-
|
|
228
|
+
if (valid(epoch)) {
|
|
229
|
+
reject([...rejected, ...files.map((file) => ({ file, reason: "before-add" }))]);
|
|
230
|
+
}
|
|
227
231
|
return;
|
|
228
232
|
}
|
|
229
233
|
}
|
|
@@ -310,9 +314,17 @@ function useUploader(options) {
|
|
|
310
314
|
return;
|
|
311
315
|
}
|
|
312
316
|
reject(rejected);
|
|
317
|
+
if (!valid(epoch)) {
|
|
318
|
+
items.forEach((item) => release(item.uid));
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
313
321
|
if (rejected.some((file) => file.reason === "max-files")) {
|
|
314
322
|
options.onExceed?.(candidates, queue.fileList.value);
|
|
315
323
|
}
|
|
324
|
+
if (!valid(epoch)) {
|
|
325
|
+
items.forEach((item) => release(item.uid));
|
|
326
|
+
return;
|
|
327
|
+
}
|
|
316
328
|
if (!items.length) {
|
|
317
329
|
return;
|
|
318
330
|
}
|
|
@@ -334,11 +346,19 @@ function useUploader(options) {
|
|
|
334
346
|
items.forEach((file) => pendingAuto.add(file.uid));
|
|
335
347
|
if (previous) {
|
|
336
348
|
queue.replace(previous, items[0]);
|
|
349
|
+
if (!valid(epoch)) {
|
|
350
|
+
return;
|
|
351
|
+
}
|
|
337
352
|
options.onReplace?.(items[0], previous);
|
|
338
353
|
} else {
|
|
339
354
|
queue.append(items);
|
|
340
355
|
}
|
|
341
|
-
|
|
356
|
+
for (const file of items) {
|
|
357
|
+
if (!valid(epoch)) {
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
options.onRead?.(vue.reactive(file));
|
|
361
|
+
}
|
|
342
362
|
await vue.nextTick();
|
|
343
363
|
}
|
|
344
364
|
async function submit(file) {
|
|
@@ -352,6 +372,7 @@ function useUploader(options) {
|
|
|
352
372
|
if (attempts.has(file.uid)) {
|
|
353
373
|
return;
|
|
354
374
|
}
|
|
375
|
+
const epoch = generation;
|
|
355
376
|
const attempt = {};
|
|
356
377
|
attempts.set(file.uid, attempt);
|
|
357
378
|
const current = () => active && !inactive && attempts.get(file.uid) === attempt && queue.fileList.value.some(
|
|
@@ -396,7 +417,9 @@ function useUploader(options) {
|
|
|
396
417
|
}
|
|
397
418
|
const changed = { ...item, status: "uploading", percent: event.percent };
|
|
398
419
|
queue.patch(file.uid, { status: changed.status, percent: changed.percent });
|
|
399
|
-
|
|
420
|
+
if (valid(epoch) && current()) {
|
|
421
|
+
options.onProgress?.(changed, event);
|
|
422
|
+
}
|
|
400
423
|
};
|
|
401
424
|
const handleSuccess = (response) => {
|
|
402
425
|
if (!current()) {
|
|
@@ -405,7 +428,9 @@ function useUploader(options) {
|
|
|
405
428
|
attempts.delete(file.uid);
|
|
406
429
|
const changed = { ...item, status: "success", percent: 100, response };
|
|
407
430
|
queue.patch(file.uid, { status: changed.status, percent: changed.percent, response });
|
|
408
|
-
|
|
431
|
+
if (valid(epoch)) {
|
|
432
|
+
options.onSuccess?.(changed);
|
|
433
|
+
}
|
|
409
434
|
};
|
|
410
435
|
const handleError = (error) => {
|
|
411
436
|
if (!current()) {
|
|
@@ -414,7 +439,9 @@ function useUploader(options) {
|
|
|
414
439
|
attempts.delete(file.uid);
|
|
415
440
|
const changed = { ...item, status: "error", percent: 0, error };
|
|
416
441
|
queue.patch(file.uid, { status: changed.status, percent: changed.percent, error });
|
|
417
|
-
|
|
442
|
+
if (valid(epoch)) {
|
|
443
|
+
options.onError?.(changed);
|
|
444
|
+
}
|
|
418
445
|
};
|
|
419
446
|
const requestOptions = {
|
|
420
447
|
action: options.action?.(),
|
|
@@ -447,7 +474,9 @@ function useUploader(options) {
|
|
|
447
474
|
attempts.delete(file.uid);
|
|
448
475
|
const changed = { ...item, status: "error", percent: 0, error };
|
|
449
476
|
queue.patch(file.uid, changed);
|
|
450
|
-
|
|
477
|
+
if (valid(epoch)) {
|
|
478
|
+
options.onError?.(changed);
|
|
479
|
+
}
|
|
451
480
|
}
|
|
452
481
|
}
|
|
453
482
|
function abort(file) {
|
|
@@ -483,7 +512,9 @@ function useUploader(options) {
|
|
|
483
512
|
cancelAttempt(file.uid);
|
|
484
513
|
pendingAuto.delete(file.uid);
|
|
485
514
|
queue.remove(file);
|
|
486
|
-
|
|
515
|
+
if (valid(epoch)) {
|
|
516
|
+
options.onRemove?.(file);
|
|
517
|
+
}
|
|
487
518
|
} catch {
|
|
488
519
|
} finally {
|
|
489
520
|
if (removals.get(file.uid) === token) {
|
|
@@ -510,10 +541,11 @@ function useUploader(options) {
|
|
|
510
541
|
});
|
|
511
542
|
}
|
|
512
543
|
function reset() {
|
|
513
|
-
feedback.cancel();
|
|
514
544
|
if (disabled.value) {
|
|
515
545
|
return;
|
|
516
546
|
}
|
|
547
|
+
feedback.cancel();
|
|
548
|
+
preparation.cancel();
|
|
517
549
|
generation++;
|
|
518
550
|
replacementTarget.value = void 0;
|
|
519
551
|
adding = Promise.resolve();
|
|
@@ -564,6 +596,8 @@ function useUploader(options) {
|
|
|
564
596
|
});
|
|
565
597
|
return {
|
|
566
598
|
guardPending: feedback.pending,
|
|
599
|
+
/** @internal Coordinates deferred field confirmation with file preparation. */
|
|
600
|
+
editorPending: vue.computed(() => feedback.pending.value || preparation.pending.value),
|
|
567
601
|
fileList: queue.fileList,
|
|
568
602
|
maxReached,
|
|
569
603
|
disabled,
|
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const vue = require("vue");
|
|
4
|
-
require("../locale/index.js");
|
|
5
4
|
const state = require("../locale/state.js");
|
|
5
|
+
const zhCN = require("../locale/zh-CN.js");
|
|
6
|
+
function text(key, fallback) {
|
|
7
|
+
const value = state.t(key);
|
|
8
|
+
return String(state.defaultLocaleReady.value ? value : value ?? fallback);
|
|
9
|
+
}
|
|
6
10
|
function useUploadLocale() {
|
|
7
11
|
return vue.computed(() => ({
|
|
8
|
-
replace:
|
|
9
|
-
duration:
|
|
10
|
-
upload:
|
|
11
|
-
dropFiles:
|
|
12
|
-
preview:
|
|
13
|
-
download:
|
|
14
|
-
cancel:
|
|
15
|
-
retry:
|
|
16
|
-
remove:
|
|
17
|
-
close:
|
|
12
|
+
replace: text("upload.replace", zhCN.defaultUploadReplace),
|
|
13
|
+
duration: text("upload.duration", zhCN.defaultUploadDuration),
|
|
14
|
+
upload: text("upload.buttonText", zhCN.defaultUploadButtonText),
|
|
15
|
+
dropFiles: text("upload.drag", zhCN.defaultUploadDrag),
|
|
16
|
+
preview: text("upload.preview", zhCN.defaultUploadPreview),
|
|
17
|
+
download: text("upload.download", zhCN.defaultUploadDownload),
|
|
18
|
+
cancel: text("upload.cancel", zhCN.defaultUploadCancel),
|
|
19
|
+
retry: text("upload.retry", zhCN.defaultUploadRetry),
|
|
20
|
+
remove: text("upload.delete", zhCN.defaultUploadDelete),
|
|
21
|
+
close: text("upload.close", zhCN.defaultUploadClose)
|
|
18
22
|
}));
|
|
19
23
|
}
|
|
20
24
|
exports.useUploadLocale = useUploadLocale;
|
package/lib/utils/modal-focus.js
CHANGED
|
@@ -72,6 +72,13 @@ function useModalFocus(root, active, isTop, lockScroll = () => true, ownerDocume
|
|
|
72
72
|
target.focus({ preventScroll: true });
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
|
+
function focusAfterEnter() {
|
|
76
|
+
const doc = root()?.ownerDocument;
|
|
77
|
+
const current = doc?.activeElement;
|
|
78
|
+
if (!current || current === doc?.body || current === doc?.documentElement || previous.includes(current)) {
|
|
79
|
+
focus();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
75
82
|
function restore() {
|
|
76
83
|
const focused = owner?.activeElement;
|
|
77
84
|
const target = previous.find(restorable);
|
|
@@ -176,7 +183,7 @@ function useModalFocus(root, active, isTop, lockScroll = () => true, ownerDocume
|
|
|
176
183
|
unbind();
|
|
177
184
|
bind();
|
|
178
185
|
}
|
|
179
|
-
if (value) {
|
|
186
|
+
if (value && (!captured || root() !== element)) {
|
|
180
187
|
capture();
|
|
181
188
|
}
|
|
182
189
|
},
|
|
@@ -207,6 +214,6 @@ function useModalFocus(root, active, isTop, lockScroll = () => true, ownerDocume
|
|
|
207
214
|
unbind();
|
|
208
215
|
restore();
|
|
209
216
|
});
|
|
210
|
-
return { focus, restore, trap };
|
|
217
|
+
return { focus, focusAfterEnter, restore, trap };
|
|
211
218
|
}
|
|
212
219
|
exports.useModalFocus = useModalFocus;
|
|
@@ -42,7 +42,7 @@ function useModalSurface(options) {
|
|
|
42
42
|
const { zIndex: zIndex$1 } = zIndex.useZIndex(layerActive, 3);
|
|
43
43
|
const mergedZIndex = vue.computed(() => options.zIndex() ?? zIndex$1.value);
|
|
44
44
|
const { onStackTop } = popupLayer.usePopupLayer(layerActive, mergedZIndex, modalDocument);
|
|
45
|
-
const { focus, restore } = modalFocus.useModalFocus(
|
|
45
|
+
const { focus, focusAfterEnter, restore } = modalFocus.useModalFocus(
|
|
46
46
|
() => options.root.value?.querySelector("[data-modal-focus-root]") ?? options.root.value,
|
|
47
47
|
() => mergedOpen.value,
|
|
48
48
|
onStackTop,
|
|
@@ -52,7 +52,13 @@ function useModalSurface(options) {
|
|
|
52
52
|
vue.watch(
|
|
53
53
|
[popupContainerTarget, () => options.popupContainer() === false],
|
|
54
54
|
() => {
|
|
55
|
-
vue.nextTick(
|
|
55
|
+
vue.nextTick(() => {
|
|
56
|
+
const doc = modalDocument();
|
|
57
|
+
const current = doc?.activeElement;
|
|
58
|
+
if (!current || current === doc?.body || current === doc?.documentElement) {
|
|
59
|
+
focus();
|
|
60
|
+
}
|
|
61
|
+
});
|
|
56
62
|
},
|
|
57
63
|
{ flush: "post" }
|
|
58
64
|
);
|
|
@@ -128,7 +134,7 @@ function useModalSurface(options) {
|
|
|
128
134
|
vue.onBeforeUnmount(unbind);
|
|
129
135
|
function opened() {
|
|
130
136
|
if (mergedOpen.value) {
|
|
131
|
-
|
|
137
|
+
focusAfterEnter();
|
|
132
138
|
transition.opened();
|
|
133
139
|
}
|
|
134
140
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@maple-design/ui-vue",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "A Vue3 component library based on semantic tokens and brand themes, supporting mobile and desktop.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Vue3",
|
|
@@ -67,9 +67,9 @@
|
|
|
67
67
|
"dependencies": {
|
|
68
68
|
"dayjs": "^1.11.13",
|
|
69
69
|
"decimal.js": "^10.6.0",
|
|
70
|
-
"@maple-design/shared-vue": "1.1.
|
|
71
|
-
"@maple-design/
|
|
72
|
-
"@maple-design/
|
|
70
|
+
"@maple-design/shared-vue": "1.1.1",
|
|
71
|
+
"@maple-design/icons-vue": "1.1.2",
|
|
72
|
+
"@maple-design/use-vue": "1.1.1"
|
|
73
73
|
},
|
|
74
74
|
"devDependencies": {
|
|
75
75
|
"@types/node": "^18.7.20",
|
|
@@ -85,8 +85,8 @@
|
|
|
85
85
|
"vue": "3.5.13",
|
|
86
86
|
"vue-router": "4.5.0",
|
|
87
87
|
"zod": "^3.25.76",
|
|
88
|
-
"@maple-design/cli-vue": "1.1.
|
|
89
|
-
"@maple-design/touch-emulator-vue": "1.1.
|
|
88
|
+
"@maple-design/cli-vue": "1.1.1",
|
|
89
|
+
"@maple-design/touch-emulator-vue": "1.1.1"
|
|
90
90
|
},
|
|
91
91
|
"peerDependencies": {
|
|
92
92
|
"vue": "^3.2.0"
|
package/types/styleVars.d.ts
CHANGED
|
@@ -1369,6 +1369,8 @@ interface BaseStyleVars {
|
|
|
1369
1369
|
'--mp-select-popup-option-bg-disabled'?: string
|
|
1370
1370
|
'--mp-select-popup-option-bg-hover'?: string
|
|
1371
1371
|
'--mp-select-popup-option-bg-selected'?: string
|
|
1372
|
+
'--mp-select-popup-option-bg-selected-hover'?: string
|
|
1373
|
+
'--mp-select-popup-option-border-radius'?: string
|
|
1372
1374
|
'--mp-select-popup-option-check-color'?: string
|
|
1373
1375
|
'--mp-select-popup-option-check-gap'?: string
|
|
1374
1376
|
'--mp-select-popup-option-check-size'?: string
|
|
@@ -1381,6 +1383,7 @@ interface BaseStyleVars {
|
|
|
1381
1383
|
'--mp-select-popup-option-text-color-disabled'?: string
|
|
1382
1384
|
'--mp-select-popup-option-text-color-hover'?: string
|
|
1383
1385
|
'--mp-select-popup-option-text-color-selected'?: string
|
|
1386
|
+
'--mp-select-popup-padding-horizontal'?: string
|
|
1384
1387
|
'--mp-select-popup-padding-vertical'?: string
|
|
1385
1388
|
'--mp-signature-background-color'?: string
|
|
1386
1389
|
'--mp-signature-border-radius'?: string
|
|
@@ -11,6 +11,8 @@ export interface FieldEditorContext {
|
|
|
11
11
|
readonly: boolean;
|
|
12
12
|
}
|
|
13
13
|
export interface FieldPresentationAdapter {
|
|
14
|
+
/** Selection editors commit on a completed choice when confirmation is disabled. */
|
|
15
|
+
selectionConfirmation?: 'update' | 'select';
|
|
14
16
|
/** Pause selection mutations during loading while leaving search text editable. */
|
|
15
17
|
pauseSelectionWhileLoading?: boolean;
|
|
16
18
|
/** Explicit completion notifications owned by final deferred acceptance. */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function usePickerRangeLabels(kind: () => 'date' | 'time'): import("vue").ComputedRef<any[]>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { miscText as t } from '../locale/misc-text';
|
|
1
2
|
import { type ActionItem } from './index';
|
|
2
3
|
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
3
4
|
safeArea: BooleanConstructor;
|
|
@@ -53,7 +54,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
53
54
|
[k: string]: unknown;
|
|
54
55
|
}>;
|
|
55
56
|
pt: ((id: string) => string | undefined) | null;
|
|
56
|
-
t:
|
|
57
|
+
t: typeof t;
|
|
57
58
|
n: (suffix?: string | undefined) => string;
|
|
58
59
|
classes: (...names: (import("../utils/components").NamespaceClass | [unknown, import("../utils/components").NamespaceClass, import("../utils/components").NamespaceClass?])[]) => import("../utils/components").NamespaceClass[];
|
|
59
60
|
handleSelect: (action: ActionItem) => void;
|
|
@@ -93,7 +93,7 @@ declare namespace ActionSheet {
|
|
|
93
93
|
[k: string]: unknown;
|
|
94
94
|
}>;
|
|
95
95
|
pt: ((id: string) => string | undefined) | null;
|
|
96
|
-
t: (
|
|
96
|
+
t: typeof import("../locale/misc-text").miscText;
|
|
97
97
|
n: (suffix?: string | undefined) => string;
|
|
98
98
|
classes: (...names: (import("../utils/components").NamespaceClass | [unknown, import("../utils/components").NamespaceClass, import("../utils/components").NamespaceClass?])[]) => import("../utils/components").NamespaceClass[];
|
|
99
99
|
handleSelect: (action: ActionItem) => void;
|
|
@@ -85,8 +85,8 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
85
85
|
type: BooleanConstructor;
|
|
86
86
|
default: boolean;
|
|
87
87
|
};
|
|
88
|
-
wordLength: import("vue").PropType<import("
|
|
89
|
-
wordSlice: import("vue").PropType<import("
|
|
88
|
+
wordLength: import("vue").PropType<import("..").WordLength>;
|
|
89
|
+
wordSlice: import("vue").PropType<import("..").WordSlice>;
|
|
90
90
|
inputAttrs: import("vue").PropType<Record<string, unknown>>;
|
|
91
91
|
editMode: {
|
|
92
92
|
type: import("vue").PropType<import("../_components/field-presentation/context").FieldEditMode>;
|
|
@@ -111,6 +111,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
111
111
|
default: undefined;
|
|
112
112
|
};
|
|
113
113
|
defaultOpen: BooleanConstructor;
|
|
114
|
+
needConfirm: {
|
|
115
|
+
type: BooleanConstructor;
|
|
116
|
+
default: undefined;
|
|
117
|
+
};
|
|
114
118
|
searchDelay: {
|
|
115
119
|
type: NumberConstructor;
|
|
116
120
|
default: number;
|
|
@@ -219,8 +223,8 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
219
223
|
type: BooleanConstructor;
|
|
220
224
|
default: boolean;
|
|
221
225
|
};
|
|
222
|
-
wordLength: import("vue").PropType<import("
|
|
223
|
-
wordSlice: import("vue").PropType<import("
|
|
226
|
+
wordLength: import("vue").PropType<import("..").WordLength>;
|
|
227
|
+
wordSlice: import("vue").PropType<import("..").WordSlice>;
|
|
224
228
|
inputAttrs: import("vue").PropType<Record<string, unknown>>;
|
|
225
229
|
editMode: {
|
|
226
230
|
type: import("vue").PropType<import("../_components/field-presentation/context").FieldEditMode>;
|
|
@@ -245,6 +249,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
245
249
|
default: undefined;
|
|
246
250
|
};
|
|
247
251
|
defaultOpen: BooleanConstructor;
|
|
252
|
+
needConfirm: {
|
|
253
|
+
type: BooleanConstructor;
|
|
254
|
+
default: undefined;
|
|
255
|
+
};
|
|
248
256
|
searchDelay: {
|
|
249
257
|
type: NumberConstructor;
|
|
250
258
|
default: number;
|
|
@@ -289,6 +297,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
289
297
|
emptyText: string;
|
|
290
298
|
maxLength: import("../utils/text-input-value").TextInputMaxLength;
|
|
291
299
|
showWordLimit: boolean;
|
|
300
|
+
needConfirm: boolean;
|
|
292
301
|
searchDelay: number;
|
|
293
302
|
filterOption: import("./props").AutoCompleteFilterOption;
|
|
294
303
|
caseSensitive: boolean;
|