@frollo/frollo-web-ui 4.0.1 → 5.0.1

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 (46) hide show
  1. package/cjs/index.js +1906 -1538
  2. package/esm/fw-accordion.js +61 -28
  3. package/esm/fw-animations.js +2 -2
  4. package/esm/fw-bar-chart.js +2 -1
  5. package/esm/{fw-button-7902ae9e.js → fw-button-8d131219.js} +1 -1
  6. package/esm/fw-button.js +3 -3
  7. package/esm/fw-checkbox.js +25 -9
  8. package/esm/fw-drawer.js +225 -0
  9. package/esm/fw-dropdown.js +1 -1
  10. package/esm/{fw-image-c829ed20.js → fw-image-4787a8bd.js} +65 -59
  11. package/esm/fw-image.js +4 -4
  12. package/esm/fw-input.js +32 -27
  13. package/esm/{fw-loading-spinner-7462e0b2.js → fw-loading-spinner-c394fafc.js} +1 -1
  14. package/esm/fw-modal.js +3 -3
  15. package/esm/fw-navigation-menu.js +3 -3
  16. package/esm/fw-sidebar-menu.js +3 -3
  17. package/esm/fw-table.js +9 -9
  18. package/esm/fw-tag.js +93 -18
  19. package/esm/fw-toast.js +1 -1
  20. package/esm/fw-transactions-card.js +4 -4
  21. package/esm/get-root-colours-e2a1cb28.js +21 -0
  22. package/esm/{index-f0510452.js → index-2766bfe4.js} +12 -11
  23. package/esm/{index-dbe0534d.js → index-e4a2f8b0.js} +126 -98
  24. package/esm/index.js +40 -36
  25. package/frollo-web-ui.esm.js +2475 -2092
  26. package/icons/index.ts +5 -1
  27. package/icons/pen.svg +3 -0
  28. package/icons/xmark.svg +3 -0
  29. package/index.d.ts +406 -143
  30. package/package.json +1 -1
  31. package/types/components/fw-accordion/fw-accordion.vue.d.ts +22 -4
  32. package/types/components/fw-accordion/index.types.d.ts +1 -0
  33. package/types/components/fw-checkbox/fw-checkbox.vue.d.ts +35 -3
  34. package/types/components/fw-checkbox/index.types.d.ts +2 -0
  35. package/types/components/fw-drawer/fw-drawer.vue.d.ts +165 -0
  36. package/types/components/fw-drawer/index.d.ts +2 -0
  37. package/types/components/fw-drawer/index.types.d.ts +14 -0
  38. package/types/components/fw-input/fw-input.vue.d.ts +14 -5
  39. package/types/components/fw-input/index.types.d.ts +1 -0
  40. package/types/components/fw-tag/fw-tag.vue.d.ts +30 -8
  41. package/types/components/fw-tag/index.types.d.ts +4 -2
  42. package/types/components/index.d.ts +1 -0
  43. package/types/components/index.types.d.ts +1 -0
  44. package/types/helpers/get-root-colours.d.ts +9 -0
  45. package/types/icons/index.d.ts +3 -1
  46. package/web-components/index.js +1770 -1387
@@ -1,7 +1,8 @@
1
- import { defineComponent, ref, pushScopeId, popScopeId, openBlock, createElementBlock, createElementVNode, normalizeClass, toDisplayString, createCommentVNode, createVNode, Transition, withCtx, renderSlot } from 'vue';
1
+ import { defineComponent, ref, useCssVars, pushScopeId, popScopeId, openBlock, createElementBlock, createElementVNode, normalizeClass, createCommentVNode, toDisplayString, createVNode, Transition, withCtx, withDirectives, renderSlot, vShow } from 'vue';
2
+ import { u as useColours } from './get-root-colours-e2a1cb28.js';
2
3
  import { s as styleInject } from './style-inject.es-1f59c1d0.js';
3
4
 
