@soft-stech/bootsman-ui-shadcn 1.4.18 → 1.4.20

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@soft-stech/bootsman-ui-shadcn",
3
- "version": "1.4.18",
3
+ "version": "1.4.20",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist",
@@ -4,6 +4,7 @@ import BuiAccordionContent from '@/components/ui/accordion/BuiAccordionContent.v
4
4
  import BuiAccordionItem from '@/components/ui/accordion/BuiAccordionItem.vue'
5
5
  import BuiAccordionTrigger from '@/components/ui/accordion/BuiAccordionTrigger.vue'
6
6
  import BuiButton from '@/components/ui/button/BuiButton.vue'
7
+ import BuiAdvancedAccordionTrigger from '@/components/ui/accordion/BuiAdvancedAccordionTrigger.vue'
7
8
  </script>
8
9
 
9
10
  <template>
@@ -57,5 +58,58 @@ import BuiButton from '@/components/ui/button/BuiButton.vue'
57
58
  </BuiAccordionItem>
58
59
  </BuiAccordion>
59
60
  </Variant>
61
+ <Variant title="AdvancedTrigger">
62
+ <BuiAccordion type="single" collapsible class="flex flex-col gap-4 px-2">
63
+ <BuiAccordionItem value="item-1" class="border-orange-400">
64
+ <BuiAdvancedAccordionTrigger
65
+ border-color-class="border-orange-400"
66
+ bg-color-class="bg-orange-400/[0.16]"
67
+ description-color-class="text-orange-400"
68
+ icon-bg-class="bg-orange-400"
69
+ >
70
+ Member Roles
71
+
72
+ <template #description>
73
+ Control who has access to the cluster and what permission they have to change it
74
+ </template>
75
+ </BuiAdvancedAccordionTrigger>
76
+
77
+ <BuiAccordionContent>
78
+ Lorem, ipsum dolor sit amet consectetur adipisicing elit. Minus a voluptatem, ipsa autem
79
+ aspernatur beatae fugiat deleniti laborum dolorem obcaecati necessitatibus harum dolore
80
+ error! Perferendis nostrum eius eligendi dolorum reprehenderit?
81
+ </BuiAccordionContent>
82
+ </BuiAccordionItem>
83
+ <BuiAccordionItem value="item-2" class="border-orange-400" :disabled="true">
84
+ <BuiAdvancedAccordionTrigger
85
+ border-color-class="border-orange-400"
86
+ bg-color-class="bg-orange-400/[0.16]"
87
+ description-color-class="text-orange-400"
88
+ icon-bg-class="bg-orange-400"
89
+ :is-disabled-as-normal="true"
90
+ :is-icon-hidden="true"
91
+ >
92
+ Member Roles
93
+
94
+ <template #description>
95
+ Control who has access to the cluster and what permission they have to change it
96
+ </template>
97
+ <template #actions>
98
+ <BuiButton
99
+ variant="outline"
100
+ class="border-orange-400 text-orange-400"
101
+ @click="
102
+ () => {
103
+ console.log('click')
104
+ }
105
+ "
106
+ >
107
+ LOG: click
108
+ </BuiButton>
109
+ </template>
110
+ </BuiAdvancedAccordionTrigger>
111
+ </BuiAccordionItem>
112
+ </BuiAccordion>
113
+ </Variant>
60
114
  </Story>
61
115
  </template>
@@ -0,0 +1,71 @@
1
+ <script setup lang="ts">
2
+ // TODO see https://github.com/shadcn-ui/ui/pull/232 when completed
3
+
4
+ import { cn } from '@/lib/utils'
5
+ import { ChevronDown } from 'lucide-vue-next'
6
+ import { AccordionHeader, AccordionTrigger, type AccordionTriggerProps } from 'radix-vue'
7
+
8
+ const props = defineProps<
9
+ AccordionTriggerProps & {
10
+ class?: string
11
+ borderColorClass?: string
12
+ bgColorClass?: string
13
+ iconBgClass?: string
14
+ descriptionColorClass?: string
15
+ isIconHidden?: boolean
16
+ isDisabledAsNormal?: boolean
17
+ }
18
+ >()
19
+ </script>
20
+
21
+ <template>
22
+ <AccordionHeader
23
+ :class="
24
+ cn(
25
+ 'flex flex-col p-2 data-[state=closed]:rounded-sm data-[state=open]:rounded-t-sm data-[state=open]:border-b',
26
+ props.borderColorClass ? props.borderColorClass : 'border-border',
27
+ props.bgColorClass ? props.bgColorClass : 'bg-primary/[0.16]'
28
+ )
29
+ "
30
+ as="div"
31
+ >
32
+ <div class="flex justify-between gap-2">
33
+ <AccordionTrigger
34
+ v-bind="props"
35
+ :class="
36
+ cn(
37
+ 'flex flex-1 items-center gap-2 rounded align-middle text-base font-semibold leading-6 ring-offset-background transition-all hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none [&[data-state=open]>svg]:rotate-180',
38
+ props.class,
39
+ props.isDisabledAsNormal ? 'disabled:opacity-100' : 'disabled:opacity-30'
40
+ )
41
+ "
42
+ >
43
+ <ChevronDown
44
+ :class="
45
+ cn(
46
+ 'h-4 w-4 shrink-0 rounded-sm text-primary-foreground transition-transform duration-200',
47
+ props.iconBgClass
48
+ ? `${props.iconBgClass} dark:${props.iconBgClass}`
49
+ : 'bg-primary/[0.56] dark:bg-primary/[1]',
50
+ props.isIconHidden ? 'invisible' : 'visible'
51
+ )
52
+ "
53
+ />
54
+ <slot />
55
+ </AccordionTrigger>
56
+ <slot name="actions" />
57
+ </div>
58
+
59
+ <p
60
+ v-if="$slots.description"
61
+ :class="
62
+ cn(
63
+ 'mx-6 mt-2 align-middle text-xs font-normal leading-4',
64
+ props.descriptionColorClass ? props.descriptionColorClass : ''
65
+ )
66
+ "
67
+ >
68
+ <slot name="description" />
69
+ </p>
70
+ </AccordionHeader>
71
+ </template>
@@ -2,3 +2,4 @@ export { default as BuiAccordion } from './BuiAccordion.vue'
2
2
  export { default as BuiAccordionContent } from './BuiAccordionContent.vue'
3
3
  export { default as BuiAccordionItem } from './BuiAccordionItem.vue'
4
4
  export { default as BuiAccordionTrigger } from './BuiAccordionTrigger.vue'
5
+ export { default as BuiAdvancedAccordionTrigger } from './BuiAdvancedAccordionTrigger.vue'
@@ -14,7 +14,7 @@ const props = defineProps<{
14
14
  const FAKE_ROW = '[!fake-empty!]'
15
15
  const isEmptyRow = computed(() => {
16
16
  // @ts-expect-error name с таким значением это наше внутреннее соглашение. См. Боцман Дашборд, таблицу Projects/Namespaces
17
- return props.row.original.name.includes(FAKE_ROW)
17
+ return props.row.original.name?.includes(FAKE_ROW)
18
18
  })
19
19
  </script>
20
20