@quidgest/ui 0.14.5 → 0.14.6

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 (39) hide show
  1. package/dist/manifest/components.json +2 -0
  2. package/dist/ui.css +163 -20
  3. package/dist/ui.esm.js +1115 -961
  4. package/dist/ui.js +6 -6
  5. package/dist/ui.min.css +1 -1
  6. package/dist/ui.min.js +193 -180
  7. package/dist/ui.scss +176 -22
  8. package/esm/components/QAccordion/QAccordion.d.ts +26 -0
  9. package/esm/components/QAccordion/QAccordion.d.ts.map +1 -0
  10. package/esm/components/QAccordion/QAccordion.vue.js +27 -0
  11. package/esm/components/QAccordion/QAccordion.vue2.js +4 -0
  12. package/esm/components/QAccordion/index.d.ts +4 -0
  13. package/esm/components/QAccordion/index.d.ts.map +1 -0
  14. package/esm/components/QAccordion/index.js +6 -0
  15. package/esm/components/QAccordion/types.d.ts +7 -0
  16. package/esm/components/QAccordion/types.d.ts.map +1 -0
  17. package/esm/components/QCard/QCard.d.ts +1 -1
  18. package/esm/components/QCollapsible/QCollapsible.d.ts +35 -0
  19. package/esm/components/QCollapsible/QCollapsible.d.ts.map +1 -0
  20. package/esm/components/QCollapsible/QCollapsible.vue.js +143 -0
  21. package/esm/components/QCollapsible/QCollapsible.vue2.js +4 -0
  22. package/esm/components/QCollapsible/index.d.ts +6 -0
  23. package/esm/components/QCollapsible/index.d.ts.map +1 -0
  24. package/esm/components/QCollapsible/index.js +6 -0
  25. package/esm/components/QCollapsible/types.d.ts +43 -0
  26. package/esm/components/QCollapsible/types.d.ts.map +1 -0
  27. package/esm/components/QCollapsible/types.js +8 -0
  28. package/esm/components/QCombobox/QCombobox.d.ts +9 -9
  29. package/esm/components/QIcon/QIconFont.d.ts +1 -1
  30. package/esm/components/QTextField/QTextField.d.ts +1 -1
  31. package/esm/components/QTooltip/QTooltip.d.ts +1 -1
  32. package/esm/components/index.d.ts +2 -0
  33. package/esm/components/index.d.ts.map +1 -1
  34. package/esm/components/index.js +56 -52
  35. package/esm/composables/group.d.ts +16 -0
  36. package/esm/composables/group.d.ts.map +1 -0
  37. package/esm/composables/group.js +34 -0
  38. package/esm/index.d.ts +2 -0
  39. package/package.json +4 -1
package/dist/ui.scss CHANGED
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * Quidgest UI v0.14.5
3
- * (c) 2024 Quidgest - Consultores de Gestão, S.A.
2
+ * Quidgest UI v0.14.6
3
+ * (c) 2025 Quidgest - Consultores de Gestão, S.A.
4
4
  * Released under the MIT License.
5
5
  */
6
6
 
@@ -196,6 +196,9 @@ $input-padding-x: 0.25rem !default;
196
196
  margin: 0;
197
197
  overflow: hidden;
198
198
  }
199
+ :root {
200
+ --border-radius: #{$border-radius};
201
+ }
199
202
  *,
200
203
  ::after,
201
204
  ::before {
@@ -218,11 +221,11 @@ body {
218
221
  }
219
222
  &::-webkit-scrollbar-thumb {
220
223
  background-color: $scrollbar-thumb;
221
- border-radius: $border-radius;
224
+ border-radius: var(--border-radius);
222
225
  }
223
226
  &::-webkit-scrollbar-track {
224
227
  background-color: $scrollbar-track;
225
- border-radius: $border-radius;
228
+ border-radius: var(--border-radius);
226
229
  }
227
230
  }
228
231
  }
