design-system-next 2.16.2 → 2.17.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/design-system-next.es.js +7569 -6646
- package/dist/design-system-next.es.js.gz +0 -0
- package/dist/design-system-next.umd.js +14 -14
- package/dist/design-system-next.umd.js.gz +0 -0
- package/dist/main.css +1 -1
- package/dist/main.css.gz +0 -0
- package/dist/package.json.d.ts +1 -1
- package/package.json +1 -1
- package/src/App.vue +43 -1642
- package/src/assets/styles/tailwind.css +20 -0
- package/src/components/attribute-filter/attribute-filter.ts +5 -1
- package/src/components/attribute-filter/attribute-filter.vue +3 -3
- package/src/components/calendar/calendar.ts +1 -1
- package/src/components/calendar/calendar.vue +41 -18
- package/src/components/calendar/use-calendar.ts +13 -6
- package/src/components/calendar-cell/calendar-cell.ts +4 -0
- package/src/components/calendar-cell/use-calendar-cell.ts +21 -2
- package/src/components/card/card.ts +5 -0
- package/src/components/card/use-card.ts +15 -3
- package/src/components/date-picker/date-picker.ts +36 -5
- package/src/components/date-picker/date-picker.vue +2 -1
- package/src/components/date-picker/date-range-picker/date-range-picker.ts +14 -6
- package/src/components/date-picker/date-range-picker/date-range-picker.vue +2 -1
- package/src/components/date-picker/reusable-calendar/reusable-calendar.ts +121 -0
- package/src/components/date-picker/reusable-calendar/reusable-calendar.vue +192 -0
- package/src/components/date-picker/reusable-calendar/use-reusable-calendar.ts +366 -0
- package/src/components/date-picker/tabs/DatePickerCalendarTab.vue +321 -0
- package/src/components/date-picker/tabs/DatePickerMonthTab.vue +60 -0
- package/src/components/date-picker/tabs/DatePickerYearTab.vue +114 -0
- package/src/components/dropdown/dropdown.ts +25 -21
- package/src/components/dropdown/dropdown.vue +1 -1
- package/src/components/icon/icon.ts +36 -0
- package/src/components/icon/icon.vue +12 -0
- package/src/components/icon/use-icon.ts +67 -0
- package/src/components/lozenge/lozenge.ts +1 -1
- package/src/components/popper/popper.ts +12 -0
- package/src/components/popper/popper.vue +36 -0
- package/src/components/popper/use-popper.ts +16 -0
- package/src/components/select/select-ladderized/select-ladderized.ts +16 -12
- package/src/components/select/select-ladderized/select-ladderized.vue +1 -1
- package/src/components/select/select-multiple/select-multiple.ts +8 -4
- package/src/components/select/select-multiple/select-multiple.vue +1 -1
- package/src/components/select/select-multiple/use-select-multiple.ts +15 -4
- package/src/components/select/select.ts +4 -0
- package/src/components/select/select.vue +1 -1
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { PropType, ExtractPropTypes } from 'vue';
|
|
2
|
+
|
|
3
|
+
export const definePropType = <T>(val: unknown): PropType<T> => val as PropType<T>;
|
|
4
|
+
|
|
5
|
+
export const popperPropTypes = {
|
|
6
|
+
id: {
|
|
7
|
+
type: String,
|
|
8
|
+
required: true,
|
|
9
|
+
},
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export type PopperPropTypes = ExtractPropTypes<typeof popperPropTypes>;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<Menu
|
|
3
|
+
v-bind="$attrs"
|
|
4
|
+
:shown="popperState"
|
|
5
|
+
aria-id="popper-wrapper"
|
|
6
|
+
distance="4"
|
|
7
|
+
:container="`#${props.id}`"
|
|
8
|
+
:style="{
|
|
9
|
+
width: '100%',
|
|
10
|
+
}"
|
|
11
|
+
>
|
|
12
|
+
<div :id="props.id" @click="popperState = true">
|
|
13
|
+
<slot />
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
<template #popper>
|
|
17
|
+
<div ref="popperRef">
|
|
18
|
+
<slot name="content" />
|
|
19
|
+
</div>
|
|
20
|
+
</template>
|
|
21
|
+
</Menu>
|
|
22
|
+
</template>
|
|
23
|
+
|
|
24
|
+
<script lang="ts" setup>
|
|
25
|
+
import { Menu } from 'floating-vue';
|
|
26
|
+
|
|
27
|
+
import 'floating-vue/dist/style.css';
|
|
28
|
+
|
|
29
|
+
import { popperPropTypes } from './popper';
|
|
30
|
+
|
|
31
|
+
import { usePopper } from './use-popper';
|
|
32
|
+
|
|
33
|
+
const props = defineProps(popperPropTypes);
|
|
34
|
+
|
|
35
|
+
const { popperState, popperRef } = usePopper();
|
|
36
|
+
</script>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ref } from 'vue';
|
|
2
|
+
import { onClickOutside } from '@vueuse/core';
|
|
3
|
+
|
|
4
|
+
export const usePopper = () => {
|
|
5
|
+
const popperRef = ref<HTMLDivElement | null>(null);
|
|
6
|
+
const popperState = ref<boolean>(false);
|
|
7
|
+
|
|
8
|
+
onClickOutside(popperRef, () => {
|
|
9
|
+
popperState.value = false;
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
return {
|
|
13
|
+
popperState,
|
|
14
|
+
popperRef,
|
|
15
|
+
};
|
|
16
|
+
};
|
|
@@ -101,6 +101,10 @@ export const selectLadderizedPropTypes = {
|
|
|
101
101
|
type: Number,
|
|
102
102
|
default: 6,
|
|
103
103
|
},
|
|
104
|
+
autoHide: {
|
|
105
|
+
type: Boolean,
|
|
106
|
+
default: false,
|
|
107
|
+
},
|
|
104
108
|
triggers: {
|
|
105
109
|
type: Array as PropType<(typeof TRIGGER_EVENTS)[number][]>,
|
|
106
110
|
validator: (value: (typeof TRIGGER_EVENTS)[number][]) => {
|
|
@@ -115,26 +119,26 @@ export const selectLadderizedPropTypes = {
|
|
|
115
119
|
},
|
|
116
120
|
default: () => [],
|
|
117
121
|
},
|
|
118
|
-
|
|
119
|
-
type: Boolean,
|
|
120
|
-
default: false,
|
|
121
|
-
},
|
|
122
|
-
wrapperPosition: {
|
|
122
|
+
popperStrategy: {
|
|
123
123
|
type: String,
|
|
124
|
-
|
|
124
|
+
validator: (value: 'fixed' | 'absolute') => POPPER_STRATEGY_TYPES.includes(value),
|
|
125
|
+
default: 'absolute',
|
|
125
126
|
},
|
|
126
|
-
|
|
127
|
+
popperWidth: {
|
|
127
128
|
type: String,
|
|
128
129
|
default: '100%',
|
|
129
130
|
},
|
|
130
|
-
|
|
131
|
+
popperContainer: {
|
|
131
132
|
type: String,
|
|
132
|
-
default: '
|
|
133
|
+
default: '',
|
|
133
134
|
},
|
|
134
|
-
|
|
135
|
+
wrapperPosition: {
|
|
135
136
|
type: String,
|
|
136
|
-
|
|
137
|
-
|
|
137
|
+
default: 'relative',
|
|
138
|
+
},
|
|
139
|
+
width: {
|
|
140
|
+
type: String,
|
|
141
|
+
default: '100%',
|
|
138
142
|
},
|
|
139
143
|
removeCurrentLevelInBackLabel: {
|
|
140
144
|
type: Boolean,
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
:popper-triggers="props.popperTriggers"
|
|
17
17
|
:auto-hide="props.autoHide"
|
|
18
18
|
:disabled="isLadderizedSelectPopperDisabled"
|
|
19
|
-
:container="`#ladderized-select-popper-${props.id}`"
|
|
19
|
+
:container="props.popperContainer ? props.popperContainer : `#ladderized-select-popper-${props.id}`"
|
|
20
20
|
:strategy="
|
|
21
21
|
props.popperStrategy === 'fixed' || props.popperStrategy === 'absolute' ? props.popperStrategy : 'absolute'
|
|
22
22
|
"
|
|
@@ -87,6 +87,10 @@ export const multiSelectPropTypes = {
|
|
|
87
87
|
},
|
|
88
88
|
default: () => [],
|
|
89
89
|
},
|
|
90
|
+
autoHide: {
|
|
91
|
+
type: Boolean,
|
|
92
|
+
default: false,
|
|
93
|
+
},
|
|
90
94
|
popperTriggers: {
|
|
91
95
|
type: Array as PropType<(typeof TRIGGER_EVENTS)[number][]>,
|
|
92
96
|
validator: (value: (typeof TRIGGER_EVENTS)[number][]) => {
|
|
@@ -94,10 +98,6 @@ export const multiSelectPropTypes = {
|
|
|
94
98
|
},
|
|
95
99
|
default: () => [],
|
|
96
100
|
},
|
|
97
|
-
autoHide: {
|
|
98
|
-
type: Boolean,
|
|
99
|
-
default: false,
|
|
100
|
-
},
|
|
101
101
|
popperStrategy: {
|
|
102
102
|
type: String,
|
|
103
103
|
validator: (value: 'fixed' | 'absolute') => POPPER_STRATEGY_TYPES.includes(value),
|
|
@@ -107,6 +107,10 @@ export const multiSelectPropTypes = {
|
|
|
107
107
|
type: String,
|
|
108
108
|
default: '100%',
|
|
109
109
|
},
|
|
110
|
+
popperContainer: {
|
|
111
|
+
type: String,
|
|
112
|
+
default: '',
|
|
113
|
+
},
|
|
110
114
|
width: {
|
|
111
115
|
type: String,
|
|
112
116
|
default: '100%',
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
:popper-triggers="props.popperTriggers"
|
|
17
17
|
:auto-hide="props.autoHide"
|
|
18
18
|
:disabled="isMultiSelectPopperDisabled"
|
|
19
|
-
:container="`#multi-select-${props.id}`"
|
|
19
|
+
:container="props.popperContainer ? props.popperContainer : `#multi-select-${props.id}`"
|
|
20
20
|
:strategy="
|
|
21
21
|
props.popperStrategy === 'fixed' || props.popperStrategy === 'absolute' ? props.popperStrategy : 'absolute'
|
|
22
22
|
"
|
|
@@ -358,11 +358,22 @@ export const useMultiSelect = (props: MultiSelectPropTypes, emit: SetupContext<M
|
|
|
358
358
|
/**
|
|
359
359
|
* Handles closing the multi-select when clicking outside.
|
|
360
360
|
*/
|
|
361
|
-
onClickOutside(
|
|
362
|
-
|
|
361
|
+
onClickOutside(
|
|
362
|
+
multiSelectRef,
|
|
363
|
+
(event) => {
|
|
364
|
+
// If click happened inside the floating popper content, don't treat as outside
|
|
365
|
+
if (multipleSelectPopperRef.value && multipleSelectPopperRef.value.contains(event.target as Node)) {
|
|
366
|
+
return;
|
|
367
|
+
}
|
|
363
368
|
|
|
364
|
-
|
|
365
|
-
|
|
369
|
+
multiSelectPopperState.value = false;
|
|
370
|
+
|
|
371
|
+
updateMultiSelectedItemsFromValue();
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
ignore: [multipleSelectPopperRef],
|
|
375
|
+
},
|
|
376
|
+
);
|
|
366
377
|
|
|
367
378
|
useInfiniteScroll(
|
|
368
379
|
multipleSelectPopperRef,
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
:popper-triggers="props.popperTriggers"
|
|
17
17
|
:auto-hide="props.autoHide"
|
|
18
18
|
:disabled="isSelectPopperDisabled"
|
|
19
|
-
:container="`#select-popper-${props.id}`"
|
|
19
|
+
:container="props.popperContainer ? props.popperContainer : `#select-popper-${props.id}`"
|
|
20
20
|
:strategy="
|
|
21
21
|
props.popperStrategy === 'fixed' || props.popperStrategy === 'absolute' ? props.popperStrategy : 'absolute'
|
|
22
22
|
"
|