origam 2.17.0 → 2.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +744 -1
- package/dist/src/assets/css/main.css +1 -1
- package/dist/src/assets/css/tokens/dark.css +125 -24
- package/dist/src/assets/css/tokens/light.css +49 -12
- package/dist/src/assets/locales/en.json +21 -6
- package/dist/src/assets/locales/fr.json +21 -6
- package/dist/src/assets/scss/main.scss +10 -2
- package/dist/src/assets/scss/tokens/_dark.scss +2846 -12
- package/dist/src/assets/scss/tokens/_light.scss +49 -12
- package/dist/src/components/Alert/OrigamAlert.vue +6 -6
- package/dist/src/components/Avatar/OrigamAvatar.vue +15 -2
- package/dist/src/components/Badge/OrigamBadge.vue +7 -7
- package/dist/src/components/Breadcrumb/OrigamBreadcrumbItem.vue +23 -4
- package/dist/src/components/Btn/OrigamBtn.vue +21 -3
- package/dist/src/components/Btn/OrigamBtnGroup.vue +1 -1
- package/dist/src/components/Calendar/OrigamCalendar.vue +1 -1
- package/dist/src/components/Card/OrigamCard.vue +2 -0
- package/dist/src/components/Card/OrigamCardHeader.vue +7 -7
- package/dist/src/components/Carousel/OrigamCarousel.vue +14 -1
- package/dist/src/components/Chart/OrigamChartBoxPlot.vue +1 -1
- package/dist/src/components/Chart/OrigamChartBullet.vue +3 -2
- package/dist/src/components/Chart/OrigamChartCandlestick.vue +2 -2
- package/dist/src/components/Chart/OrigamChartCartesian.vue +49 -4
- package/dist/src/components/Chart/OrigamChartLegend.vue +39 -18
- package/dist/src/components/Chart/OrigamChartPareto.vue +7 -1
- package/dist/src/components/Chart/OrigamChartPictorial.vue +2 -2
- package/dist/src/components/Chart/OrigamChartRadar.vue +3 -1
- package/dist/src/components/Chart/OrigamChartSparkline.vue +3 -1
- package/dist/src/components/Chart/OrigamChartStreamgraph.vue +2 -1
- package/dist/src/components/Checkbox/OrigamCheckbox.vue +2 -0
- package/dist/src/components/Checkbox/OrigamCheckboxGroup.vue +36 -11
- package/dist/src/components/Chip/OrigamChip.vue +19 -4
- package/dist/src/components/Code/OrigamCode.vue +20 -3
- package/dist/src/components/ColorPickerField/OrigamColorPickerField.vue +43 -18
- package/dist/src/components/CommandPalette/OrigamCommandPalette.vue +3 -3
- package/dist/src/components/ConfirmWrapper/OrigamConfirmWrapper.vue +6 -6
- package/dist/src/components/ContextualMenu/OrigamContextualMenu.vue +0 -4
- package/dist/src/components/DataList/OrigamDataList.vue +2 -0
- package/dist/src/components/DataList/OrigamDataText.vue +6 -6
- package/dist/src/components/DataList/OrigamDataTitle.vue +6 -6
- package/dist/src/components/DataTable/OrigamDataTableHeaderCell.vue +1 -1
- package/dist/src/components/DataTable/OrigamDataTableHeadersCell.vue +4 -1
- package/dist/src/components/DatePicker/OrigamDatePicker.vue +2 -0
- package/dist/src/components/DatePicker/OrigamDatePickerHeader.vue +6 -6
- package/dist/src/components/DatePickerField/OrigamDatePickerField.vue +34 -14
- package/dist/src/components/Dialog/OrigamDialog.vue +25 -0
- package/dist/src/components/Dialog/OrigamDialogConfirmation.vue +6 -0
- package/dist/src/components/ExpansionPanel/OrigamExpansionPanel.vue +2 -0
- package/dist/src/components/ExpansionPanel/OrigamExpansionPanelHeader.vue +6 -6
- package/dist/src/components/Field/OrigamField.vue +83 -28
- package/dist/src/components/FileField/OrigamFileField.vue +20 -15
- package/dist/src/components/Icon/OrigamSvgIcon.vue +3 -1
- package/dist/src/components/Img/OrigamImg.vue +9 -2
- package/dist/src/components/InfiniteScroll/OrigamInfiniteScroll.vue +34 -18
- package/dist/src/components/InlineEdit/OrigamInlineEdit.vue +46 -5
- package/dist/src/components/Input/OrigamInput.vue +6 -6
- package/dist/src/components/List/OrigamListGroup.vue +4 -0
- package/dist/src/components/List/OrigamListItem.vue +68 -4
- package/dist/src/components/Masonry/OrigamMasonry.vue +19 -3
- package/dist/src/components/Menu/OrigamMenu.vue +79 -9
- package/dist/src/components/NumberField/OrigamNumberField.vue +26 -16
- package/dist/src/components/OtpInputField/OrigamOtpInputField.vue +48 -24
- package/dist/src/components/PasswordField/OrigamPasswordField.vue +20 -15
- package/dist/src/components/Radio/OrigamRadio.vue +2 -0
- package/dist/src/components/Radio/OrigamRadioGroup.vue +36 -11
- package/dist/src/components/RatingField/OrigamRatingField.vue +58 -7
- package/dist/src/components/RatingField/OrigamRatingFieldItem.vue +78 -30
- package/dist/src/components/Select/OrigamSelect.vue +57 -34
- package/dist/src/components/SliderField/OrigamSliderField.vue +20 -10
- package/dist/src/components/Snackbar/OrigamSnackbarGroup.vue +1 -1
- package/dist/src/components/Switch/OrigamSwitch.vue +2 -0
- package/dist/src/components/Switch/OrigamSwitchTrack.vue +20 -0
- package/dist/src/components/Tabs/OrigamTab.vue +7 -4
- package/dist/src/components/Tabs/OrigamTabPanel.vue +4 -2
- package/dist/src/components/Tabs/OrigamTabs.vue +7 -5
- package/dist/src/components/TextField/OrigamTextField.vue +20 -15
- package/dist/src/components/TextareaField/OrigamTextareaField.vue +20 -15
- package/dist/src/components/Transition/OrigamExpandX.vue +19 -3
- package/dist/src/components/Transition/OrigamExpandY.vue +19 -3
- package/dist/src/components/Transition/OrigamTranslateScale.vue +26 -4
- package/dist/src/components/Video/OrigamVideo.vue +3 -2
- package/dist/src/components/VirtualScroll/OrigamVirtualScroll.vue +1 -1
- package/dist/src/components/Window/OrigamWindow.vue +20 -3
- package/dist/src/composables/Commons/accessibleCommand.composable.cjs +26 -0
- package/dist/src/composables/Commons/accessibleCommand.composable.d.ts +78 -0
- package/dist/src/composables/Commons/accessibleCommand.composable.js +20 -0
- package/dist/src/composables/Commons/activator.composable.cjs +10 -1
- package/dist/src/composables/Commons/activator.composable.js +11 -2
- package/dist/src/composables/Commons/adjacent.composable.cjs +17 -0
- package/dist/src/composables/Commons/adjacent.composable.d.ts +12 -0
- package/dist/src/composables/Commons/adjacent.composable.js +17 -0
- package/dist/src/composables/Commons/adjacentInner.composable.cjs +20 -0
- package/dist/src/composables/Commons/adjacentInner.composable.d.ts +24 -5
- package/dist/src/composables/Commons/adjacentInner.composable.js +20 -0
- package/dist/src/composables/Commons/audio.composable.cjs +14 -1
- package/dist/src/composables/Commons/audio.composable.js +14 -1
- package/dist/src/composables/Commons/backButton.composable.cjs +3 -1
- package/dist/src/composables/Commons/backButton.composable.js +3 -1
- package/dist/src/composables/Commons/border.composable.d.ts +13 -0
- package/dist/src/composables/Commons/colorEffect.composable.cjs +58 -46
- package/dist/src/composables/Commons/colorEffect.composable.d.ts +10 -5
- package/dist/src/composables/Commons/colorEffect.composable.js +70 -46
- package/dist/src/composables/Commons/createLayout.composable.cjs +21 -12
- package/dist/src/composables/Commons/createLayout.composable.js +21 -12
- package/dist/src/composables/Commons/delay.composable.d.ts +16 -0
- package/dist/src/composables/Commons/dimension.composable.d.ts +11 -0
- package/dist/src/composables/Commons/elevation.composable.cjs +6 -2
- package/dist/src/composables/Commons/elevation.composable.d.ts +37 -1
- package/dist/src/composables/Commons/elevation.composable.js +7 -2
- package/dist/src/composables/Commons/goTo.composable.cjs +4 -2
- package/dist/src/composables/Commons/goTo.composable.js +5 -3
- package/dist/src/composables/Commons/group.composable.cjs +14 -14
- package/dist/src/composables/Commons/group.composable.js +14 -14
- package/dist/src/composables/Commons/hotkey.composable.d.ts +18 -7
- package/dist/src/composables/Commons/hydration.composable.d.ts +8 -0
- package/dist/src/composables/Commons/link.composable.d.ts +20 -0
- package/dist/src/composables/Commons/locationStrategies.composable.d.ts +17 -0
- package/dist/src/composables/Commons/message.composable.d.ts +19 -5
- package/dist/src/composables/Commons/position.composable.d.ts +17 -6
- package/dist/src/composables/Commons/refs.composable.d.ts +11 -5
- package/dist/src/composables/Commons/rounded.composable.d.ts +11 -1
- package/dist/src/composables/Commons/scrolling.composable.cjs +15 -12
- package/dist/src/composables/Commons/scrolling.composable.js +15 -12
- package/dist/src/composables/Commons/size.composable.d.ts +15 -0
- package/dist/src/composables/Commons/ssrBoot.composable.cjs +9 -1
- package/dist/src/composables/Commons/ssrBoot.composable.js +10 -2
- package/dist/src/composables/Commons/stack.composable.cjs +13 -1
- package/dist/src/composables/Commons/stack.composable.js +13 -1
- package/dist/src/composables/Commons/theme-props-resolver.composable.cjs +41 -32
- package/dist/src/composables/Commons/theme-props-resolver.composable.js +41 -32
- package/dist/src/composables/Commons/validation.composable.cjs +3 -3
- package/dist/src/composables/Commons/validation.composable.js +3 -3
- package/dist/src/composables/Commons/virtual.composable.cjs +24 -8
- package/dist/src/composables/Commons/virtual.composable.js +24 -8
- package/dist/src/composables/Masonry/masonry.composable.cjs +18 -11
- package/dist/src/composables/Masonry/masonry.composable.js +18 -11
- package/dist/src/composables/Parallax/parallax.composable.cjs +1 -1
- package/dist/src/composables/Parallax/parallax.composable.js +1 -1
- package/dist/src/composables/index.cjs +36 -0
- package/dist/src/composables/index.d.ts +3 -0
- package/dist/src/composables/index.js +3 -0
- package/dist/src/consts/Chart/chart-cartesian.const.cjs +5 -2
- package/dist/src/consts/Chart/chart-cartesian.const.d.ts +42 -0
- package/dist/src/consts/Chart/chart-cartesian.const.js +3 -0
- package/dist/src/consts/Commons/border.const.cjs +2 -1
- package/dist/src/consts/Commons/border.const.d.ts +19 -0
- package/dist/src/consts/Commons/border.const.js +15 -0
- package/dist/src/consts/Commons/elevation.const.cjs +5 -1
- package/dist/src/consts/Commons/elevation.const.d.ts +52 -2
- package/dist/src/consts/Commons/elevation.const.js +4 -0
- package/dist/src/consts/Commons/ripple.const.cjs +13 -3
- package/dist/src/consts/Commons/ripple.const.js +13 -3
- package/dist/src/consts/RatingField/rating-field.const.cjs +10 -0
- package/dist/src/consts/RatingField/rating-field.const.d.ts +36 -0
- package/dist/src/consts/RatingField/rating-field.const.js +12 -0
- package/dist/src/consts/index.cjs +11 -0
- package/dist/src/consts/index.d.ts +1 -0
- package/dist/src/consts/index.js +1 -0
- package/dist/src/directives/ClickOutside/clickOutside.directive.cjs +2 -0
- package/dist/src/directives/ClickOutside/clickOutside.directive.js +2 -0
- package/dist/src/directives/Ripple/ripple.directive.cjs +2 -0
- package/dist/src/directives/Ripple/ripple.directive.js +2 -0
- package/dist/src/enums/Commons/color.enum.cjs +0 -1
- package/dist/src/enums/Commons/color.enum.d.ts +14 -5
- package/dist/src/enums/Commons/color.enum.js +0 -1
- package/dist/src/enums/Sheet/sheet.enum.d.ts +1 -1
- package/dist/src/interfaces/Chart/chart-cartesian.interface.d.ts +6 -2
- package/dist/src/interfaces/Commons/activator.interface.d.ts +3 -2
- package/dist/src/interfaces/Commons/adjacent.interface.d.ts +29 -0
- package/dist/src/interfaces/Commons/group.interface.d.ts +13 -2
- package/dist/src/interfaces/Commons/ripple.interface.d.ts +16 -0
- package/dist/src/interfaces/Commons/scroll.interface.d.ts +3 -2
- package/dist/src/interfaces/DataTable/data-table-header.interface.d.ts +2 -2
- package/dist/src/interfaces/DatePicker/date-picker-month.interface.d.ts +2 -1
- package/dist/src/interfaces/Field/field.interface.d.ts +21 -1
- package/dist/src/interfaces/Menu/menu.interface.d.ts +28 -1
- package/dist/src/interfaces/OtpInputField/otp-input-field.interface.d.ts +21 -1
- package/dist/src/interfaces/RatingField/rating-field-item.interface.d.ts +16 -1
- package/dist/src/interfaces/index.cjs +11 -0
- package/dist/src/interfaces/index.d.ts +1 -0
- package/dist/src/interfaces/index.js +1 -0
- package/dist/src/themes/origam.theme.cjs +8 -14
- package/dist/src/themes/origam.theme.js +6 -8
- package/dist/src/types/Commons/color.type.d.ts +4 -3
- package/dist/src/types/Commons/commons.type.d.ts +33 -0
- package/dist/src/types/Commons/theme.type.d.ts +2 -1
- package/dist/src/types/Sheet/sheet.type.d.ts +2 -1
- package/dist/src/types/index.cjs +22 -0
- package/dist/src/types/index.d.ts +2 -0
- package/dist/src/types/index.js +2 -0
- package/dist/src/types/tokens.type.d.ts +1 -1
- package/dist/src/utils/Commons/a11y.util.cjs +35 -0
- package/dist/src/utils/Commons/a11y.util.d.ts +63 -0
- package/dist/src/utils/Commons/a11y.util.js +33 -0
- package/dist/src/utils/Commons/clickOutside.util.cjs +5 -1
- package/dist/src/utils/Commons/clickOutside.util.js +5 -1
- package/dist/src/utils/Commons/color.util.cjs +10 -5
- package/dist/src/utils/Commons/color.util.d.ts +34 -5
- package/dist/src/utils/Commons/color.util.js +9 -5
- package/dist/src/utils/Commons/goTo.util.cjs +31 -14
- package/dist/src/utils/Commons/goTo.util.d.ts +1 -1
- package/dist/src/utils/Commons/goTo.util.js +31 -16
- package/dist/src/utils/Commons/location.util.cjs +18 -3
- package/dist/src/utils/Commons/location.util.js +18 -3
- package/dist/src/utils/Commons/ripple.util.cjs +5 -1
- package/dist/src/utils/Commons/ripple.util.js +5 -1
- package/dist/src/utils/index.cjs +11 -0
- package/dist/src/utils/index.d.ts +1 -0
- package/dist/src/utils/index.js +1 -0
- package/package.json +13 -2
- package/dist/src/types/Commons/locale.type.cjs +0 -1
- package/dist/src/types/Commons/locale.type.d.ts +0 -0
- package/dist/src/types/Commons/locale.type.js +0 -0
|
@@ -12,8 +12,7 @@
|
|
|
12
12
|
<div
|
|
13
13
|
key="prepend"
|
|
14
14
|
class="origam-date-picker-header__prepend"
|
|
15
|
-
|
|
16
|
-
:tabindex="isPrependClickable ? 0 : undefined"
|
|
15
|
+
v-bind="prependCommandAttrs"
|
|
17
16
|
@click="handleClickPrepend"
|
|
18
17
|
@keydown="handleKeydownPrepend"
|
|
19
18
|
>
|
|
@@ -54,8 +53,7 @@
|
|
|
54
53
|
<div
|
|
55
54
|
key="append"
|
|
56
55
|
class="origam-date-picker-header__append"
|
|
57
|
-
|
|
58
|
-
:tabindex="isAppendClickable ? 0 : undefined"
|
|
56
|
+
v-bind="appendCommandAttrs"
|
|
59
57
|
@click="handleClickAppend"
|
|
60
58
|
@keydown="handleKeydownAppend"
|
|
61
59
|
>
|
|
@@ -102,6 +100,8 @@ const props = defineProps({
|
|
|
102
100
|
appendIcon: { type: null, required: false },
|
|
103
101
|
prependAvatar: { type: String, required: false },
|
|
104
102
|
prependIcon: { type: null, required: false },
|
|
103
|
+
prependAriaLabel: { type: String, required: false },
|
|
104
|
+
appendAriaLabel: { type: String, required: false },
|
|
105
105
|
density: { type: null, required: false }
|
|
106
106
|
});
|
|
107
107
|
const emits = defineEmits(["click"]);
|
|
@@ -117,8 +117,8 @@ const {
|
|
|
117
117
|
onClickAppend: handleClickAppend,
|
|
118
118
|
onKeydownPrepend: handleKeydownPrepend,
|
|
119
119
|
onKeydownAppend: handleKeydownAppend,
|
|
120
|
-
|
|
121
|
-
|
|
120
|
+
prependCommandAttrs,
|
|
121
|
+
appendCommandAttrs,
|
|
122
122
|
hasAppend,
|
|
123
123
|
hasPrepend
|
|
124
124
|
} = useAdjacent(props, toRef(props, "prependIcon"), toRef(props, "appendIcon"));
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
@blur="handleBlur"
|
|
17
17
|
@change="handleChange"
|
|
18
18
|
@click:clear="handleClear"
|
|
19
|
+
@input="handleInput"
|
|
19
20
|
@mousedown:control="handleMousedownControl"
|
|
20
21
|
>
|
|
21
22
|
<template
|
|
@@ -244,6 +245,21 @@ const props = defineProps({
|
|
|
244
245
|
prependInnerIcon: { type: null, required: false },
|
|
245
246
|
clearIcon: { type: null, required: false },
|
|
246
247
|
clearable: { type: Boolean, required: false },
|
|
248
|
+
prependInnerAriaLabel: { type: String, required: false },
|
|
249
|
+
appendInnerAriaLabel: { type: String, required: false },
|
|
250
|
+
border: { type: [Boolean, Number, String, Array], required: false, skipCheck: true, default: true },
|
|
251
|
+
borderTop: { type: [Boolean, Number, String], required: false },
|
|
252
|
+
borderLeft: { type: [Boolean, Number, String], required: false },
|
|
253
|
+
borderBottom: { type: [Boolean, Number, String], required: false },
|
|
254
|
+
borderRight: { type: [Boolean, Number, String], required: false },
|
|
255
|
+
borderBlock: { type: [Boolean, Number, String], required: false },
|
|
256
|
+
borderInline: { type: [Boolean, Number, String], required: false },
|
|
257
|
+
borderColor: { type: String, required: false },
|
|
258
|
+
borderStyle: { type: String, required: false },
|
|
259
|
+
borderTopColor: { type: [String, Object, Boolean, null], required: false, skipCheck: true },
|
|
260
|
+
borderRightColor: { type: [String, Object, Boolean, null], required: false, skipCheck: true },
|
|
261
|
+
borderBottomColor: { type: [String, Object, Boolean, null], required: false, skipCheck: true },
|
|
262
|
+
borderLeftColor: { type: [String, Object, Boolean, null], required: false, skipCheck: true },
|
|
247
263
|
focused: { type: Boolean, required: false },
|
|
248
264
|
text: { type: String, required: false },
|
|
249
265
|
floating: { type: Boolean, required: false },
|
|
@@ -262,19 +278,6 @@ const props = defineProps({
|
|
|
262
278
|
paddingRight: { type: [Boolean, Number, String], required: false },
|
|
263
279
|
paddingBlock: { type: [Boolean, Number, String], required: false },
|
|
264
280
|
paddingInline: { type: [Boolean, Number, String], required: false },
|
|
265
|
-
border: { type: [Boolean, Number, String, Array], required: false, skipCheck: true, default: true },
|
|
266
|
-
borderTop: { type: [Boolean, Number, String], required: false },
|
|
267
|
-
borderLeft: { type: [Boolean, Number, String], required: false },
|
|
268
|
-
borderBottom: { type: [Boolean, Number, String], required: false },
|
|
269
|
-
borderRight: { type: [Boolean, Number, String], required: false },
|
|
270
|
-
borderBlock: { type: [Boolean, Number, String], required: false },
|
|
271
|
-
borderInline: { type: [Boolean, Number, String], required: false },
|
|
272
|
-
borderColor: { type: String, required: false },
|
|
273
|
-
borderStyle: { type: String, required: false },
|
|
274
|
-
borderTopColor: { type: [String, Object, Boolean, null], required: false, skipCheck: true },
|
|
275
|
-
borderRightColor: { type: [String, Object, Boolean, null], required: false, skipCheck: true },
|
|
276
|
-
borderBottomColor: { type: [String, Object, Boolean, null], required: false, skipCheck: true },
|
|
277
|
-
borderLeftColor: { type: [String, Object, Boolean, null], required: false, skipCheck: true },
|
|
278
281
|
rounded: { type: [Boolean, Number, String, null], required: false, skipCheck: true, default: true },
|
|
279
282
|
roundedTopRight: { type: [Boolean, Number, String], required: false },
|
|
280
283
|
roundedTopLeft: { type: [Boolean, Number, String], required: false },
|
|
@@ -312,6 +315,8 @@ const props = defineProps({
|
|
|
312
315
|
appendIcon: { type: null, required: false },
|
|
313
316
|
prependAvatar: { type: String, required: false },
|
|
314
317
|
prependIcon: { type: null, required: false },
|
|
318
|
+
prependAriaLabel: { type: String, required: false },
|
|
319
|
+
appendAriaLabel: { type: String, required: false },
|
|
315
320
|
transition: { type: [Boolean, String, Object], required: false, default: () => ({ component: OrigamTranslateScale }) }
|
|
316
321
|
});
|
|
317
322
|
defineEmits(["update:menu", "update:modelValue"]);
|
|
@@ -373,6 +378,17 @@ const isMultiple = computed(() => {
|
|
|
373
378
|
const isRange = computed(() => {
|
|
374
379
|
return props.range && model.value.length > 1;
|
|
375
380
|
});
|
|
381
|
+
const commitTypedDate = (raw) => {
|
|
382
|
+
if (props.multiple || props.range) return;
|
|
383
|
+
if (raw === "") {
|
|
384
|
+
model.value = [];
|
|
385
|
+
return;
|
|
386
|
+
}
|
|
387
|
+
const parsed = adapter.date(raw);
|
|
388
|
+
if (!parsed || !adapter.isValid(parsed)) return;
|
|
389
|
+
if (adapter.format(parsed, "keyboardDate") !== raw) return;
|
|
390
|
+
model.value = [adapter.toISO(parsed)];
|
|
391
|
+
};
|
|
376
392
|
const isFocused = shallowRef(false);
|
|
377
393
|
const form = inject(ORIGAM_FORM_KEY, null);
|
|
378
394
|
const menuDisabled = computed(() => {
|
|
@@ -419,8 +435,12 @@ const handleBlur = (e) => {
|
|
|
419
435
|
isFocused.value = true;
|
|
420
436
|
}
|
|
421
437
|
};
|
|
422
|
-
const
|
|
438
|
+
const handleInput = (e) => {
|
|
439
|
+
commitTypedDate(e.target?.value ?? "");
|
|
440
|
+
};
|
|
441
|
+
const handleChange = (e) => {
|
|
423
442
|
if (matchesSelector(origamTextFieldRef.value, ":autofill") || matchesSelector(origamTextFieldRef.value, ":-webkit-autofill")) {
|
|
443
|
+
commitTypedDate(e.target?.value ?? "");
|
|
424
444
|
}
|
|
425
445
|
};
|
|
426
446
|
const handleAfterLeave = () => {
|
|
@@ -266,6 +266,8 @@ const props = defineProps({
|
|
|
266
266
|
appendIcon: { type: null, required: false },
|
|
267
267
|
prependAvatar: { type: String, required: false },
|
|
268
268
|
prependIcon: { type: null, required: false },
|
|
269
|
+
prependAriaLabel: { type: String, required: false },
|
|
270
|
+
appendAriaLabel: { type: String, required: false },
|
|
269
271
|
active: { type: [Boolean, Object], required: false },
|
|
270
272
|
activeClass: { type: String, required: false },
|
|
271
273
|
status: { type: null, required: false },
|
|
@@ -398,6 +400,29 @@ defineExpose(forwardRefs({
|
|
|
398
400
|
border-radius: var(--origam-dialog---border-radius, 12px);
|
|
399
401
|
box-shadow: var(--origam-dialog---box-shadow);
|
|
400
402
|
|
|
403
|
+
// #563 — la boite qui porte le PLAFOND doit porter le DEFILEMENT.
|
|
404
|
+
//
|
|
405
|
+
// `.origam-overlay__content` est `position: absolute` et de hauteur
|
|
406
|
+
// AUTO : le `max-height: 100%` pose plus bas sur `.origam-card` se
|
|
407
|
+
// resout donc en `none` (pourcentage contre un parent sans hauteur
|
|
408
|
+
// definie). La carte grandit sans plafond, et cette boite la laissait
|
|
409
|
+
// deborder en `overflow: visible`. Mesure Chromium sur `develop`,
|
|
410
|
+
// dialogue Design + 900px injectes dans `#footer` :
|
|
411
|
+
//
|
|
412
|
+
// .origam-card overflow hidden clientH 1047 scrollH 1047 -> ne defile pas
|
|
413
|
+
// .origam-overlay__content visible -> ne rogne pas
|
|
414
|
+
// document -> bloque (scrollStrategy 'block')
|
|
415
|
+
// => pied du dialogue 459px SOUS le viewport, aucun recours.
|
|
416
|
+
//
|
|
417
|
+
// Contrairement a ce que decrit le ticket, `.origam-card__content`
|
|
418
|
+
// ne defilait pas davantage : sans hauteur definie en amont il
|
|
419
|
+
// grandit lui aussi (clientH 1647 === scrollH 1647). AUCUNE boite du
|
|
420
|
+
// dialogue ne defilait.
|
|
421
|
+
//
|
|
422
|
+
// La branche `&--fullscreen` ci-dessous pose deja exactement cette
|
|
423
|
+
// declaration : ceci aligne le mode par defaut sur elle.
|
|
424
|
+
overflow-y: auto;
|
|
425
|
+
|
|
401
426
|
&,
|
|
402
427
|
> form {
|
|
403
428
|
> .origam-card {
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
:id="id"
|
|
4
4
|
ref="origamDialogRef"
|
|
5
5
|
v-model="isActive"
|
|
6
|
+
:class="rootClasses"
|
|
7
|
+
:style="rootStyles"
|
|
6
8
|
v-bind="dialogProps"
|
|
7
9
|
@is-read="handleIsRead"
|
|
8
10
|
>
|
|
@@ -240,6 +242,8 @@ const props = defineProps({
|
|
|
240
242
|
appendIcon: { type: null, required: false },
|
|
241
243
|
prependAvatar: { type: String, required: false },
|
|
242
244
|
prependIcon: { type: null, required: false },
|
|
245
|
+
prependAriaLabel: { type: String, required: false },
|
|
246
|
+
appendAriaLabel: { type: String, required: false },
|
|
243
247
|
active: { type: [Boolean, Object], required: false },
|
|
244
248
|
activeClass: { type: String, required: false },
|
|
245
249
|
status: { type: null, required: false },
|
|
@@ -256,6 +260,8 @@ const origamDialogRef = ref();
|
|
|
256
260
|
const slots = useSlots();
|
|
257
261
|
const isActive = useVModel(props, "modelValue");
|
|
258
262
|
const validatable = ref(false);
|
|
263
|
+
const rootClasses = computed(() => [props.class]);
|
|
264
|
+
const rootStyles = computed(() => props.style);
|
|
259
265
|
const dialogProps = computed(() => {
|
|
260
266
|
return origamDialogRef.value?.filterProps(props, ["class", "style", "id", "modelValue"]);
|
|
261
267
|
});
|
|
@@ -175,6 +175,8 @@ const props = defineProps({
|
|
|
175
175
|
appendIcon: { type: null, required: false },
|
|
176
176
|
prependAvatar: { type: String, required: false },
|
|
177
177
|
prependIcon: { type: null, required: false },
|
|
178
|
+
prependAriaLabel: { type: String, required: false },
|
|
179
|
+
appendAriaLabel: { type: String, required: false },
|
|
178
180
|
ripple: { type: [Boolean, Object], required: false },
|
|
179
181
|
active: { type: [Boolean, Object], required: false },
|
|
180
182
|
activeClass: { type: String, required: false },
|
|
@@ -20,8 +20,7 @@
|
|
|
20
20
|
v-if="hasPrepend"
|
|
21
21
|
key="prepend"
|
|
22
22
|
class="origam-expansion-panel-header__prepend"
|
|
23
|
-
|
|
24
|
-
:tabindex="isPrependClickable ? 0 : undefined"
|
|
23
|
+
v-bind="prependCommandAttrs"
|
|
25
24
|
@click="handleClickPrepend"
|
|
26
25
|
@keydown="handleKeydownPrepend"
|
|
27
26
|
>
|
|
@@ -65,8 +64,7 @@
|
|
|
65
64
|
v-if="hasAppend || !hideActions"
|
|
66
65
|
key="append"
|
|
67
66
|
class="origam-expansion-panel-header__append"
|
|
68
|
-
|
|
69
|
-
:tabindex="isAppendClickable ? 0 : undefined"
|
|
67
|
+
v-bind="appendCommandAttrs"
|
|
70
68
|
@click="handleClickAppend"
|
|
71
69
|
@keydown="handleKeydownAppend"
|
|
72
70
|
>
|
|
@@ -163,6 +161,8 @@ const props = defineProps({
|
|
|
163
161
|
appendIcon: { type: null, required: false },
|
|
164
162
|
prependAvatar: { type: String, required: false },
|
|
165
163
|
prependIcon: { type: null, required: false },
|
|
164
|
+
prependAriaLabel: { type: String, required: false },
|
|
165
|
+
appendAriaLabel: { type: String, required: false },
|
|
166
166
|
ripple: { type: [Boolean, Object], required: false },
|
|
167
167
|
active: { type: [Boolean, Object], required: false },
|
|
168
168
|
activeClass: { type: String, required: false },
|
|
@@ -207,8 +207,8 @@ const hasTitle = computed(() => {
|
|
|
207
207
|
const {
|
|
208
208
|
hasAppend,
|
|
209
209
|
hasPrepend,
|
|
210
|
-
|
|
211
|
-
|
|
210
|
+
prependCommandAttrs,
|
|
211
|
+
appendCommandAttrs,
|
|
212
212
|
onClickPrepend: handleClickPrepend,
|
|
213
213
|
onClickAppend: handleClickAppend,
|
|
214
214
|
onKeydownPrepend: handleKeydownPrepend,
|
|
@@ -40,8 +40,7 @@
|
|
|
40
40
|
v-if="hasPrependInner"
|
|
41
41
|
key="prependInner"
|
|
42
42
|
class="origam-field__prepend-inner"
|
|
43
|
-
|
|
44
|
-
:tabindex="isPrependInnerClickable ? 0 : undefined"
|
|
43
|
+
v-bind="prependInnerCommandAttrs"
|
|
45
44
|
@click="handleClickPrependInner"
|
|
46
45
|
@keydown="handleKeydownPrependInner"
|
|
47
46
|
>
|
|
@@ -129,8 +128,7 @@
|
|
|
129
128
|
v-if="hasAppendInner"
|
|
130
129
|
key="appendInner"
|
|
131
130
|
class="origam-field__append-inner"
|
|
132
|
-
|
|
133
|
-
:tabindex="isAppendInnerClickable ? 0 : undefined"
|
|
131
|
+
v-bind="appendInnerCommandAttrs"
|
|
134
132
|
@click="handleClickAppendInner"
|
|
135
133
|
@keydown="handleKeydownAppendInner"
|
|
136
134
|
>
|
|
@@ -174,7 +172,7 @@
|
|
|
174
172
|
</template>
|
|
175
173
|
|
|
176
174
|
<script lang="ts" setup>
|
|
177
|
-
import { computed, onMounted, ref, StyleValue, useAttrs, useSlots, watch } from "vue";
|
|
175
|
+
import { computed, onBeforeUnmount, onMounted, ref, StyleValue, useAttrs, useSlots, watch } from "vue";
|
|
178
176
|
import OrigamAvatar from "../Avatar/OrigamAvatar.vue";
|
|
179
177
|
import OrigamExpandX from "../Transition/OrigamExpandX.vue";
|
|
180
178
|
import OrigamIcon from "../Icon/OrigamIcon.vue";
|
|
@@ -182,6 +180,7 @@ import OrigamLabel from "../Label/OrigamLabel.vue";
|
|
|
182
180
|
import OrigamProgress from "../Progress/OrigamProgress.vue";
|
|
183
181
|
import OrigamSkeleton from "../Skeleton/OrigamSkeleton.vue";
|
|
184
182
|
import { useAdjacentInner } from "../../composables/Commons/adjacentInner.composable";
|
|
183
|
+
import { useBorder } from "../../composables/Commons/border.composable";
|
|
185
184
|
import { useBothColor } from "../../composables/Commons/bothColor.composable";
|
|
186
185
|
import { useDensity } from "../../composables/Commons/density.composable";
|
|
187
186
|
import { useFocus } from "../../composables/Commons/focus.composable";
|
|
@@ -195,6 +194,7 @@ import { useStateFlag } from "../../composables/Commons/stateFlag.composable";
|
|
|
195
194
|
import { useStyle } from "../../composables/Commons/style.composable";
|
|
196
195
|
import { useTypography } from "../../composables/Commons/typography.composable";
|
|
197
196
|
import { useVariant } from "../../composables/Commons/variant.composable";
|
|
197
|
+
import { IN_BROWSER } from "../../consts/Commons/commons.const";
|
|
198
198
|
import vContrast from "../../directives/Contrast/contrast.directive";
|
|
199
199
|
import { DENSITY } from "../../enums/Commons/density.enum";
|
|
200
200
|
import { EASING } from "../../enums/Transition/transition.enum";
|
|
@@ -232,6 +232,21 @@ const props = defineProps({
|
|
|
232
232
|
prependInnerIcon: { type: null, required: false },
|
|
233
233
|
clearIcon: { type: null, required: false, default: MDI_ICONS.CLOSE_CIRCLE_OUTLINE },
|
|
234
234
|
clearable: { type: Boolean, required: false },
|
|
235
|
+
prependInnerAriaLabel: { type: String, required: false },
|
|
236
|
+
appendInnerAriaLabel: { type: String, required: false },
|
|
237
|
+
border: { type: [Boolean, Number, String, Array], required: false, skipCheck: true },
|
|
238
|
+
borderTop: { type: [Boolean, Number, String], required: false },
|
|
239
|
+
borderLeft: { type: [Boolean, Number, String], required: false },
|
|
240
|
+
borderBottom: { type: [Boolean, Number, String], required: false },
|
|
241
|
+
borderRight: { type: [Boolean, Number, String], required: false },
|
|
242
|
+
borderBlock: { type: [Boolean, Number, String], required: false },
|
|
243
|
+
borderInline: { type: [Boolean, Number, String], required: false },
|
|
244
|
+
borderColor: { type: String, required: false },
|
|
245
|
+
borderStyle: { type: String, required: false },
|
|
246
|
+
borderTopColor: { type: [String, Object, Boolean, null], required: false, skipCheck: true },
|
|
247
|
+
borderRightColor: { type: [String, Object, Boolean, null], required: false, skipCheck: true },
|
|
248
|
+
borderBottomColor: { type: [String, Object, Boolean, null], required: false, skipCheck: true },
|
|
249
|
+
borderLeftColor: { type: [String, Object, Boolean, null], required: false, skipCheck: true },
|
|
235
250
|
focused: { type: Boolean, required: false },
|
|
236
251
|
density: { type: null, required: false, default: DENSITY.DEFAULT },
|
|
237
252
|
text: { type: String, required: false },
|
|
@@ -251,19 +266,6 @@ const props = defineProps({
|
|
|
251
266
|
paddingRight: { type: [Boolean, Number, String], required: false },
|
|
252
267
|
paddingBlock: { type: [Boolean, Number, String], required: false },
|
|
253
268
|
paddingInline: { type: [Boolean, Number, String], required: false },
|
|
254
|
-
border: { type: [Boolean, Number, String, Array], required: false, skipCheck: true },
|
|
255
|
-
borderTop: { type: [Boolean, Number, String], required: false },
|
|
256
|
-
borderLeft: { type: [Boolean, Number, String], required: false },
|
|
257
|
-
borderBottom: { type: [Boolean, Number, String], required: false },
|
|
258
|
-
borderRight: { type: [Boolean, Number, String], required: false },
|
|
259
|
-
borderBlock: { type: [Boolean, Number, String], required: false },
|
|
260
|
-
borderInline: { type: [Boolean, Number, String], required: false },
|
|
261
|
-
borderColor: { type: String, required: false },
|
|
262
|
-
borderStyle: { type: String, required: false },
|
|
263
|
-
borderTopColor: { type: [String, Object, Boolean, null], required: false, skipCheck: true },
|
|
264
|
-
borderRightColor: { type: [String, Object, Boolean, null], required: false, skipCheck: true },
|
|
265
|
-
borderBottomColor: { type: [String, Object, Boolean, null], required: false, skipCheck: true },
|
|
266
|
-
borderLeftColor: { type: [String, Object, Boolean, null], required: false, skipCheck: true },
|
|
267
269
|
rounded: { type: [Boolean, Number, String, null], required: false, skipCheck: true },
|
|
268
270
|
roundedTopRight: { type: [Boolean, Number, String], required: false },
|
|
269
271
|
roundedTopLeft: { type: [Boolean, Number, String], required: false },
|
|
@@ -285,13 +287,13 @@ const slots = useSlots();
|
|
|
285
287
|
const attrs = useAttrs();
|
|
286
288
|
const { t } = useLocale();
|
|
287
289
|
const {
|
|
290
|
+
prependInnerCommandAttrs,
|
|
291
|
+
appendInnerCommandAttrs,
|
|
288
292
|
hasAppendInner,
|
|
289
293
|
onClickAppendInner: handleClickAppendInner,
|
|
290
294
|
onClickPrependInner: handleClickPrependInner,
|
|
291
295
|
onKeydownAppendInner: handleKeydownAppendInner,
|
|
292
296
|
onKeydownPrependInner: handleKeydownPrependInner,
|
|
293
|
-
isAppendInnerClickable,
|
|
294
|
-
isPrependInnerClickable,
|
|
295
297
|
clickClear: handleClickClear,
|
|
296
298
|
hasPrependInner,
|
|
297
299
|
hasClear
|
|
@@ -400,6 +402,21 @@ const { isOn: active, config: activeState, toggle: handleActive } = useStateFlag
|
|
|
400
402
|
const isActive = computed(() => {
|
|
401
403
|
return props.dirty || active.value || hasPrefix.value || hasSuffix.value;
|
|
402
404
|
});
|
|
405
|
+
const labelFrames = /* @__PURE__ */ new Set();
|
|
406
|
+
let disposed = false;
|
|
407
|
+
const scheduleLabelFrame = (cb) => {
|
|
408
|
+
if (disposed || !IN_BROWSER) return;
|
|
409
|
+
const id2 = requestAnimationFrame(() => {
|
|
410
|
+
labelFrames.delete(id2);
|
|
411
|
+
cb();
|
|
412
|
+
});
|
|
413
|
+
labelFrames.add(id2);
|
|
414
|
+
};
|
|
415
|
+
onBeforeUnmount(() => {
|
|
416
|
+
disposed = true;
|
|
417
|
+
for (const id2 of labelFrames) cancelAnimationFrame(id2);
|
|
418
|
+
labelFrames.clear();
|
|
419
|
+
});
|
|
403
420
|
onMounted(() => {
|
|
404
421
|
watch(isFocused, (newVal, oldVal) => {
|
|
405
422
|
if (newVal !== oldVal) {
|
|
@@ -410,7 +427,7 @@ onMounted(() => {
|
|
|
410
427
|
if (hasLabel.value && newVal !== oldVal) {
|
|
411
428
|
const el = origamLabelRef.value.$el;
|
|
412
429
|
const targetEl = origamFloatingLabelRef.value.$el;
|
|
413
|
-
|
|
430
|
+
scheduleLabelFrame(() => {
|
|
414
431
|
const rect = nullifyTransforms(el);
|
|
415
432
|
const targetRect = targetEl.getBoundingClientRect();
|
|
416
433
|
const x = targetRect.x - rect.x;
|
|
@@ -447,6 +464,7 @@ const bgColor = computed(() => {
|
|
|
447
464
|
return isActive.value && isFocused.value && activeState.value?.bgColor ? activeState.value.bgColor : props.bgColor;
|
|
448
465
|
});
|
|
449
466
|
const { colorClasses, colorStyles } = useBothColor(bgColor, color);
|
|
467
|
+
const { borderStyles } = useBorder(props);
|
|
450
468
|
const { densityClasses } = useDensity(props);
|
|
451
469
|
const {
|
|
452
470
|
roundedClasses,
|
|
@@ -464,11 +482,32 @@ const fieldRadiusVarStyles = computed(() => {
|
|
|
464
482
|
if (!radius) return [];
|
|
465
483
|
return [`--origam-field---border-radius: ${radius.slice("border-radius:".length).trim()}`];
|
|
466
484
|
});
|
|
485
|
+
const fieldBorderVarStyles = computed(() => {
|
|
486
|
+
const declarations = borderStyles.value;
|
|
487
|
+
if (!Array.isArray(declarations)) return [];
|
|
488
|
+
const vars = [];
|
|
489
|
+
const lastValueOf = (property) => {
|
|
490
|
+
const prefix = `${property}:`;
|
|
491
|
+
const match = declarations.filter((declaration) => declaration.startsWith(prefix)).pop();
|
|
492
|
+
return match ? match.slice(prefix.length).trim() : null;
|
|
493
|
+
};
|
|
494
|
+
const width = lastValueOf("border-width");
|
|
495
|
+
const style = lastValueOf("border-style");
|
|
496
|
+
const color2 = lastValueOf("border-color");
|
|
497
|
+
if (width) vars.push(`--origam-field---border-width: ${width}`);
|
|
498
|
+
if (style) vars.push(`--origam-field__outline---border-style: ${style}`);
|
|
499
|
+
if (color2) {
|
|
500
|
+
vars.push(`--origam-field---border-color: ${color2}`);
|
|
501
|
+
vars.push("--origam-field---border-opacity: 1");
|
|
502
|
+
}
|
|
503
|
+
return vars;
|
|
504
|
+
});
|
|
467
505
|
const fieldStyles = computed(() => {
|
|
468
506
|
return [
|
|
469
507
|
colorStyles.value,
|
|
470
508
|
roundedStyles.value,
|
|
471
509
|
fieldRadiusVarStyles.value,
|
|
510
|
+
fieldBorderVarStyles.value,
|
|
472
511
|
elevationStyles.value,
|
|
473
512
|
props.style
|
|
474
513
|
];
|
|
@@ -546,8 +585,23 @@ defineExpose({
|
|
|
546
585
|
// Floor the inline padding at the effective radius (capped at the control
|
|
547
586
|
// height for pills). Prepended fields opt out below — their prepend icon
|
|
548
587
|
// already fills the corner.
|
|
588
|
+
//
|
|
589
|
+
// ⛔ LE PLANCHER EST UN CANAL, PAS UNE EXPRESSION FIGEE (#800).
|
|
590
|
+
// Un champ dont le contenu est CENTRE et sans etiquette (OtpInputField)
|
|
591
|
+
// n'a aucun risque de collision avec le coin : le plancher n'y a pas
|
|
592
|
+
// lieu d'etre, et l'appliquer decentre le chiffre. Ce cas s'exprimait
|
|
593
|
+
// jusqu'ici par un `--origam-field---padding-start: 0` SANS UNITE, qui
|
|
594
|
+
// melange `<number>` et `<length>` dans le `max()` et fait JETER la
|
|
595
|
+
// declaration entiere au computed-value time. Le rendu voulu etait donc
|
|
596
|
+
// obtenu par une erreur CSS — mesure Chromium : mettre l'unite donne
|
|
597
|
+
// `padding-inline-start: 4px` avec `padding-inline-end: 0px`, soit un
|
|
598
|
+
// chiffre decentre de 2px. Un consommateur qui veut vraiment zero met
|
|
599
|
+
// desormais `--origam-field---corner-clearance: 0px` : c'est explicite,
|
|
600
|
+
// ca survit a un refactor du `max()`, et ca ne repose sur rien d'invalide.
|
|
601
|
+
--origam-field---corner-clearance:
|
|
602
|
+
min(var(--origam-field---border-radius, 8px), var(--origam-input__control---height, 36px));
|
|
549
603
|
padding-inline:
|
|
550
|
-
max(var(--origam-field---padding-start),
|
|
604
|
+
max(var(--origam-field---padding-start), var(--origam-field---corner-clearance))
|
|
551
605
|
var(--origam-field---padding-end);
|
|
552
606
|
backdrop-filter: var(--origam-field---backdrop-filter, none);
|
|
553
607
|
-webkit-backdrop-filter: var(--origam-field---backdrop-filter, none);
|
|
@@ -591,7 +645,7 @@ defineExpose({
|
|
|
591
645
|
padding-bottom: var(--origam-field__input---padding-bottom);
|
|
592
646
|
position: relative;
|
|
593
647
|
width: 100%;
|
|
594
|
-
row-gap: calc(8px - var(--origam-input---density,
|
|
648
|
+
row-gap: calc(8px - var(--origam-input---density, 0px));
|
|
595
649
|
border: none;
|
|
596
650
|
background: transparent;
|
|
597
651
|
|
|
@@ -723,9 +777,9 @@ defineExpose({
|
|
|
723
777
|
&__label {
|
|
724
778
|
contain: layout paint;
|
|
725
779
|
display: block;
|
|
726
|
-
margin-inline-start: var(--origam-field__input---padding-start,
|
|
727
|
-
margin-inline-end: var(--origam-field__input---padding-end,
|
|
728
|
-
max-width: calc(100% - var(--origam-field__input---padding-start,
|
|
780
|
+
margin-inline-start: var(--origam-field__input---padding-start, 0px);
|
|
781
|
+
margin-inline-end: var(--origam-field__input---padding-end, 0px);
|
|
782
|
+
max-width: calc(100% - var(--origam-field__input---padding-start, 0px) - var(--origam-field__input---padding-end, 0px));
|
|
729
783
|
pointer-events: none;
|
|
730
784
|
position: absolute;
|
|
731
785
|
top: calc(var(--origam-input---padding-top, 16px) + var(--origam-input---density, 0px) - 8px);
|
|
@@ -755,7 +809,8 @@ defineExpose({
|
|
|
755
809
|
|
|
756
810
|
#{$this}__outline {
|
|
757
811
|
&--start {
|
|
758
|
-
|
|
812
|
+
// Meme plancher que le padding, meme canal — cf. #800.
|
|
813
|
+
flex: 0 0 max(var(--origam-field---padding-start), var(--origam-field---corner-clearance));
|
|
759
814
|
}
|
|
760
815
|
|
|
761
816
|
&--end {
|
|
@@ -1060,7 +1115,7 @@ defineExpose({
|
|
|
1060
1115
|
// label"). Keep the 4px on the inline-end for notch
|
|
1061
1116
|
// breathing room.
|
|
1062
1117
|
margin-block: 0;
|
|
1063
|
-
margin-inline: var(--origam-field__input---padding-start,
|
|
1118
|
+
margin-inline: var(--origam-field__input---padding-start, 0px) 4px;
|
|
1064
1119
|
}
|
|
1065
1120
|
}
|
|
1066
1121
|
|
|
@@ -387,6 +387,7 @@ import OrigamIcon from "../Icon/OrigamIcon.vue";
|
|
|
387
387
|
import OrigamInput from "../Input/OrigamInput.vue";
|
|
388
388
|
import OrigamFileFieldDragNDropItem from "./OrigamFileFieldDragNDropItem.vue";
|
|
389
389
|
import OrigamFileFieldListItem from "./OrigamFileFieldListItem.vue";
|
|
390
|
+
import { BORDER_PROP_KEYS } from "../../consts/Commons/border.const";
|
|
390
391
|
import { useAdjacent } from "../../composables/Commons/adjacent.composable";
|
|
391
392
|
import { useAdjacentInner } from "../../composables/Commons/adjacentInner.composable";
|
|
392
393
|
import { useBothColor } from "../../composables/Commons/bothColor.composable";
|
|
@@ -453,6 +454,21 @@ const props = defineProps({
|
|
|
453
454
|
prependInnerIcon: { type: null, required: false, default: MDI_ICONS.PAPERCLIP },
|
|
454
455
|
clearIcon: { type: null, required: false },
|
|
455
456
|
clearable: { type: Boolean, required: false, default: true },
|
|
457
|
+
prependInnerAriaLabel: { type: String, required: false },
|
|
458
|
+
appendInnerAriaLabel: { type: String, required: false },
|
|
459
|
+
border: { type: [Boolean, Number, String, Array], required: false, skipCheck: true, default: true },
|
|
460
|
+
borderTop: { type: [Boolean, Number, String], required: false },
|
|
461
|
+
borderLeft: { type: [Boolean, Number, String], required: false },
|
|
462
|
+
borderBottom: { type: [Boolean, Number, String], required: false },
|
|
463
|
+
borderRight: { type: [Boolean, Number, String], required: false },
|
|
464
|
+
borderBlock: { type: [Boolean, Number, String], required: false },
|
|
465
|
+
borderInline: { type: [Boolean, Number, String], required: false },
|
|
466
|
+
borderColor: { type: String, required: false },
|
|
467
|
+
borderStyle: { type: String, required: false },
|
|
468
|
+
borderTopColor: { type: [String, Object, Boolean, null], required: false, skipCheck: true },
|
|
469
|
+
borderRightColor: { type: [String, Object, Boolean, null], required: false, skipCheck: true },
|
|
470
|
+
borderBottomColor: { type: [String, Object, Boolean, null], required: false, skipCheck: true },
|
|
471
|
+
borderLeftColor: { type: [String, Object, Boolean, null], required: false, skipCheck: true },
|
|
456
472
|
focused: { type: Boolean, required: false },
|
|
457
473
|
text: { type: String, required: false },
|
|
458
474
|
floating: { type: Boolean, required: false },
|
|
@@ -471,19 +487,6 @@ const props = defineProps({
|
|
|
471
487
|
paddingRight: { type: [Boolean, Number, String], required: false },
|
|
472
488
|
paddingBlock: { type: [Boolean, Number, String], required: false },
|
|
473
489
|
paddingInline: { type: [Boolean, Number, String], required: false },
|
|
474
|
-
border: { type: [Boolean, Number, String, Array], required: false, skipCheck: true, default: true },
|
|
475
|
-
borderTop: { type: [Boolean, Number, String], required: false },
|
|
476
|
-
borderLeft: { type: [Boolean, Number, String], required: false },
|
|
477
|
-
borderBottom: { type: [Boolean, Number, String], required: false },
|
|
478
|
-
borderRight: { type: [Boolean, Number, String], required: false },
|
|
479
|
-
borderBlock: { type: [Boolean, Number, String], required: false },
|
|
480
|
-
borderInline: { type: [Boolean, Number, String], required: false },
|
|
481
|
-
borderColor: { type: String, required: false },
|
|
482
|
-
borderStyle: { type: String, required: false },
|
|
483
|
-
borderTopColor: { type: [String, Object, Boolean, null], required: false, skipCheck: true },
|
|
484
|
-
borderRightColor: { type: [String, Object, Boolean, null], required: false, skipCheck: true },
|
|
485
|
-
borderBottomColor: { type: [String, Object, Boolean, null], required: false, skipCheck: true },
|
|
486
|
-
borderLeftColor: { type: [String, Object, Boolean, null], required: false, skipCheck: true },
|
|
487
490
|
rounded: { type: [Boolean, Number, String, null], required: false, skipCheck: true, default: true },
|
|
488
491
|
roundedTopRight: { type: [Boolean, Number, String], required: false },
|
|
489
492
|
roundedTopLeft: { type: [Boolean, Number, String], required: false },
|
|
@@ -519,7 +522,9 @@ const props = defineProps({
|
|
|
519
522
|
appendAvatar: { type: String, required: false },
|
|
520
523
|
appendIcon: { type: null, required: false },
|
|
521
524
|
prependAvatar: { type: String, required: false },
|
|
522
|
-
prependIcon: { type: null, required: false }
|
|
525
|
+
prependIcon: { type: null, required: false },
|
|
526
|
+
prependAriaLabel: { type: String, required: false },
|
|
527
|
+
appendAriaLabel: { type: String, required: false }
|
|
523
528
|
});
|
|
524
529
|
const isDropzoneMode = computed(() => Boolean(props.dropzone || props.dragndrop));
|
|
525
530
|
const displayMode = computed(() => {
|
|
@@ -740,7 +745,7 @@ const dropzoneSubtitleText = computed(() => {
|
|
|
740
745
|
});
|
|
741
746
|
const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
|
|
742
747
|
const inputProps = computed(() => {
|
|
743
|
-
return origamInputRef.value?.filterProps(props, ["modelValue", "class", "style", "focused"]);
|
|
748
|
+
return origamInputRef.value?.filterProps(props, ["modelValue", "class", "style", "focused", ...BORDER_PROP_KEYS]);
|
|
744
749
|
});
|
|
745
750
|
const fieldProps = computed(() => {
|
|
746
751
|
return origamFieldRef.value?.filterProps(props, ["class", "style", "id", "active", "dirty", "disabled", "focused", "error"]);
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
:style="iconStyles"
|
|
7
7
|
>
|
|
8
8
|
<svg
|
|
9
|
-
aria-hidden="
|
|
9
|
+
:aria-hidden="ariaHidden"
|
|
10
10
|
class="origam-icon__svg"
|
|
11
11
|
focusable="false"
|
|
12
12
|
viewBox="0 0 24 24"
|
|
@@ -40,6 +40,7 @@ import { computed, StyleValue, toRef } from "vue";
|
|
|
40
40
|
import { useBorder } from "../../composables/Commons/border.composable";
|
|
41
41
|
import { useBothColor } from "../../composables/Commons/bothColor.composable";
|
|
42
42
|
import { useDimension } from "../../composables/Commons/dimension.composable";
|
|
43
|
+
import { useIconAccessibility } from "../../composables/Icon/iconAccessibility.composable";
|
|
43
44
|
import { useMargin } from "../../composables/Commons/margin.composable";
|
|
44
45
|
import { usePadding } from "../../composables/Commons/padding.composable";
|
|
45
46
|
import { useProps } from "../../composables/Commons/props.composable";
|
|
@@ -101,6 +102,7 @@ defineSlots();
|
|
|
101
102
|
const isArray = (data) => {
|
|
102
103
|
return Array.isArray(data);
|
|
103
104
|
};
|
|
105
|
+
const { ariaHidden } = useIconAccessibility();
|
|
104
106
|
const { colorClasses, colorStyles } = useBothColor(toRef(props, "bgColor"), toRef(props, "color"));
|
|
105
107
|
const { borderClasses, borderStyles } = useBorder(props);
|
|
106
108
|
const { paddingClasses, paddingStyles } = usePadding(props);
|
|
@@ -260,8 +260,11 @@ const getSrc = () => {
|
|
|
260
260
|
if (img) currentSrc.value = img.currentSrc || img.src;
|
|
261
261
|
};
|
|
262
262
|
let timer = -1;
|
|
263
|
+
const bootFrames = /* @__PURE__ */ new Set();
|
|
263
264
|
onBeforeUnmount(() => {
|
|
264
265
|
clearTimeout(timer);
|
|
266
|
+
for (const id2 of bootFrames) cancelAnimationFrame(id2);
|
|
267
|
+
bootFrames.clear();
|
|
265
268
|
});
|
|
266
269
|
const pollForSize = (img, timeout = 100) => {
|
|
267
270
|
const poll = () => {
|
|
@@ -285,11 +288,15 @@ let stop = null;
|
|
|
285
288
|
const markBooted = (val) => {
|
|
286
289
|
if (val) {
|
|
287
290
|
if (IN_BROWSER) {
|
|
288
|
-
requestAnimationFrame(() => {
|
|
289
|
-
|
|
291
|
+
const outer = requestAnimationFrame(() => {
|
|
292
|
+
bootFrames.delete(outer);
|
|
293
|
+
const inner = requestAnimationFrame(() => {
|
|
294
|
+
bootFrames.delete(inner);
|
|
290
295
|
isBooted.value = true;
|
|
291
296
|
});
|
|
297
|
+
bootFrames.add(inner);
|
|
292
298
|
});
|
|
299
|
+
bootFrames.add(outer);
|
|
293
300
|
}
|
|
294
301
|
stop?.();
|
|
295
302
|
}
|