4
- var script = defineComponent({
5
+ var __default__ = defineComponent({
5
6
  name: 'FwAccordion',
6
7
  props: {
7
8
  /**
@@ -22,29 +23,59 @@ var script = defineComponent({
22
23
  isOpened: {
23
24
  type: Boolean,
24
25
  "default": false
26
+ },
27
+ /**
28
+ * Whether the accordion open icon should be at the start or end
29
+ */
30
+ iconPositionStart: {
31
+ type: Boolean,
32
+ "default": true
25
33
  }
26
34
  },
27
35
  setup: function setup(props) {
28
36
  var isOpen = ref(props.isOpened);
29
- var transitionEnter = function transitionEnter(el) {
37
+ var _useColours = useColours(),
38
+ bgHoverColor = _useColours.primaryFade5;
39
+ var beforeEnter = function beforeEnter(el) {
40
+ el.style.height = '0';
41
+ };
42
+ var enter = function enter(el) {
30
43
  el.style.height = el.scrollHeight + 'px';
31
44
  };
32
- var transitionLeave = function transitionLeave(el) {
45
+ var beforeLeave = function beforeLeave(el) {
46
+ el.style.height = el.scrollHeight + 'px';
47
+ };
48
+ var leave = function leave(el) {
33
49
  el.style.height = '0';
34
50
  };
35
51
  return {
36
52
  isOpen: isOpen,
37
- transitionEnter: transitionEnter,
38
- transitionLeave: transitionLeave
53
+ beforeEnter: beforeEnter,
54
+ enter: enter,
55
+ beforeLeave: beforeLeave,
56
+ leave: leave,
57
+ bgHoverColor: bgHoverColor
39
58
  };
40
59
  }
41
60
  });
61
+ var __injectCSSVars__ = function __injectCSSVars__() {
62
+ useCssVars(function (_ctx) {
63
+ return {
64
+ "0ec0724b": _ctx.bgHoverColor
65
+ };
66
+ });
67
+ };
68
+ var __setup__ = __default__.setup;
69
+ __default__.setup = __setup__ ? function (props, ctx) {
70
+ __injectCSSVars__();
71
+ return __setup__(props, ctx);
72
+ } : __injectCSSVars__;
42
73
 
43
74
  var _withScopeId = function _withScopeId(n) {
44
- return pushScopeId("data-v-c9209c42"), n = n(), popScopeId(), n;
75
+ return pushScopeId("data-v-5123413b"), n = n(), popScopeId(), n;
45
76
  };
46
77
  var _hoisted_1 = {
47
- "class": "fw-accordion rounded border border-grey-40"
78
+ "class": "fw-accordion rounded-sm border border-grey-40"
48
79
  };
49
80
  var _hoisted_2 = {
50
81
  "class": "flex flex-row items-center justify-between w-full"
@@ -53,9 +84,6 @@ var _hoisted_3 = {
53
84
  "class": "flex flex-row items-center"
54
85
  };
55
86
  var _hoisted_4 = {
56
- "class": "h4 mb-0 ml-6"
57
- };
58
- var _hoisted_5 = {
59
87
  key: 0,
60
88
  "class": "h4"
61
89
  };
@@ -64,31 +92,36 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
64
92
  onClick: _cache[0] || (_cache[0] = function ($event) {
65
93
  return _ctx.isOpen = !_ctx.isOpen;
66
94
  }),
67
- "class": "fw-accordion--header px-8 py-4 bg-grey-lightest w-full border-opacity-0 hover:bg-grey-20"
68
- }, [createElementVNode("div", _hoisted_2, [createElementVNode("div", _hoisted_3, [createElementVNode("span", {
95
+ type: "button",
96
+ "class": normalizeClass(["fw-accordion--header px-8 py-4 bg-white w-full transition-all duration-100 ease-in focus:outline-primary", _ctx.isOpen ? 'fw-accordion--header-open' : ''])
97
+ }, [createElementVNode("div", _hoisted_2, [createElementVNode("div", _hoisted_3, [_ctx.iconPositionStart ? (openBlock(), createElementBlock("span", {
98
+ key: 0,
99
+ "class": normalizeClass(["fw-accordion--icon", _ctx.isOpen ? 'fw-accordion--icon-open' : ''])
100
+ }, null, 2)) : createCommentVNode("", true), createElementVNode("span", {
101
+ "class": normalizeClass(["h4 mb-0", _ctx.iconPositionStart ? 'ml-6' : 'ml-0'])
102
+ }, toDisplayString(_ctx.title), 3)]), _ctx.suffixTitle ? (openBlock(), createElementBlock("span", _hoisted_4, toDisplayString(_ctx.suffixTitle), 1)) : createCommentVNode("", true), !_ctx.iconPositionStart ? (openBlock(), createElementBlock("span", {
103
+ key: 1,
69
104
  "class": normalizeClass(["fw-accordion--icon", _ctx.isOpen ? 'fw-accordion--icon-open' : ''])
70
- }, null, 2), createElementVNode("span", _hoisted_4, toDisplayString(_ctx.title), 1)]), _ctx.suffixTitle ? (openBlock(), createElementBlock("span", _hoisted_5, toDisplayString(_ctx.suffixTitle), 1)) : createCommentVNode("", true)])]), createVNode(Transition, {
71
- name: "slideInOut",
72
- onBeforeEnter: _ctx.transitionEnter,
73
- onEnter: _ctx.transitionEnter,
74
- onBeforeLeave: _ctx.transitionLeave,
75
- onLeave: _ctx.transitionLeave,
76
- "class": "transition-all duration-300 ease-in-out overflow-hidden"
105
+ }, null, 2)) : createCommentVNode("", true)])], 2), createVNode(Transition, {
106
+ name: "fw-accordion-transition",
107
+ onBeforeEnter: _ctx.beforeEnter,
108
+ onEnter: _ctx.enter,
109
+ onBeforeLeave: _ctx.beforeLeave,
110
+ onLeave: _ctx.leave,
111
+ "class": "transition-all duration-300 ease-in overflow-hidden"
77
112
  }, {
78
113
  "default": withCtx(function () {
79
- return [_ctx.$slots["default"] && _ctx.isOpen ? renderSlot(_ctx.$slots, "default", {
80
- key: 0
81
- }) : createCommentVNode("", true)];
114
+ return [withDirectives(createElementVNode("div", null, [renderSlot(_ctx.$slots, "default")], 512), [[vShow, _ctx.$slots["default"] && _ctx.isOpen]])];
82
115
  }),
83
116
  _: 3
84
117
  }, 8, ["onBeforeEnter", "onEnter", "onBeforeLeave", "onLeave"])]);
85
118
  }
