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.
Files changed (45) hide show
  1. package/dist/design-system-next.es.js +7569 -6646
  2. package/dist/design-system-next.es.js.gz +0 -0
  3. package/dist/design-system-next.umd.js +14 -14
  4. package/dist/design-system-next.umd.js.gz +0 -0
  5. package/dist/main.css +1 -1
  6. package/dist/main.css.gz +0 -0
  7. package/dist/package.json.d.ts +1 -1
  8. package/package.json +1 -1
  9. package/src/App.vue +43 -1642
  10. package/src/assets/styles/tailwind.css +20 -0
  11. package/src/components/attribute-filter/attribute-filter.ts +5 -1
  12. package/src/components/attribute-filter/attribute-filter.vue +3 -3
  13. package/src/components/calendar/calendar.ts +1 -1
  14. package/src/components/calendar/calendar.vue +41 -18
  15. package/src/components/calendar/use-calendar.ts +13 -6
  16. package/src/components/calendar-cell/calendar-cell.ts +4 -0
  17. package/src/components/calendar-cell/use-calendar-cell.ts +21 -2
  18. package/src/components/card/card.ts +5 -0
  19. package/src/components/card/use-card.ts +15 -3
  20. package/src/components/date-picker/date-picker.ts +36 -5
  21. package/src/components/date-picker/date-picker.vue +2 -1
  22. package/src/components/date-picker/date-range-picker/date-range-picker.ts +14 -6
  23. package/src/components/date-picker/date-range-picker/date-range-picker.vue +2 -1
  24. package/src/components/date-picker/reusable-calendar/reusable-calendar.ts +121 -0
  25. package/src/components/date-picker/reusable-calendar/reusable-calendar.vue +192 -0
  26. package/src/components/date-picker/reusable-calendar/use-reusable-calendar.ts +366 -0
  27. package/src/components/date-picker/tabs/DatePickerCalendarTab.vue +321 -0
  28. package/src/components/date-picker/tabs/DatePickerMonthTab.vue +60 -0
  29. package/src/components/date-picker/tabs/DatePickerYearTab.vue +114 -0
  30. package/src/components/dropdown/dropdown.ts +25 -21
  31. package/src/components/dropdown/dropdown.vue +1 -1
  32. package/src/components/icon/icon.ts +36 -0
  33. package/src/components/icon/icon.vue +12 -0
  34. package/src/components/icon/use-icon.ts +67 -0
  35. package/src/components/lozenge/lozenge.ts +1 -1
  36. package/src/components/popper/popper.ts +12 -0
  37. package/src/components/popper/popper.vue +36 -0
  38. package/src/components/popper/use-popper.ts +16 -0
  39. package/src/components/select/select-ladderized/select-ladderized.ts +16 -12
  40. package/src/components/select/select-ladderized/select-ladderized.vue +1 -1
  41. package/src/components/select/select-multiple/select-multiple.ts +8 -4
  42. package/src/components/select/select-multiple/select-multiple.vue +1 -1
  43. package/src/components/select/select-multiple/use-select-multiple.ts +15 -4
  44. package/src/components/select/select.ts +4 -0
  45. 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
- autoHide: {
119
- type: Boolean,
120
- default: false,
121
- },
122
- wrapperPosition: {
122
+ popperStrategy: {
123
123
  type: String,
124
- default: 'relative',
124
+ validator: (value: 'fixed' | 'absolute') => POPPER_STRATEGY_TYPES.includes(value),
125
+ default: 'absolute',
125
126
  },
126
- width: {
127
+ popperWidth: {
127
128
  type: String,
128
129
  default: '100%',
129
130
  },
130
- popperWidth: {
131
+ popperContainer: {
131
132
  type: String,
132
- default: '100%',
133
+ default: '',
133
134
  },
134
- popperStrategy: {
135
+ wrapperPosition: {
135
136
  type: String,
136
- validator: (value: 'fixed' | 'absolute') => POPPER_STRATEGY_TYPES.includes(value),
137
- default: 'absolute',
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(multiSelectRef, () => {
362
- multiSelectPopperState.value = false;
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
- updateMultiSelectedItemsFromValue();
365
- });
369
+ multiSelectPopperState.value = false;
370
+
371
+ updateMultiSelectedItemsFromValue();
372
+ },
373
+ {
374
+ ignore: [multipleSelectPopperRef],
375
+ },
376
+ );
366
377
 
367
378
  useInfiniteScroll(
368
379
  multipleSelectPopperRef,
@@ -105,6 +105,10 @@ export const selectPropTypes = {
105
105
  type: String,
106
106
  default: '100%',
107
107
  },
108
+ popperContainer: {
109
+ type: String,
110
+ default: '',
111
+ },
108
112
  width: {
109
113
  type: String,
110
114
  default: '100%',
@@ -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
  "