@@ -238,12 +241,17 @@ body {
238
241
  .fade-leave-active {
239
242
  transition: opacity 0.2s;
240
243
  }
244
+ .q-accordion {
245
+ display: flex;
246
+ flex-direction: column;
247
+ gap: $space-base;
248
+ }
241
249
  .q-badge {
242
250
  $this: &;
243
251
  display: inline-flex;
244
252
  border-width: 1px;
245
253
  border-color: transparent;
246
- border-radius: $border-radius;
254
+ border-radius: var(--border-radius);
247
255
  padding: 0.25em 0.5em;
248
256
  line-height: 1rem;
249
257
  font-size: 0.75rem;
@@ -334,7 +342,7 @@ $button-text-on-plain: var(--q-theme-on-background);
334
342
  user-select: none;
335
343
  -webkit-user-select: none;
336
344
  -moz-user-select: none;
337
- border-radius: $border-radius;
345
+ border-radius: var(--border-radius);
338
346
  transition-property: color, background-color, border-color, box-shadow, text-decoration-color,
339
347
  fill, stroke;
340
348
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
@@ -472,7 +480,7 @@ $button-text-on-plain: var(--q-theme-on-background);
472
480
  --box-shadow-tint: 0 0 0;
473
481
  position: relative;
474
482
  display: inline-flex;
475
- border-radius: $border-radius;
483
+ border-radius: var(--border-radius);
476
484
  &--elevated {
477
485
  --box-shadow-tint: var(--q-theme-primary-rgb);
478
486
  box-shadow:
@@ -509,7 +517,7 @@ $button-text-on-plain: var(--q-theme-on-background);
509
517
  min-height: 5rem;
510
518
  min-width: 7rem;
511
519
  border: var(--card-border);
512
- border-radius: $border-radius;
520
+ border-radius: var(--border-radius);
513
521
  background-color: var(--card-background);
514
522
  width: var(--card-width);
515
523
  overflow: hidden;
@@ -653,7 +661,7 @@ $button-text-on-plain: var(--q-theme-on-background);
653
661
  width: var(--box-size);
654
662
  height: var(--box-size);
655
663
  border: 1px solid $border;
656
- border-radius: $border-radius;
664
+ border-radius: var(--border-radius);
657
665
  padding: 0;
658
666
  transition:
659
667
  background 0.2s,
@@ -732,6 +740,152 @@ $button-text-on-plain: var(--q-theme-on-background);
732
740
  transition: none;
733
741
  }
734
742
  }
743
+ .q-collapsible {
744
+ $btn-padding: 0.2rem;
745
+ $header-padding: 0.75rem - $btn-padding;
746
+ $this: &;
747
+ display: flex;
748
+ flex-direction: column;
749
+ word-wrap: break-word;
750
+ background-color: var(--q-theme-container);
751
+ border-width: 1px;
752
+ border-radius: var(--border-radius);
753
+ position: relative;
754
+ max-width: 100%;
755
+ min-height: 0;
756
+ #{$this}__chevron {
757
+ transition: all 0.2s;
758
+ font-weight: 600;
759
+ &:hover,
760
+ &:focus {
761
+ cursor: pointer;
762
+ opacity: 1;
763
+ }
764
+ }
765
+ &:not(#{$this}--borderless) {
766
+ #{$this}__chevron-right {
767
+ position: absolute;
768
+ right: 0;
769
+ }
770
+ }
771
+ &--expanded {
772
+ #{$this}__chevron {
773
+ transform: rotate(-180deg);
774
+ }
775
+ }
776
+ .q-card__content {
777
+ padding: 0;
778
+ }
779
+ .q-card__header {
780
+ padding-bottom: 0;
781
+ }
782
+ &__header {
783
+ display: flex;
784
+ position: relative;
785
+ width: 100%;
786
+ margin: 0;
787
+ border-bottom: 1px solid $border;
788
+ overflow: hidden;
789
+ gap: 0;
790
+ justify-content: start;
791
+ align-items: flex-start;
792
+ flex-direction: column;
793
+ padding: $header-padding;
794
+ }
795
+ &__btn {
796
+ width: 100%;
797
+ margin: 0;
798
+ padding: 0;
799
+ .q-btn__content {
800
+ width: 100%;
801
+ gap: 0;
802
+ padding: $btn-padding;
803
+ display: flex;
804
+ flex-direction: column;
805
+ align-items: start;
806
+ letter-spacing: 0.02rem;
807
+ color: var(--q-theme-on-background);
808
+ h4 {
809
+ margin: 0;
810
+ }
811
+ }
812
+ }
813
+ &__title {
814
+ display: flex;
815
+ width: 100%;
816
+ gap: 0.2rem;
817
+ position: relative;
818
+ text-align: start;
819
+ align-items: center;
820
+ padding: 0;
821
+ &-text {
822
+ font-weight: 600;
823
+ }
824
+ }
825
+ &__subtitle {
826
+ margin-left: 1.25rem;
827
+ text-align: start;
828
+ line-height: 0.75rem;
829
+ font-size: 0.75rem;
830
+ text-decoration: none;
831
+ white-space: nowrap;
832
+ color: var(--q-theme-neutral);
833
+ padding: 0;
834
+ padding-top: 0.3rem;
835
+ }
836
+ &__content {
837
+ padding: 1rem;
838
+ padding-top: 0.75rem;
839
+ &-wrapper {
840
+ display: grid;
841
+ grid-template-rows: 0fr;
842
+ transition: 0.5s;
843
+ &:not(#{$this}__content-show) {
844
+ pointer-events: none;
845
+ visibility: hidden;
846
+ }
847
+ }
848
+ &-inner {
849
+ overflow: hidden;
850
+ overflow-x: inherit;
851
+ }
852
+ &-show {
853
+ grid-template-rows: 1fr;
854
+ }
855
+ }
856
+
857
+ &--border-bottom {
858
+ border-radius: 0;
859
+ border: 0;
860
+ border-bottom: 1px solid $border;
861
+ .q-collapsible__header {
862
+ border: 0;
863
+ }
864
+ }
865
+
866
+ &--required {
867
+ margin-top: -0.3rem;
868
+ margin-left: 0.1rem;
869
+ font-weight: 700;
870
+ color: var(--q-theme-danger);
871
+ }
872
+ &--icon-right {
873
+ &:not(.q-collapsible--borderless) .q-collapsible__title .q-icon {
874
+ margin: 0 0 0 auto;
875
+ }
876
+ .q-collapsible__subtitle {
877
+ margin-left: 0;
878
+ }
879
+ }
880
+
881
+ @mixin header-spacing($spacing, $increment) {
882
+ &--#{$spacing} .q-collapsible__header {
883
+ padding: calc(#{$header-padding} + #{$increment});
884
+ }
885
+ }
886
+ @include header-spacing(loose, $space-base);
887
+ @include header-spacing(compact, -$space-base);
888
+ }
735
889
  .q-combobox {
736
890
  $this: &;
737
891
  &:not(#{$this}--disabled) {
@@ -811,7 +965,7 @@ $button-text-on-plain: var(--q-theme-on-background);
811
965
  $this: &;
812
966
  display: flex;
813
967
  flex-direction: column;
814
- border-radius: $border-radius;
968
+ border-radius: var(--border-radius);
815
969
  width: fit-content;
816
970
  &__label {
817
971
  display: flex;
@@ -915,12 +1069,12 @@ $input-group-addon-color: var(--q-theme-primary);
915
1069
  $input-group-addon-background: rgb(var(--q-theme-neutral-light-rgb) / 0.25);
916
1070
  .q-input-group {
917
1071
  &__prepend > :first-child {
918
- border-top-left-radius: $border-radius;
919
- border-bottom-left-radius: $border-radius;
1072
+ border-top-left-radius: var(--border-radius);
1073
+ border-bottom-left-radius: var(--border-radius);
920
1074
  }
921
1075
  &__append > :last-child {
922
- border-top-right-radius: $border-radius;
923
- border-bottom-right-radius: $border-radius;
1076
+ border-top-right-radius: var(--border-radius);
1077
+ border-bottom-right-radius: var(--border-radius);
924
1078
  }
925
1079
  &__prepend,
926
1080
  &__append {
@@ -963,12 +1117,12 @@ $input-group-addon-background: rgb(var(--q-theme-neutral-light-rgb) / 0.25);
963
1117
  }
964
1118
  }
965
1119
  > :first-child {
966
- border-top-left-radius: $border-radius;
967
- border-bottom-left-radius: $border-radius;
1120
+ border-top-left-radius: var(--border-radius);
1121
+ border-bottom-left-radius: var(--border-radius);
968
1122
  }
969
1123
  > :last-child {
970
- border-top-right-radius: $border-radius;
971
- border-bottom-right-radius: $border-radius;
1124
+ border-top-right-radius: var(--border-radius);
1125
+ border-bottom-right-radius: var(--border-radius);
972
1126
  }
973
1127
  > * + * {
974
1128
  margin-left: -1px;
@@ -1023,7 +1177,7 @@ $line-color: var(--q-theme-primary);
1023
1177
  padding: 0;
1024
1178
  -webkit-overflow-scrolling: touch;
1025
1179
  width: 100%;
1026
- border-radius: $border-radius;
1180
+ border-radius: var(--border-radius);
1027
1181
  }
1028
1182
  .q-list-item-group {
1029
1183
  display: flex;
@@ -1057,7 +1211,7 @@ $line-color: var(--q-theme-primary);
1057
1211
  word-wrap: break-word;
1058
1212
  -webkit-touch-callout: none;
1059
1213
  width: inherit;
1060
- border-radius: $border-radius;
1214
+ border-radius: var(--border-radius);
1061
1215
  outline: none;
1062
1216
  &:hover {
1063
1217
  cursor: pointer;
@@ -1141,7 +1295,7 @@ $arrow-tip-radius: 0.1rem;
1141
1295
  background-color: var(--q-overlay-bg);
1142
1296
  color: var(--q-overlay-color);
1143
1297
  border: $overlay-border-width solid var(--q-overlay-border-color);
1144
- border-radius: $border-radius;
1298
+ border-radius: var(--border-radius);
1145
1299
  outline: none;
1146
1300
  box-shadow:
1147
1301
  0 0 #0000,
@@ -1404,7 +1558,7 @@ $base-border: 1px solid rgba(0, 0, 0, 0.1);
1404
1558
  overflow: hidden;
1405
1559
  background-color: var(--q-theme-neutral-light);
1406
1560
  animation: fadeIn 1s;
1407
- border-radius: $border-radius;
1561
+ border-radius: var(--border-radius);
1408
1562
  &::after {
1409
1563
  position: absolute;
1410
1564
  top: 0;
@@ -0,0 +1,26 @@
1
+ import { QAccordionProps } from './types';
2
+ declare let __VLS_typeProps: QAccordionProps;
3
+ type __VLS_PublicProps = {
4
+ modelValue?: string;
5
+ } & typeof __VLS_typeProps;
6
+ declare function __VLS_template(): {
7
+ slots: {
8
+ default?(_: {}): any;
9
+ };
10
+ refs: {};
11
+ attrs: Partial<{}>;
12
+ };
13
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
14
+ declare const __VLS_component: import('vue').DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
15
+ "update:modelValue": (modelValue: string) => any;
16
+ }, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
17
+ "onUpdate:modelValue"?: ((modelValue: string) => any) | undefined;
18
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
19
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
20
+ export default _default;
21
+ type __VLS_WithTemplateSlots<T, S> = T & {
22
+ new (): {
23
+ $slots: S;
24
+ };
25
+ };
26
+ //# sourceMappingURL=QAccordion.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QAccordion.vue.d.ts","sourceRoot":"","sources":["../../../src/components/QAccordion/QAccordion.vue"],"names":[],"mappings":"AAoCC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAO/C,QAAA,IAAI,eAAe,EAAG,eAAe,CAAC;AAmBtC,KAAK,iBAAiB,GAAG;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,eAAe,CAAC;AAI3B,iBAAS,cAAc;;yBA2BM,GAAG;;;WASlB,OAAO,IAA6B;EAEjD;AASD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;kFAOnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAWpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { defineComponent as r, mergeModels as a, toRef as l, useModel as s, openBlock as n, createElementBlock as d, renderSlot as i } from "vue";
2
+ import { provideDefaults as m } from "../../composables/defaults.js";
3
+ import { useGroup as c } from "../../composables/group.js";
4
+ const p = { class: "q-accordion" }, V = /* @__PURE__ */ r({
5
+ __name: "QAccordion",
6
+ props: /* @__PURE__ */ a({
7
+ variant: {}
8
+ }, {
9
+ modelValue: {},
10
+ modelModifiers: {}
11
+ }),
12
+ emits: ["update:modelValue"],
13
+ setup(e) {
14
+ m({
15
+ QCollapsible: {
16
+ variant: l(e, "variant")
17
+ }
18
+ });
19
+ const o = s(e, "modelValue");
20
+ return c({ active: o }), (t, f) => (n(), d("div", p, [
21
+ i(t.$slots, "default")
22
+ ]));
23
+ }
24
+ });
25
+ export {
26
+ V as default
27
+ };
@@ -0,0 +1,4 @@
1
+ import f from "./QAccordion.vue.js";
2
+ export {
3
+ f as default
4
+ };
@@ -0,0 +1,4 @@
1
+ import { default as _QAccordion } from './QAccordion';
2
+ declare const QAccordion: typeof _QAccordion;
3
+ export { QAccordion };
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/QAccordion/index.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,kBAAkB,CAAA;AAK1C,QAAA,MAAM,UAAU,EAAmC,OAAO,WAAW,CAAA;AAGrE,OAAO,EAAE,UAAU,EAAE,CAAA"}
@@ -0,0 +1,6 @@
1
+ import o from "./QAccordion.vue.js";
2
+ import { setupPropsProxy as r } from "../../utils/setupPropsProxy.js";
3
+ const t = r(o);
4
+ export {
5
+ t as QAccordion
6
+ };
@@ -0,0 +1,7 @@
1
+ export type QAccordionProps = {
2
+ /**
3
+ * The variant of the collapsibles.
4
+ */
5
+ variant?: 'default' | 'border-bottom';
6
+ };
7
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/QAccordion/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAC7B;;OAEG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,eAAe,CAAA;CACrC,CAAA"}
@@ -16,8 +16,8 @@ declare function __VLS_template(): {
16
16
  };
17
17
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
18
18
  declare const __VLS_component: import('vue').DefineComponent<QCardProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<QCardProps> & Readonly<{}>, {
19
- title: string;
20
19
  variant: "default" | "background" | "title-background" | "minor";
20
+ title: string;
21
21
  id: string;
22
22
  subtitle: string;
23
23
  href: string;
@@ -0,0 +1,35 @@
1
+ import { QCollapsibleProps, DEFAULT_ICONS } from './types';
2
+ declare let __VLS_typeProps: QCollapsibleProps;
3
+ type __VLS_PublicProps = {
4
+ modelValue?: boolean;
5
+ } & typeof __VLS_typeProps;
6
+ declare function __VLS_template(): {
7
+ slots: {
8
+ icon?(_: {}): any;
9
+ icon?(_: {}): any;
10
+ "title.prepend"?(_: {}): any;
11
+ "title.append"?(_: {}): any;
12
+ subtitle?(_: {}): any;
13
+ default?(_: {}): any;
14
+ };
15
+ refs: {};
16
+ attrs: Partial<{}>;
17
+ };
18
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
19
+ declare const __VLS_component: import('vue').DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
20
+ "update:modelValue": (modelValue: boolean) => any;
21
+ }, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
22
+ "onUpdate:modelValue"?: ((modelValue: boolean) => any) | undefined;
23
+ }>, {
24
+ icons: typeof DEFAULT_ICONS;
25
+ id: string;
26
+ width: "fit-content" | "block";
27
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
28
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
29
+ export default _default;
30
+ type __VLS_WithTemplateSlots<T, S> = T & {
31
+ new (): {
32
+ $slots: S;
33
+ };
34
+ };
35
+ //# sourceMappingURL=QCollapsible.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QCollapsible.vue.d.ts","sourceRoot":"","sources":["../../../src/components/QCollapsible/QCollapsible.vue"],"names":[],"mappings":"AAqJC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAGhD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAOxC,QAAA,IAAI,eAAe,EAAG,iBAAiB,CAAC;AAmExC,KAAK,iBAAiB,GAAG;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,OAAO,eAAe,CAAC;AAI3B,iBAAS,cAAc;;sBAiHI,GAAG;sBAGH,GAAG;iCAFQ,GAAG;gCACJ,GAAG;0BAET,GAAG;yBACJ,GAAG;;;WASnB,OAAO,IAA6B;EAEjD;AAkBD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;;;;6EAQnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAgBpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
@@ -0,0 +1,143 @@
1
+ import { defineComponent as T, mergeModels as w, useModel as I, computed as r, watch as N, openBlock as c, createBlock as $, unref as a, normalizeClass as h, withCtx as d, createElementBlock as p, createVNode as u, createCommentVNode as t, createElementVNode as n, renderSlot as s, mergeProps as m, toDisplayString as f, createTextVNode as B } from "vue";
2
+ import { QCard as E } from "../QCard/index.js";
3
+ import { QButton as V } from "../QButton/index.js";
4
+ import { QIcon as q } from "../QIcon/index.js";
5
+ import { DEFAULT_ICONS as O } from "./types.js";
6
+ import { useGroupItem as R } from "../../composables/group.js";
7
+ import { useId as L } from "../../composables/uid.js";
8
+ const Q = {
9
+ key: 0,
10
+ class: "q-collapsible__header"
11
+ }, S = { class: "q-collapsible__title" }, A = { class: "q-collapsible__title-text" }, H = {
12
+ key: 1,
13
+ class: "q-collapsible--required"
14
+ }, M = {
15
+ key: 0,
16
+ class: "q-collapsible__subtitle"
17
+ }, D = { class: "q-collapsible__content-inner" }, F = { class: "q-collapsible__content" }, W = /* @__PURE__ */ T({
18
+ __name: "QCollapsible",
19
+ props: /* @__PURE__ */ w({
20
+ id: { default: void 0 },
21
+ title: {},
22
+ subtitle: {},
23
+ width: { default: "fit-content" },
24
+ required: { type: Boolean },
25
+ spacing: {},
26
+ variant: {},
27
+ iconRight: { type: Boolean },
28
+ icons: { default: () => O }
29
+ }, {
30
+ modelValue: { type: Boolean },
31
+ modelModifiers: {}
32
+ }),
33
+ emits: ["update:modelValue"],
34
+ setup(v) {
35
+ const l = v, i = I(v, "modelValue"), _ = L(l.id), o = R(_), g = r(() => l.width === "block" ? "block" : void 0), k = r(() => {
36
+ const e = l.spacing && l.spacing !== "comfortable" ? `q-collapsible--${l.spacing}` : void 0, b = l.variant && l.variant !== "default" ? `q-collapsible--${l.variant}` : void 0;
37
+ return [
38
+ "q-collapsible",
39
+ e,
40
+ b,
41
+ {
42
+ "q-collapsible--icon-right": l.iconRight,
43
+ "q-collapsible--expanded": i.value
44
+ }
45
+ ];
46
+ }), y = r(() => [
47
+ "q-collapsible__content-wrapper",
48
+ {
49
+ "q-collapsible__content-show": i.value
50
+ }
51
+ ]), C = () => {
52
+ i.value = !i.value, o == null || o.toggle();
53
+ };
54
+ return N(
55
+ () => o == null ? void 0 : o.isActive.value,
56
+ () => i.value = o == null ? void 0 : o.isActive.value
57
+ ), (e, b) => (c(), $(a(E), {
58
+ id: a(_),
59
+ class: h(k.value),
60
+ width: g.value
61
+ }, {
62
+ header: d(() => [
63
+ e.title ? (c(), p("div", Q, [
64
+ u(a(V), {
65
+ "b-style": "tertiary",
66
+ class: "q-collapsible__btn",
67
+ onClick: C
68
+ }, {
69
+ default: d(() => [
70
+ t(" TITLE "),
71
+ n("div", S, [
72
+ t(" ICON ON THE LEFT "),
73
+ e.iconRight ? t("v-if", !0) : s(e.$slots, "icon", { key: 0 }, () => [
74
+ u(
75
+ a(q),
76
+ m({ class: "q-collapsible__chevron" }, l.icons.chevron),
77
+ null,
78
+ 16
79
+ /* FULL_PROPS */
80
+ )
81
+ ]),
82
+ s(e.$slots, "title.prepend"),
83
+ n(
84
+ "h4",
85
+ A,
86
+ f(e.title),
87
+ 1
88
+ /* TEXT */
89
+ ),
90
+ l.required ? (c(), p("span", H, " * ")) : t("v-if", !0),
91
+ s(e.$slots, "title.append"),
92
+ t(" ICON ON THE RIGHT "),
93
+ e.iconRight ? s(e.$slots, "icon", { key: 2 }, () => [
94
+ u(
95
+ a(q),
96
+ m({ class: "q-collapsible__chevron q-collapsible__chevron-right" }, l.icons.chevron),
97
+ null,
98
+ 16
99
+ /* FULL_PROPS */
100
+ )
101
+ ]) : t("v-if", !0)
102
+ ]),
103
+ t(" SUBTITLE "),
104
+ e.$slots.subtitle || e.subtitle ? (c(), p("div", M, [
105
+ s(e.$slots, "subtitle", {}, () => [
106
+ B(
107
+ f(e.subtitle),
108
+ 1
109
+ /* TEXT */
110
+ )
111
+ ])
112
+ ])) : t("v-if", !0)
113
+ ]),
114
+ _: 3
115
+ /* FORWARDED */
116
+ })
117
+ ])) : t("v-if", !0)
118
+ ]),
119
+ default: d(() => [
120
+ n(
121
+ "div",
122
+ {
123
+ class: h(y.value)
124
+ },
125
+ [
126
+ n("div", D, [
127
+ n("div", F, [
128
+ s(e.$slots, "default")
129
+ ])
130
+ ])
131
+ ],
132
+ 2
133
+ /* CLASS */
134
+ )
135
+ ]),
136
+ _: 3
137
+ /* FORWARDED */
138
+ }, 8, ["id", "class", "width"]));
139
+ }
140
+ });
141
+ export {
142
+ W as default
143
+ };
@@ -0,0 +1,4 @@
1
+ import f from "./QCollapsible.vue.js";
2
+ export {
3
+ f as default
4
+ };
@@ -0,0 +1,6 @@
1
+ import { default as _QCollapsible } from './QCollapsible';
2
+ import { QCollapsibleProps } from './types';
3
+ declare const QCollapsible: typeof _QCollapsible;
4
+ export { QCollapsible };
5
+ export type { QCollapsibleProps };
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/QCollapsible/index.ts"],"names":[],"mappings":"AACA,OAAO,aAAa,MAAM,oBAAoB,CAAA;AAG9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAKhD,QAAA,MAAM,YAAY,EAAqC,OAAO,aAAa,CAAA;AAG3E,OAAO,EAAE,YAAY,EAAE,CAAA;AAGvB,YAAY,EAAE,iBAAiB,EAAE,CAAA"}
@@ -0,0 +1,6 @@
1
+ import o from "./QCollapsible.vue.js";
2
+ import { setupPropsProxy as r } from "../../utils/setupPropsProxy.js";
3
+ const s = r(o);
4
+ export {
5
+ s as QCollapsible
6
+ };
@@ -0,0 +1,43 @@
1
+ import { Icon } from '../QIcon';
2
+ export type QCollapsibleProps = {
3
+ /**
4
+ * The collapsible unique identifier.
5
+ */
6
+ id?: string;
7
+ /**
8
+ * The title of the collapsible.
9
+ */
10
+ title?: string;
11
+ /**
12
+ * The subtitle of the collapsible
13
+ */
14
+ subtitle?: string;
15
+ /**
16
+ * The width of the container
17
+ */
18
+ width?: 'fit-content' | 'block';
19
+ /**
20
+ * Show an indicator that there are required elements inside the group
21
+ */
22
+ required?: boolean;
23
+ /**
24
+ * Controls the spacing in the collapsible
25
+ */
26
+ spacing?: 'compact' | 'comfortable' | 'loose';
27
+ /**
28
+ * The variant of the collapsible.
29
+ */
30
+ variant?: 'default' | 'border-bottom';
31
+ /**
32
+ * If true, the expand/collapse icon shows on the right
33
+ */
34
+ iconRight?: boolean;
35
+ /**
36
+ * Custom icon configurations.
37
+ */
38
+ icons?: typeof DEFAULT_ICONS;
39
+ };
40
+ type IconKeys = 'chevron';
41
+ export declare const DEFAULT_ICONS: Record<IconKeys, Icon>;
42
+ export {};
43
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/QCollapsible/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAE9C,MAAM,MAAM,iBAAiB,GAAG;IAC/B;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAA;IAEX;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,KAAK,CAAC,EAAE,aAAa,GAAG,OAAO,CAAA;IAE/B;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;OAEG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,aAAa,GAAG,OAAO,CAAA;IAE7C;;OAEG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,eAAe,CAAA;IAErC;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,aAAa,CAAA;CAC5B,CAAA;AAED,KAAK,QAAQ,GAAG,SAAS,CAAA;AAGzB,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,CAIhD,CAAA"}
@@ -0,0 +1,8 @@
1
+ const o = {
2
+ chevron: {
3
+ icon: "chevron-down"
4
+ }
5
+ };
6
+ export {
7
+ o as DEFAULT_ICONS
8
+ };