86
119
 
87
- var css_248z = ".fw-accordion--icon[data-v-c9209c42]{position:relative}.fw-accordion--icon[data-v-c9209c42]:after,.fw-accordion--icon[data-v-c9209c42]:before{background:var(--colorBody);border-radius:3px;content:\"\";height:.2rem;left:50%;position:absolute;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transition:.3s ease-in-out;transition:.3s ease-in-out;width:1rem}.fw-accordion--icon[data-v-c9209c42]:after{-webkit-transform:translate(-50%,-50%) rotate(90deg);-ms-transform:translate(-50%,-50%) rotate(90deg);transform:translate(-50%,-50%) rotate(90deg)}.fw-accordion--icon-open[data-v-c9209c42]:after{width:0}";
88
- var stylesheet = ".fw-accordion--icon[data-v-c9209c42]{position:relative}.fw-accordion--icon[data-v-c9209c42]:after,.fw-accordion--icon[data-v-c9209c42]:before{background:var(--colorBody);border-radius:3px;content:\"\";height:.2rem;left:50%;position:absolute;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transition:.3s ease-in-out;transition:.3s ease-in-out;width:1rem}.fw-accordion--icon[data-v-c9209c42]:after{-webkit-transform:translate(-50%,-50%) rotate(90deg);-ms-transform:translate(-50%,-50%) rotate(90deg);transform:translate(-50%,-50%) rotate(90deg)}.fw-accordion--icon-open[data-v-c9209c42]:after{width:0}";
120
+ var css_248z = ".fw-accordion--header-open[data-v-5123413b],.fw-accordion--header[data-v-5123413b]:focus-visible,.fw-accordion--header[data-v-5123413b]:hover{background-color:var(--0ec0724b)}.fw-accordion--icon[data-v-5123413b]{position:relative}.fw-accordion--icon[data-v-5123413b]:after,.fw-accordion--icon[data-v-5123413b]:before{background:var(--colorBody);border-radius:3px;content:\"\";height:.2rem;left:50%;position:absolute;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transition:.3s ease-in-out;transition:.3s ease-in-out;width:1rem}.fw-accordion--icon[data-v-5123413b]:after{-webkit-transform:translate(-50%,-50%) rotate(90deg);-ms-transform:translate(-50%,-50%) rotate(90deg);transform:translate(-50%,-50%) rotate(90deg)}.fw-accordion--icon-open[data-v-5123413b]:after{width:0}";
121
+ var stylesheet = ".fw-accordion--header-open[data-v-5123413b],.fw-accordion--header[data-v-5123413b]:focus-visible,.fw-accordion--header[data-v-5123413b]:hover{background-color:var(--0ec0724b)}.fw-accordion--icon[data-v-5123413b]{position:relative}.fw-accordion--icon[data-v-5123413b]:after,.fw-accordion--icon[data-v-5123413b]:before{background:var(--colorBody);border-radius:3px;content:\"\";height:.2rem;left:50%;position:absolute;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transition:.3s ease-in-out;transition:.3s ease-in-out;width:1rem}.fw-accordion--icon[data-v-5123413b]:after{-webkit-transform:translate(-50%,-50%) rotate(90deg);-ms-transform:translate(-50%,-50%) rotate(90deg);transform:translate(-50%,-50%) rotate(90deg)}.fw-accordion--icon-open[data-v-5123413b]:after{width:0}";
89
122
  styleInject(css_248z);
90
123
 
91
- script.render = render;
92
- script.__scopeId = "data-v-c9209c42";
124
+ __default__.render = render;
125
+ __default__.__scopeId = "data-v-5123413b";
93
126
 
94
- export { script as FwAccordion };
127
+ export { __default__ as FwAccordion };
@@ -1,10 +1,10 @@
1
1
  import './es.number.constructor-d6ff8874.js';
2
2
  import { defineComponent, useCssVars, pushScopeId, popScopeId, createElementVNode, openBlock, createElementBlock, createStaticVNode } from 'vue';
3
3
  import { s as styleInject } from './style-inject.es-1f59c1d0.js';
4
- export { s as FwLoadingSpinner } from './fw-loading-spinner-7462e0b2.js';
4
+ export { s as FwLoadingSpinner } from './fw-loading-spinner-c394fafc.js';
5
5
  import './is-forced-752b5893.js';
6
6
  import './classof-39c30bd5.js';
7
- import './index-dbe0534d.js';
7
+ import './index-e4a2f8b0.js';
8
8
  import './check-94a5917a.js';
9
9
 
10
10
  var __default__$1 = defineComponent({
@@ -1,4 +1,4 @@
1
- export { s as FwBarChart } from './index-f0510452.js';
1
+ export { s as FwBarChart } from './index-2766bfe4.js';
2
2
  import './es.number.constructor-d6ff8874.js';
3
3
  import './is-forced-752b5893.js';
4
4
  import './classof-39c30bd5.js';
@@ -15,4 +15,5 @@ import './array-method-has-species-support-3d413468.js';
15
15
  import './es.function.name-557cb1f9.js';
16
16
  import './does-not-exceed-safe-integer-31d08811.js';
17
17
  import 'vue';
18
+ import './get-root-colours-e2a1cb28.js';
18
19
  import './uniqueId-fe08534a.js';
@@ -1,6 +1,6 @@
1
1
  import './es.array.includes-91be7771.js';
2
2
  import { defineComponent, ref, computed, resolveComponent, openBlock, createBlock, resolveDynamicComponent, normalizeClass, withCtx, createElementBlock, createElementVNode, renderSlot, createVNode, createCommentVNode } from 'vue';
3
- import { s as script$1 } from './fw-loading-spinner-7462e0b2.js';
3
+ import { s as script$1 } from './fw-loading-spinner-c394fafc.js';
4
4
  import { s as styleInject } from './style-inject.es-1f59c1d0.js';
5
5
 
6
6
  var script = defineComponent({
package/esm/fw-button.js CHANGED
@@ -1,4 +1,4 @@
1
- export { s as FwButton } from './fw-button-7902ae9e.js';
1
+ export { s as FwButton } from './fw-button-8d131219.js';
2
2
  import './es.array.includes-91be7771.js';
3
3
  import './is-forced-752b5893.js';
4
4
  import './export-a37ba078.js';
@@ -6,7 +6,7 @@ import './add-to-unscopables-2400f45b.js';
6
6
  import './object-create-f6f3a673.js';
7
7
  import './object-keys-4f5bf4e7.js';
8
8
  import 'vue';
9
- import './fw-loading-spinner-7462e0b2.js';
10
- import './index-dbe0534d.js';
9
+ import './fw-loading-spinner-c394fafc.js';
10
+ import './index-e4a2f8b0.js';
11
11
  import './check-94a5917a.js';
12
12
  import './style-inject.es-1f59c1d0.js';
@@ -19,12 +19,20 @@ var script = defineComponent({
19
19
  },
20
20
  props: {
21
21
  /**
22
- * The name of the input field. Must be unique per form.
22
+ * The name of the checkbox input field.
23
+ * Multiple checkboxes can use the same name with a unique value.
23
24
  */
24
25
  name: {
25
26
  type: String,
26
27
  required: true
27
28
  },
29
+ /**
30
+ * The value of the input field. Must be unique per name.
31
+ */
32
+ value: {
33
+ type: String,
34
+ required: false
35
+ },
28
36
  /**
29
37
  * Label for the input. Also renders to an aria-label attribute
30
38
  */
@@ -42,6 +50,13 @@ var script = defineComponent({
42
50
  */
43
51
  hint: {
44
52
  type: String
53
+ },
54
+ /**
55
+ * Enable or disable the error hidden element
56
+ */
57
+ enableErrors: {
58
+ type: Boolean,
59
+ "default": true
45
60
  }
46
61
  },
47
62
  setup: function setup() {
@@ -53,7 +68,7 @@ var script = defineComponent({
53
68
  });
54
69
 
55
70
  var _withScopeId = function _withScopeId(n) {
56
- return pushScopeId("data-v-3370ec5a"), n = n(), popScopeId(), n;
71
+ return pushScopeId("data-v-9ac45436"), n = n(), popScopeId(), n;
57
72
  };
58
73
  var _hoisted_1 = {
59
74
  "class": "fw-checkbox w-full"
@@ -65,6 +80,7 @@ var _hoisted_3 = ["for"];
65
80
  var _hoisted_4 = ["value", "name", "id"];
66
81
  var _hoisted_5 = ["innerHTML"];
67
82
  var _hoisted_6 = {
83
+ key: 0,
68
84
  "class": "italic text-sm font-medium min-h-[21px]"
69
85
  };
70
86
  var _hoisted_7 = {
@@ -78,7 +94,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
78
94
  var _component_InputField = resolveComponent("InputField");
79
95
  return openBlock(), createElementBlock("div", _hoisted_1, [createVNode(_component_InputField, {
80
96
  name: _ctx.name,
81
- value: _ctx.name,
97
+ value: _ctx.value ? _ctx.value : _ctx.name,
82
98
  type: "checkbox",
83
99
  rules: _ctx.rules
84
100
  }, {
@@ -91,7 +107,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
91
107
  "for": "fw-checkbox-".concat(_ctx.name, "-").concat(_ctx.uuid),
92
108
  "class": "inline-flex items-center mb-3"
93
109
  }, [createElementVNode("input", mergeProps(field, {
94
- value: _ctx.name,
110
+ value: _ctx.value ? _ctx.value : _ctx.name,
95
111
  name: "fw-checkbox-".concat(_ctx.name, "-").concat(_ctx.uuid),
96
112
  id: "fw-checkbox-".concat(_ctx.name, "-").concat(_ctx.uuid),
97
113
  type: "checkbox",
@@ -100,7 +116,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
100
116
  key: 0,
101
117
  "class": "ml-2",
102
118
  innerHTML: _ctx.label
103
- }, null, 8, _hoisted_5)) : createCommentVNode("", true)], 8, _hoisted_3), createElementVNode("div", _hoisted_6, [createVNode(Transition, {
119
+ }, null, 8, _hoisted_5)) : createCommentVNode("", true)], 8, _hoisted_3), _ctx.enableErrors ? (openBlock(), createElementBlock("div", _hoisted_6, [createVNode(Transition, {
104
120
  name: "fwFadeIn",
105
121
  mode: "out-in"
106
122
  }, {
@@ -108,17 +124,17 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
108
124
  return [(errorMessage || errors[0]) && meta.touched ? (openBlock(), createElementBlock("span", _hoisted_7, toDisplayString(errorMessage || errors[0]), 1)) : _ctx.hint ? (openBlock(), createElementBlock("span", _hoisted_8, toDisplayString(_ctx.hint), 1)) : createCommentVNode("", true)];
109
125
  }),
110
126
  _: 2
111
- }, 1024)])])];
127
+ }, 1024)])) : createCommentVNode("", true)])];
112
128
  }),
113
129
  _: 1
114
130
  }, 8, ["name", "value", "rules"])]);
115
131
  }
116
132
 
117
- var css_248z = ".fwFadeIn-enter-active[data-v-3370ec5a]{-webkit-animation:fwFadeIn-3370ec5a .35s;animation:fwFadeIn-3370ec5a .35s;-webkit-transition:opacity .35s ease-in;transition:opacity .35s ease-in}.fwFadeIn-leave-active[data-v-3370ec5a]{animation:fwFadeIn-3370ec5a .35s reverse;-webkit-transition:opacity .35s ease-out;transition:opacity .35s ease-out}@-webkit-keyframes fwFadeIn-3370ec5a{0%{opacity:0}to{opacity:1}}@keyframes fwFadeIn-3370ec5a{0%{opacity:0}to{opacity:1}}.fw-checkbox input[data-v-3370ec5a]{-ms-flex-negative:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-origin:border-box;display:inline-block;flex-shrink:0;-webkit-transition:background .2s ease-in;transition:background .2s ease-in;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle}.fw-checkbox input[data-v-3370ec5a]:checked{background-color:currentColor;background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='3 3 10 10' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.707 7.293a1 1 0 0 0-1.414 1.414l2 2a1 1 0 0 0 1.414 0l4-4a1 1 0 0 0-1.414-1.414L7 8.586 5.707 7.293z'/%3E%3C/svg%3E\");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}";
118
- var stylesheet = ".fwFadeIn-enter-active[data-v-3370ec5a]{-webkit-animation:fwFadeIn-3370ec5a .35s;animation:fwFadeIn-3370ec5a .35s;-webkit-transition:opacity .35s ease-in;transition:opacity .35s ease-in}.fwFadeIn-leave-active[data-v-3370ec5a]{animation:fwFadeIn-3370ec5a .35s reverse;-webkit-transition:opacity .35s ease-out;transition:opacity .35s ease-out}@-webkit-keyframes fwFadeIn-3370ec5a{0%{opacity:0}to{opacity:1}}@keyframes fwFadeIn-3370ec5a{0%{opacity:0}to{opacity:1}}.fw-checkbox input[data-v-3370ec5a]{-ms-flex-negative:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-origin:border-box;display:inline-block;flex-shrink:0;-webkit-transition:background .2s ease-in;transition:background .2s ease-in;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle}.fw-checkbox input[data-v-3370ec5a]:checked{background-color:currentColor;background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='3 3 10 10' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.707 7.293a1 1 0 0 0-1.414 1.414l2 2a1 1 0 0 0 1.414 0l4-4a1 1 0 0 0-1.414-1.414L7 8.586 5.707 7.293z'/%3E%3C/svg%3E\");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}";
133
+ var css_248z = ".fwFadeIn-enter-active[data-v-9ac45436]{-webkit-animation:fwFadeIn-9ac45436 .35s;animation:fwFadeIn-9ac45436 .35s;-webkit-transition:opacity .35s ease-in;transition:opacity .35s ease-in}.fwFadeIn-leave-active[data-v-9ac45436]{animation:fwFadeIn-9ac45436 .35s reverse;-webkit-transition:opacity .35s ease-out;transition:opacity .35s ease-out}@-webkit-keyframes fwFadeIn-9ac45436{0%{opacity:0}to{opacity:1}}@keyframes fwFadeIn-9ac45436{0%{opacity:0}to{opacity:1}}.fw-checkbox input[data-v-9ac45436]{-ms-flex-negative:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-origin:border-box;display:inline-block;flex-shrink:0;-webkit-transition:background .2s ease-in;transition:background .2s ease-in;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle}.fw-checkbox input[data-v-9ac45436]:checked{background-color:currentColor;background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='3 3 10 10' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.707 7.293a1 1 0 0 0-1.414 1.414l2 2a1 1 0 0 0 1.414 0l4-4a1 1 0 0 0-1.414-1.414L7 8.586 5.707 7.293z'/%3E%3C/svg%3E\");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}";
134
+ var stylesheet = ".fwFadeIn-enter-active[data-v-9ac45436]{-webkit-animation:fwFadeIn-9ac45436 .35s;animation:fwFadeIn-9ac45436 .35s;-webkit-transition:opacity .35s ease-in;transition:opacity .35s ease-in}.fwFadeIn-leave-active[data-v-9ac45436]{animation:fwFadeIn-9ac45436 .35s reverse;-webkit-transition:opacity .35s ease-out;transition:opacity .35s ease-out}@-webkit-keyframes fwFadeIn-9ac45436{0%{opacity:0}to{opacity:1}}@keyframes fwFadeIn-9ac45436{0%{opacity:0}to{opacity:1}}.fw-checkbox input[data-v-9ac45436]{-ms-flex-negative:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-origin:border-box;display:inline-block;flex-shrink:0;-webkit-transition:background .2s ease-in;transition:background .2s ease-in;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle}.fw-checkbox input[data-v-9ac45436]:checked{background-color:currentColor;background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='3 3 10 10' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.707 7.293a1 1 0 0 0-1.414 1.414l2 2a1 1 0 0 0 1.414 0l4-4a1 1 0 0 0-1.414-1.414L7 8.586 5.707 7.293z'/%3E%3C/svg%3E\");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}";
119
135
  styleInject(css_248z);
120
136
 
121
137
  script.render = render;
122
- script.__scopeId = "data-v-3370ec5a";
138
+ script.__scopeId = "data-v-9ac45436";
123
139
 
124
140
  export { script as FwCheckbox };
@@ -0,0 +1,225 @@
1
+ import './es.array.includes-91be7771.js';
2
+ import { defineComponent, ref, computed, onMounted, resolveComponent, openBlock, createBlock, Transition, withCtx, createElementBlock, normalizeClass, createElementVNode, renderSlot, createCommentVNode, createVNode, createTextVNode, toDisplayString } from 'vue';
3
+ import { s as script$1 } from './fw-button-8d131219.js';
4
+ import { u as uniqueId } from './uniqueId-fe08534a.js';
5
+ import { c as render$1 } from './index-e4a2f8b0.js';
6
+ import { s as styleInject } from './style-inject.es-1f59c1d0.js';
7
+ import './is-forced-752b5893.js';
8
+ import './export-a37ba078.js';
9
+ import './add-to-unscopables-2400f45b.js';
10
+ import './object-create-f6f3a673.js';
11
+ import './object-keys-4f5bf4e7.js';
12
+ import './fw-loading-spinner-c394fafc.js';
13
+ import './check-94a5917a.js';
14
+
15
+ var script = defineComponent({
16
+ name: 'FwDrawer',
17
+ components: {
18
+ FwButton: script$1,
19
+ XMarkSvg: render$1
20
+ },
21
+ emits: ['update:modelValue', 'cancel', 'confirm'],
22
+ props: {
23
+ /**
24
+ * The drawer's v-model. Controls the visibility of the drawer.
25
+ */
26
+ modelValue: {
27
+ type: Boolean
28
+ },
29
+ /**
30
+ * The header title of the drawer
31
+ */
32
+ header: {
33
+ type: String
34
+ },
35
+ /**
36
+ * The body description of the drawer
37
+ */
38
+ body: {
39
+ type: String
40
+ },
41
+ /**
42
+ * The aria role of the drawer container. Defaults to `dialog`
43
+ */
44
+ role: {
45
+ type: String,
46
+ "default": 'dialog'
47
+ },
48
+ /**
49
+ * Whether to show the cancel button
50
+ */
51
+ showCancel: {
52
+ type: Boolean,
53
+ "default": false
54
+ },
55
+ /**
56
+ * Whether to show the confirm button
57
+ */
58
+ showConfirm: {
59
+ type: Boolean,
60
+ "default": true
61
+ },
62
+ /**
63
+ * Custom text for the cancel button
64
+ */
65
+ cancelButtonText: {
66
+ type: String,
67
+ "default": 'Cancel'
68
+ },
69
+ /**
70
+ * Button variant for the cancel button
71
+ */
72
+ cancelButtonType: {
73
+ type: String,
74
+ "default": 'secondary',
75
+ validator: function validator(value) {
76
+ return ['primary', 'secondary', 'tertiary', 'error', 'success', 'link', 'text', 'transparent'].includes(value);
77
+ }
78
+ },
79
+ /**
80
+ * Custom text for the confirm button
81
+ */
82
+ confirmButtonText: {
83
+ type: String,
84
+ "default": 'Confirm'
85
+ },
86
+ /**
87
+ * Button variant for the confirm button
88
+ */
89
+ confirmButtonType: {
90
+ type: String,
91
+ "default": 'primary',
92
+ validator: function validator(value) {
93
+ return ['primary', 'secondary', 'tertiary', 'error', 'success', 'link', 'text', 'transparent'].includes(value);
94
+ }
95
+ }
96
+ },
97
+ setup: function setup(props, ctx) {
98
+ var baseDrawerClass = "fixed shadow-card top-0 right-0 z-40 h-screen bg-white";
99
+ var drawerFooterClass = "\n sticky bottom-0 w-full shadow-card bg-white p-4\n ";
100
+ var isMounted = ref(false);
101
+ var uuid = uniqueId();
102
+ var isOpen = computed({
103
+ get: function get() {
104
+ return props.modelValue;
105
+ },
106
+ set: function set(state) {
107
+ return ctx.emit('update:modelValue', state);
108
+ }
109
+ });
110
+ var onConfirmed = function onConfirmed() {
111
+ ctx.emit('confirm');
112
+ isOpen.value = false;
113
+ };
114
+ var onCancelled = function onCancelled() {
115
+ ctx.emit('cancel');
116
+ isOpen.value = false;
117
+ };
118
+ onMounted(function () {
119
+ isMounted.value = true;
120
+ });
121
+ return {
122
+ baseDrawerClass: baseDrawerClass,
123
+ drawerFooterClass: drawerFooterClass,
124
+ isOpen: isOpen,
125
+ uuid: uuid,
126
+ isMounted: isMounted,
127
+ onConfirmed: onConfirmed,
128
+ onCancelled: onCancelled
129
+ };
130
+ }
131
+ });
132
+
133
+ var _hoisted_1 = ["id"];
134
+ var _hoisted_2 = {
135
+ "class": "flex flex-row justify-between items-center p-4"
136
+ };
137
+ var _hoisted_3 = ["id"];
138
+ var _hoisted_4 = ["id"];
139
+ var _hoisted_5 = {
140
+ key: 0,
141
+ "class": "flex items-center"
142
+ };
143
+ var _hoisted_6 = {
144
+ key: 1,
145
+ "class": "flex items-center space-x-2"
146
+ };
147
+ function render(_ctx, _cache, $props, $setup, $data, $options) {
148
+ var _component_XMarkSvg = resolveComponent("XMarkSvg");
149
+ var _component_FwButton = resolveComponent("FwButton");
150
+ return openBlock(), createBlock(Transition, {
151
+ name: "drawerSlideInOut",
152
+ appear: ""
153
+ }, {
154
+ "default": withCtx(function () {
155
+ return [_ctx.isOpen ? (openBlock(), createElementBlock("div", {
156
+ key: 0,
157
+ id: "fw-drawer-".concat(_ctx.uuid),
158
+ "class": normalizeClass(["fw-drawer", _ctx.baseDrawerClass]),
159
+ tabindex: "-1",
160
+ "aria-labelledby": "drawer-label"
161
+ }, [createElementVNode("div", _hoisted_2, [_ctx.$slots.header ? (openBlock(), createElementBlock("h3", {
162
+ key: 0,
163
+ id: "drawer_".concat(_ctx.uuid, "_header"),
164
+ "class": "inline-flex items-center mb-0 text-body font-semibold"
165
+ }, [renderSlot(_ctx.$slots, "header")], 8, _hoisted_3)) : createCommentVNode("", true), createVNode(_component_FwButton, {
166
+ variant: "primary",
167
+ tabindex: "",
168
+ title: "Close drawer",
169
+ onClick: _cache[0] || (_cache[0] = function ($event) {
170
+ return _ctx.onCancelled();
171
+ }),
172
+ "class": "inline-block w-9 h-9 !p-0 shadow inline-flex items-center justify-center rounded-full"
173
+ }, {
174
+ "default": withCtx(function () {
175
+ return [createVNode(_component_XMarkSvg, {
176
+ "class": "w-6 h-6 inline-block m-0 transition-rotate duration-200"
177
+ })];
178
+ }),
179
+ _: 1
180
+ })]), _ctx.$slots.body ? (openBlock(), createElementBlock("div", {
181
+ key: 0,
182
+ "class": "fw-drawer-body h-screen overflow-y-scroll pb-[155px]",
183
+ id: "drawer_".concat(_ctx.uuid, "_body")
184
+ }, [renderSlot(_ctx.$slots, "body")], 8, _hoisted_4)) : createCommentVNode("", true), _ctx.$slots.footer || _ctx.showConfirm || _ctx.showCancel ? (openBlock(), createElementBlock("div", {
185
+ key: 1,
186
+ "class": normalizeClass(["fw-drawer-footer", _ctx.drawerFooterClass])
187
+ }, [_ctx.$slots.footer ? (openBlock(), createElementBlock("div", _hoisted_5, [renderSlot(_ctx.$slots, "footer")])) : (openBlock(), createElementBlock("div", _hoisted_6, [_ctx.showCancel ? (openBlock(), createBlock(_component_FwButton, {
188
+ key: 0,
189
+ "class": "basis-1/2",
190
+ variant: _ctx.cancelButtonType,
191
+ "aria-label": _ctx.cancelButtonText,
192
+ onClick: _cache[1] || (_cache[1] = function ($event) {
193
+ return _ctx.onCancelled();
194
+ })
195
+ }, {
196
+ "default": withCtx(function () {
197
+ return [createTextVNode(toDisplayString(_ctx.cancelButtonText), 1)];
198
+ }),
199
+ _: 1
200
+ }, 8, ["variant", "aria-label"])) : createCommentVNode("", true), _ctx.showConfirm ? (openBlock(), createBlock(_component_FwButton, {
201
+ key: 1,
202
+ "class": "basis-1/2",
203
+ variant: _ctx.confirmButtonType,
204
+ "aria-label": _ctx.confirmButtonText,
205
+ onClick: _cache[2] || (_cache[2] = function ($event) {
206
+ return _ctx.onConfirmed();
207
+ })
208
+ }, {
209
+ "default": withCtx(function () {
210
+ return [createTextVNode(toDisplayString(_ctx.confirmButtonText), 1)];
211
+ }),
212
+ _: 1
213
+ }, 8, ["variant", "aria-label"])) : createCommentVNode("", true)]))], 2)) : createCommentVNode("", true)], 10, _hoisted_1)) : createCommentVNode("", true)];
214
+ }),
215
+ _: 3
216
+ });
217
+ }
218
+
219
+ var css_248z = ".drawerSlideInOut-enter-active{-webkit-animation:drawerSlideInOut .4s;animation:drawerSlideInOut .4s;-webkit-transition:all .4s ease-in;transition:all .4s ease-in}.drawerSlideInOut-leave-active{animation:drawerSlideInOut .4s reverse;-webkit-transition:all .4s ease-in-out;transition:all .4s ease-in-out}@-webkit-keyframes drawerSlideInOut{0%{opacity:0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes drawerSlideInOut{0%{opacity:0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}";
220
+ var stylesheet = ".drawerSlideInOut-enter-active{-webkit-animation:drawerSlideInOut .4s;animation:drawerSlideInOut .4s;-webkit-transition:all .4s ease-in;transition:all .4s ease-in}.drawerSlideInOut-leave-active{animation:drawerSlideInOut .4s reverse;-webkit-transition:all .4s ease-in-out;transition:all .4s ease-in-out}@-webkit-keyframes drawerSlideInOut{0%{opacity:0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes drawerSlideInOut{0%{opacity:0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}";
221
+ styleInject(css_248z);
222
+
223
+ script.render = render;
224
+
225
+ export { script as FwDrawer };
@@ -1,7 +1,7 @@
1
1
  import './es.array.find-dfa1f42f.js';
2
2
  import { defineComponent, toRef, ref, computed, onMounted, onBeforeUnmount, pushScopeId, popScopeId, resolveComponent, openBlock, createElementBlock, toDisplayString, createCommentVNode, createElementVNode, normalizeClass, createVNode, Transition, withCtx, Fragment, renderList } from 'vue';
3
3
  import { u as useField } from './vee-validate.esm-a17a23c3.js';
4
- import { a as render$1 } from './index-dbe0534d.js';
4
+ import { b as render$1 } from './index-e4a2f8b0.js';
5
5
  import './es.function.name-557cb1f9.js';
6
6
  import { s as styleInject } from './style-inject.es-1f59c1d0.js';
7
7
  import './is-forced-752b5893.js';