@frollo/frollo-web-ui 9.0.1 → 9.0.3
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/cjs/index.js +10733 -3062
- package/esm/{_rollupPluginBabelHelpers-DODWUb5N.js → _rollupPluginBabelHelpers-BKlDnZ7n.js} +1 -1
- package/esm/fw-accordion.js +15 -18
- package/esm/fw-alert.js +32 -25
- package/esm/fw-bar-chart.js +265 -93
- package/esm/fw-button-DZTHZLjk.js +318 -0
- package/esm/fw-button.js +2 -2
- package/esm/{fw-card-D45R4kN-.js → fw-card-XGtsK2bM.js} +7 -10
- package/esm/fw-card.js +2 -2
- package/esm/fw-checkbox.js +8 -11
- package/esm/fw-date-picker.js +85 -49
- package/esm/fw-drawer.js +9 -9
- package/esm/{fw-dropdown-58wyuzsW.js → fw-dropdown-CSmYTm5O.js} +11 -14
- package/esm/fw-dropdown.js +7 -6
- package/esm/fw-form.js +1 -1
- package/esm/fw-icons.js +11 -12
- package/esm/fw-image-A2lXYs0u.js +325 -0
- package/esm/fw-image.js +5 -4
- package/esm/{fw-input-C2-cZ-BY.js → fw-input-BiPWWfK3.js} +12 -19
- package/esm/fw-input.js +3 -3
- package/esm/fw-loading-bar-3x4tkF1B.js +37 -0
- package/esm/fw-loading.js +89 -40
- package/esm/fw-media-picker.js +10 -653
- package/esm/fw-modal.js +11 -10
- package/esm/fw-navigation-menu.js +36 -41
- package/esm/fw-popover-BZ-zqUme.js +330 -0
- package/esm/fw-popover.js +2 -3
- package/esm/fw-progress-bar.js +1 -1
- package/esm/fw-provider-list.js +108 -88
- package/esm/fw-sidebar-menu.js +58 -51
- package/esm/fw-slider.js +64 -61
- package/esm/fw-switch.js +76 -49
- package/esm/fw-table-row-BU0xaybR.js +447 -0
- package/esm/fw-table.js +5 -6
- package/esm/fw-tabs.js +87 -35
- package/esm/fw-tag-BRxPc4zc.js +199 -0
- package/esm/fw-tag.js +4 -4
- package/esm/fw-toast.js +58 -76
- package/esm/fw-transactions-card.js +20 -20
- package/esm/{get-root-colours-DCjlYelc.js → get-root-colours-DCCAnRF4.js} +3 -1
- package/esm/index-C8z11jcJ.js +7583 -0
- package/esm/index-DHyRsKsZ.js +843 -0
- package/esm/index-eP2GMSdQ.js +755 -0
- package/esm/index.js +54 -61
- package/esm/{uniqueId-DZdGzBh8.js → uniqueId-DK6xzFd8.js} +1 -1
- package/esm/{vee-validate.esm-3ptvCDR1.js → vee-validate-0dtT5GSQ.js} +182 -305
- package/frollo-web-ui.esm.js +10790 -3117
- package/icons/circle-check.svg +4 -0
- package/index.d.ts +1522 -586
- package/package.json +11 -11
- package/styles/tailwind.css +34 -2
- package/types/components/fw-accordion/fw-accordion.vue.d.ts +9 -7
- package/types/components/fw-alert/fw-alert.vue.d.ts +11 -6
- package/types/components/fw-bar-chart/fw-bar-chart.vue.d.ts +15 -64
- package/types/components/fw-button/fw-button.vue.d.ts +11 -7
- package/types/components/fw-card/fw-card.vue.d.ts +6 -6
- package/types/components/fw-checkbox/fw-checkbox.vue.d.ts +365 -5
- package/types/components/fw-date-picker/fw-date-picker.vue.d.ts +3 -242
- package/types/components/fw-drawer/fw-drawer.vue.d.ts +11 -8
- package/types/components/fw-dropdown/fw-dropdown.vue.d.ts +20 -12
- package/types/components/fw-icons/fw-success-animation.vue.d.ts +1 -1
- package/types/components/fw-image/fw-image.vue.d.ts +33 -7
- package/types/components/fw-input/fw-input.vue.d.ts +368 -10
- package/types/components/fw-loading/fw-loading-bar.vue.d.ts +7 -5
- package/types/components/fw-loading/fw-loading-card.vue.d.ts +3 -1
- package/types/components/fw-loading/fw-loading-dots.vue.d.ts +8 -1
- package/types/components/fw-loading/fw-loading-table.vue.d.ts +11 -6
- package/types/components/fw-media-picker/fw-media-picker.vue.d.ts +27 -18
- package/types/components/fw-modal/fw-modal.vue.d.ts +11 -7
- package/types/components/fw-navigation-menu/fw-navigation-menu.vue.d.ts +12 -8
- package/types/components/fw-popover/fw-popover.vue.d.ts +16 -21
- package/types/components/fw-progress-bar/fw-progress-bar.vue.d.ts +6 -4
- package/types/components/fw-provider-list/fw-provider-list.vue.d.ts +20 -45
- package/types/components/fw-sidebar-menu/fw-sidebar-menu.vue.d.ts +13 -7
- package/types/components/fw-slider/fw-slider.vue.d.ts +11 -8
- package/types/components/fw-switch/fw-switch.vue.d.ts +383 -9
- package/types/components/fw-switch/index.types.d.ts +1 -0
- package/types/components/fw-table/fw-table-head.vue.d.ts +1 -1
- package/types/components/fw-table/fw-table-row.vue.d.ts +1 -1
- package/types/components/fw-table/fw-table.vue.d.ts +40 -19
- package/types/components/fw-table/index.types.d.ts +36 -2
- package/types/components/fw-tabs/fw-tab.vue.d.ts +4 -8
- package/types/components/fw-tabs/fw-tabs.vue.d.ts +11 -8
- package/types/components/fw-tabs/index.types.d.ts +14 -4
- package/types/components/fw-tag/fw-tag.vue.d.ts +14 -8
- package/types/components/fw-toast/fw-toast.vue.d.ts +17 -22
- package/types/components/fw-transactions-card/fw-transactions-card.vue.d.ts +6 -3
- package/types/directives/lazy-loader.d.ts +11 -2
- package/types/helpers/get-root-colours.d.ts +1 -0
- package/web-components/index.js +16793 -7702
- package/esm/fw-button-YMoW4x4c.js +0 -296
- package/esm/fw-image-D-OHafdw.js +0 -217
- package/esm/fw-loading-bar-DecYSBC_.js +0 -45
- package/esm/fw-popover-B4bsfuxm.js +0 -620
- package/esm/fw-table-row-Cgi8871h.js +0 -389
- package/esm/fw-tag-fDo50Nw7.js +0 -177
- package/esm/index-BsEH8YYr.js +0 -979
package/esm/fw-provider-list.js
CHANGED
|
@@ -1,26 +1,41 @@
|
|
|
1
|
-
import { e as _defineProperty, b as _toConsumableArray } from './_rollupPluginBabelHelpers-
|
|
2
|
-
import { defineComponent,
|
|
3
|
-
import { a as script, s as script$1, _ as __default__$4 } from './fw-table-row-
|
|
4
|
-
import { _ as __default__$3 } from './fw-input-
|
|
5
|
-
import { _ as __default__$1 } from './fw-tag-
|
|
6
|
-
import { s as script$2 } from './fw-button-
|
|
7
|
-
import { _ as __default__$2 } from './fw-dropdown-
|
|
8
|
-
import { l as render$1, m as render$2, n as render$3 } from './index-
|
|
9
|
-
import { u as useColours } from './get-root-colours-
|
|
1
|
+
import { f as _createForOfIteratorHelper, e as _defineProperty, b as _toConsumableArray } from './_rollupPluginBabelHelpers-BKlDnZ7n.js';
|
|
2
|
+
import { ref, watch, defineComponent, shallowRef, computed, useCssVars, resolveComponent, createElementBlock, openBlock, createElementVNode, toDisplayString, createVNode, withCtx, createBlock, createCommentVNode, createTextVNode } from 'vue';
|
|
3
|
+
import { a as script, s as script$1, _ as __default__$4 } from './fw-table-row-BU0xaybR.js';
|
|
4
|
+
import { _ as __default__$3 } from './fw-input-BiPWWfK3.js';
|
|
5
|
+
import { _ as __default__$1 } from './fw-tag-BRxPc4zc.js';
|
|
6
|
+
import { s as script$2 } from './fw-button-DZTHZLjk.js';
|
|
7
|
+
import { _ as __default__$2 } from './fw-dropdown-CSmYTm5O.js';
|
|
8
|
+
import { l as render$1, m as render$2, n as render$3 } from './index-DHyRsKsZ.js';
|
|
9
|
+
import { u as useColours } from './get-root-colours-DCCAnRF4.js';
|
|
10
10
|
import { s as styleInject } from './style-inject.es-tgCJW-Cu.js';
|
|
11
11
|
import './fw-button.js';
|
|
12
12
|
import './fw-loading.js';
|
|
13
|
-
import './fw-loading-bar-
|
|
14
|
-
import './vee-validate
|
|
15
|
-
import './fw-image-
|
|
13
|
+
import './fw-loading-bar-3x4tkF1B.js';
|
|
14
|
+
import './vee-validate-0dtT5GSQ.js';
|
|
15
|
+
import './fw-image-A2lXYs0u.js';
|
|
16
16
|
|
|
17
|
+
// tiny debounce helper (no deps)
|
|
18
|
+
var useDebouncedRef = function useDebouncedRef(initial) {
|
|
19
|
+
var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 150;
|
|
20
|
+
var state = ref(initial);
|
|
21
|
+
var debounced = ref(initial);
|
|
22
|
+
var timeNum;
|
|
23
|
+
watch(state, function (val) {
|
|
24
|
+
window.clearTimeout(timeNum);
|
|
25
|
+
timeNum = window.setTimeout(function () {
|
|
26
|
+
debounced.value = val;
|
|
27
|
+
}, delay);
|
|
28
|
+
}, {
|
|
29
|
+
flush: 'sync'
|
|
30
|
+
});
|
|
31
|
+
return {
|
|
32
|
+
state: state,
|
|
33
|
+
debounced: debounced
|
|
34
|
+
};
|
|
35
|
+
};
|
|
17
36
|
var __default__ = defineComponent({
|
|
18
37
|
name: 'FwProviderList',
|
|
19
|
-
emits: [
|
|
20
|
-
/**
|
|
21
|
-
* Emits the number of filtered items the user sees.
|
|
22
|
-
*/
|
|
23
|
-
'changed'],
|
|
38
|
+
emits: ['changed'],
|
|
24
39
|
components: {
|
|
25
40
|
FwTable: __default__$4,
|
|
26
41
|
FwInput: __default__$3,
|
|
@@ -34,94 +49,101 @@ var __default__ = defineComponent({
|
|
|
34
49
|
SolidXMarkSvg: render$1
|
|
35
50
|
},
|
|
36
51
|
props: {
|
|
37
|
-
/**
|
|
38
|
-
* The header heading of the list.
|
|
39
|
-
*/
|
|
40
52
|
heading: {
|
|
41
53
|
type: String
|
|
42
54
|
},
|
|
43
|
-
/**
|
|
44
|
-
* The list items of the table items.
|
|
45
|
-
*/
|
|
46
55
|
items: {
|
|
47
56
|
type: Array,
|
|
48
57
|
required: true
|
|
49
58
|
},
|
|
50
|
-
/**
|
|
51
|
-
* The table header title.
|
|
52
|
-
*/
|
|
53
59
|
tableHeaderName: {
|
|
54
60
|
type: String,
|
|
55
61
|
"default": 'Name'
|
|
56
62
|
},
|
|
57
|
-
/**
|
|
58
|
-
* The placeholder text for the search input.
|
|
59
|
-
*/
|
|
60
63
|
searchPlaceholder: {
|
|
61
64
|
type: String,
|
|
62
65
|
"default": 'Search'
|
|
63
66
|
},
|
|
64
|
-
/**
|
|
65
|
-
* The label text for the search input.
|
|
66
|
-
*/
|
|
67
67
|
searchLabel: {
|
|
68
68
|
type: String,
|
|
69
69
|
"default": 'Search by provider name'
|
|
70
70
|
},
|
|
71
|
-
/**
|
|
72
|
-
* The label text for the status filter dropdown.
|
|
73
|
-
*/
|
|
74
71
|
statusFilterLabel: {
|
|
75
72
|
type: String,
|
|
76
73
|
"default": 'Filter by status'
|
|
77
74
|
}
|
|
78
75
|
},
|
|
79
76
|
setup: function setup(props, ctx) {
|
|
80
|
-
|
|
77
|
+
// Debounced search
|
|
78
|
+
var _useDebouncedRef = useDebouncedRef('', 150),
|
|
79
|
+
searchFilterModel = _useDebouncedRef.state,
|
|
80
|
+
debouncedSearch = _useDebouncedRef.debounced;
|
|
81
81
|
var statusFilterModel = ref('all');
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
82
|
+
// Parse once per items change (avoid parsing on every reactive tick)
|
|
83
|
+
var parsedItems = shallowRef([]);
|
|
84
|
+
watch(function () {
|
|
86
85
|
return props.items;
|
|
86
|
+
}, function (items) {
|
|
87
|
+
parsedItems.value = typeof items === 'string' ? JSON.parse(items) : items;
|
|
88
|
+
}, {
|
|
89
|
+
immediate: true
|
|
87
90
|
});
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
return item.name.toString().toLowerCase().includes(searchFilterModel.value.toLowerCase());
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
if (statusFilterModel.value && statusFilterModel.value !== 'all') {
|
|
96
|
-
tempFilteredItems = tempFilteredItems.filter(function (item) {
|
|
97
|
-
return item.status === statusFilterModel.value;
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
return tempFilteredItems;
|
|
101
|
-
});
|
|
102
|
-
var options = _defineProperty(_defineProperty({}, 'status', {
|
|
103
|
-
disabled: true
|
|
104
|
-
}), props.tableHeaderName, {
|
|
105
|
-
isSortable: true,
|
|
106
|
-
initSortOrder: 'asc'
|
|
91
|
+
// Stable collator for fast locale-aware compare
|
|
92
|
+
var collator = new Intl.Collator(undefined, {
|
|
93
|
+
sensitivity: 'base',
|
|
94
|
+
numeric: true
|
|
107
95
|
});
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
96
|
+
// One pipeline: filter -> sort -> map to table format
|
|
97
|
+
var displayedTableItems = computed(function () {
|
|
98
|
+
var q = debouncedSearch.value.trim().toLowerCase();
|
|
99
|
+
var status = statusFilterModel.value;
|
|
100
|
+
// filter in a single pass
|
|
101
|
+
var filtered = [];
|
|
102
|
+
var _iterator = _createForOfIteratorHelper(parsedItems.value),
|
|
103
|
+
_step;
|
|
104
|
+
try {
|
|
105
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
106
|
+
var item = _step.value;
|
|
107
|
+
if (q && !item.name.toLowerCase().includes(q)) continue;
|
|
108
|
+
if (status !== 'all' && item.status !== status) continue;
|
|
109
|
+
filtered.push(item);
|
|
110
|
+
}
|
|
111
|
+
// sort BEFORE mapping; stable and correct
|
|
112
|
+
} catch (err) {
|
|
113
|
+
_iterator.e(err);
|
|
114
|
+
} finally {
|
|
115
|
+
_iterator.f();
|
|
116
|
+
}
|
|
117
|
+
filtered.sort(function (a, b) {
|
|
118
|
+
if (a.status === 'outage' && b.status !== 'outage') return -1;
|
|
119
|
+
if (b.status === 'outage' && a.status !== 'outage') return 1;
|
|
120
|
+
return collator.compare(a.name, b.name);
|
|
121
|
+
});
|
|
122
|
+
// map once to the shape FwTable expects
|
|
123
|
+
return filtered.map(function (item) {
|
|
124
|
+
return _defineProperty(_defineProperty({
|
|
125
|
+
status: item.status
|
|
126
|
+
}, props.tableHeaderName, "\n <div class=\"flex flex-row-reverse justify-end items-center\">\n <p class=\"mb-0 font-medium\">".concat(item.name, "</p>\n <img class=\"mr-2 w-[48px]\" alt=\"").concat(item.name, " logo\" src=\"").concat(item.image_url, "\" loading=\"lazy\" decoding=\"async\" />\n </div>\n ")), "id", item.name);
|
|
112
127
|
});
|
|
113
128
|
});
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
129
|
+
// Emit changes as a watcher (no side effects in computed)
|
|
130
|
+
watch(displayedTableItems, function (items) {
|
|
131
|
+
return ctx.emit('changed', items.length);
|
|
132
|
+
}, {
|
|
133
|
+
immediate: true
|
|
134
|
+
});
|
|
135
|
+
var options = computed(function () {
|
|
136
|
+
return _defineProperty(_defineProperty({
|
|
137
|
+
status: {
|
|
138
|
+
disabled: true
|
|
120
139
|
}
|
|
121
|
-
|
|
140
|
+
}, props.tableHeaderName, {
|
|
141
|
+
isSortable: true,
|
|
142
|
+
initSortOrder: 'asc',
|
|
143
|
+
html: true
|
|
144
|
+
}), "id", {
|
|
145
|
+
disabled: true
|
|
122
146
|
});
|
|
123
|
-
ctx.emit('changed', sortedItems.length);
|
|
124
|
-
return sortedItems;
|
|
125
147
|
});
|
|
126
148
|
var _useColours = useColours(),
|
|
127
149
|
primaryFade5 = _useColours.primaryFade5,
|
|
@@ -129,7 +151,8 @@ var __default__ = defineComponent({
|
|
|
129
151
|
primaryFade40 = _useColours.primaryFade40;
|
|
130
152
|
return {
|
|
131
153
|
options: options,
|
|
132
|
-
sortedTableItems:
|
|
154
|
+
sortedTableItems: displayedTableItems,
|
|
155
|
+
// keep template the same
|
|
133
156
|
searchFilterModel: searchFilterModel,
|
|
134
157
|
statusFilterModel: statusFilterModel,
|
|
135
158
|
primaryFade5: primaryFade5,
|
|
@@ -141,9 +164,7 @@ var __default__ = defineComponent({
|
|
|
141
164
|
var __injectCSSVars__ = function __injectCSSVars__() {
|
|
142
165
|
useCssVars(function (_ctx) {
|
|
143
166
|
return {
|
|
144
|
-
"
|
|
145
|
-
"f6b78c08": _ctx.primaryFade20,
|
|
146
|
-
"f6b78b8c": _ctx.primaryFade40
|
|
167
|
+
"v1fe77e94": _ctx.primaryFade5
|
|
147
168
|
};
|
|
148
169
|
});
|
|
149
170
|
};
|
|
@@ -172,10 +193,6 @@ var _hoisted_5 = {
|
|
|
172
193
|
var _hoisted_6 = {
|
|
173
194
|
key: 1
|
|
174
195
|
};
|
|
175
|
-
var _hoisted_7 = /*#__PURE__*/createElementVNode("h4", {
|
|
176
|
-
"class": "w-full font-medium text-center my-6"
|
|
177
|
-
}, "Sorry, we could not find any results.", -1);
|
|
178
|
-
var _hoisted_8 = [_hoisted_7];
|
|
179
196
|
function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
180
197
|
var _component_SearchSvg = resolveComponent("SearchSvg");
|
|
181
198
|
var _component_SolidXMarkSvg = resolveComponent("SolidXMarkSvg");
|
|
@@ -247,16 +264,17 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
247
264
|
value: 'supported'
|
|
248
265
|
}]
|
|
249
266
|
}, null, 8, ["modelValue", "label"])])]), _ctx.sortedTableItems && _ctx.sortedTableItems.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_5, [createVNode(_component_FwTable, {
|
|
250
|
-
"class": "w-full",
|
|
267
|
+
"class": "w-full fw-scrollable-horizontal",
|
|
251
268
|
items: _ctx.sortedTableItems,
|
|
252
|
-
options: _ctx.options
|
|
269
|
+
options: _ctx.options,
|
|
270
|
+
"row-key": "id"
|
|
253
271
|
}, {
|
|
254
272
|
preHead: withCtx(function () {
|
|
255
273
|
return [createVNode(_component_FwTableHead, {
|
|
256
274
|
"class": "w-[150px] md:w-[200px]"
|
|
257
275
|
}, {
|
|
258
276
|
"default": withCtx(function () {
|
|
259
|
-
return [createTextVNode(" Status ")];
|
|
277
|
+
return _toConsumableArray(_cache[3] || (_cache[3] = [createTextVNode(" Status ", -1)]));
|
|
260
278
|
}),
|
|
261
279
|
_: 1
|
|
262
280
|
})];
|
|
@@ -276,7 +294,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
276
294
|
return [createVNode(_component_SolidXMarkSvg, {
|
|
277
295
|
name: "solid-xmark",
|
|
278
296
|
"class": "w-4 h-4 mr-1"
|
|
279
|
-
}), createTextVNode("Outage ")];
|
|
297
|
+
}), _cache[4] || (_cache[4] = createTextVNode("Outage ", -1))];
|
|
280
298
|
}),
|
|
281
299
|
_: 1
|
|
282
300
|
})) : (openBlock(), createBlock(_component_FwTag, {
|
|
@@ -288,7 +306,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
288
306
|
return [createVNode(_component_SolidCheckSvg, {
|
|
289
307
|
name: "solid-check",
|
|
290
308
|
"class": "w-4 h-4 mr-1"
|
|
291
|
-
}), createTextVNode(" Available ")];
|
|
309
|
+
}), _cache[5] || (_cache[5] = createTextVNode(" Available ", -1))];
|
|
292
310
|
}),
|
|
293
311
|
_: 1
|
|
294
312
|
}))];
|
|
@@ -297,11 +315,13 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
297
315
|
}, 1024)];
|
|
298
316
|
}),
|
|
299
317
|
_: 1
|
|
300
|
-
}, 8, ["items", "options"])])) : (openBlock(), createElementBlock("div", _hoisted_6,
|
|
318
|
+
}, 8, ["items", "options"])])) : (openBlock(), createElementBlock("div", _hoisted_6, _toConsumableArray(_cache[6] || (_cache[6] = [createElementVNode("h4", {
|
|
319
|
+
"class": "w-full font-medium text-center my-6"
|
|
320
|
+
}, "Sorry, we could not find any results.", -1)]))))]);
|
|
301
321
|
}
|
|
302
322
|
|
|
303
|
-
var css_248z = ".fw-provider-list--table{background-color:var(--
|
|
304
|
-
var stylesheet = ".fw-provider-list--table{background-color:var(--
|
|
323
|
+
var css_248z = ".fw-provider-list--table{background-color:var(--v1fe77e94)}";
|
|
324
|
+
var stylesheet = ".fw-provider-list--table{background-color:var(--v1fe77e94)}";
|
|
305
325
|
styleInject(css_248z);
|
|
306
326
|
|
|
307
327
|
__default__.render = render;
|
package/esm/fw-sidebar-menu.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { defineComponent, computed, resolveComponent,
|
|
2
|
-
import { s as script$1 } from './fw-button-
|
|
3
|
-
import { o as render$1 } from './index-
|
|
1
|
+
import { defineComponent, computed, resolveComponent, withDirectives, openBlock, createElementBlock, normalizeClass, createVNode, createElementVNode, withCtx, createCommentVNode, renderSlot, Fragment, renderList, createBlock, createTextVNode, toDisplayString, vShow } from 'vue';
|
|
2
|
+
import { s as script$1 } from './fw-button-DZTHZLjk.js';
|
|
3
|
+
import { o as render$1 } from './index-DHyRsKsZ.js';
|
|
4
4
|
import { s as styleInject } from './style-inject.es-tgCJW-Cu.js';
|
|
5
5
|
|
|
6
6
|
var script = defineComponent({
|
|
@@ -58,7 +58,7 @@ var script = defineComponent({
|
|
|
58
58
|
}
|
|
59
59
|
},
|
|
60
60
|
setup: function setup(props, ctx) {
|
|
61
|
-
var baseClass =
|
|
61
|
+
var baseClass = 'h-full shadow-md border-r border-grey-20 fixed top-0 left-0 ' + 'transition-[width] duration-300 ease-out';
|
|
62
62
|
var isMenuOpen = computed({
|
|
63
63
|
get: function get() {
|
|
64
64
|
return props.modelValue;
|
|
@@ -67,84 +67,91 @@ var script = defineComponent({
|
|
|
67
67
|
return ctx.emit('update:modelValue', state);
|
|
68
68
|
}
|
|
69
69
|
});
|
|
70
|
+
var hasItems = computed(function () {
|
|
71
|
+
return Array.isArray(props.menuItems) && props.menuItems.length > 0;
|
|
72
|
+
});
|
|
73
|
+
var enabledItems = computed(function () {
|
|
74
|
+
var _props$menuItems;
|
|
75
|
+
return ((_props$menuItems = props.menuItems) !== null && _props$menuItems !== void 0 ? _props$menuItems : []).filter(function (i) {
|
|
76
|
+
return !i.disabled;
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
var widthClass = computed(function () {
|
|
80
|
+
return isMenuOpen.value ? props.openWidth : props.closedWidth;
|
|
81
|
+
});
|
|
70
82
|
var toggleMenu = function toggleMenu() {
|
|
71
|
-
|
|
72
|
-
|
|
83
|
+
var next = !isMenuOpen.value;
|
|
84
|
+
isMenuOpen.value = next;
|
|
85
|
+
ctx.emit('toggled', next ? props.openWidth : props.closedWidth);
|
|
73
86
|
};
|
|
74
87
|
return {
|
|
75
88
|
baseClass: baseClass,
|
|
76
89
|
isMenuOpen: isMenuOpen,
|
|
77
|
-
toggleMenu: toggleMenu
|
|
90
|
+
toggleMenu: toggleMenu,
|
|
91
|
+
enabledItems: enabledItems,
|
|
92
|
+
hasItems: hasItems,
|
|
93
|
+
widthClass: widthClass
|
|
78
94
|
};
|
|
79
95
|
}
|
|
80
96
|
});
|
|
81
97
|
|
|
82
98
|
var _hoisted_1 = {
|
|
83
|
-
"class": "flex flex-col px-4 py-8"
|
|
84
|
-
};
|
|
85
|
-
var _hoisted_2 = {
|
|
86
99
|
key: 0,
|
|
87
100
|
"class": "text-left px-4 pb-6"
|
|
88
101
|
};
|
|
89
|
-
var
|
|
102
|
+
var _hoisted_2 = {
|
|
90
103
|
"class": "flex flex-col space-y-1"
|
|
91
104
|
};
|
|
92
105
|
function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
93
|
-
var _ctx$menuItems;
|
|
94
106
|
var _component_ChevronRightSvg = resolveComponent("ChevronRightSvg");
|
|
95
107
|
var _component_FwButton = resolveComponent("FwButton");
|
|
96
|
-
return
|
|
97
|
-
|
|
98
|
-
"class": normalizeClass(["fw-sidebar-menu", [_ctx.baseClass, _ctx.isMenuOpen ? _ctx.openWidth : _ctx.closedWidth]]),
|
|
108
|
+
return withDirectives((openBlock(), createElementBlock("aside", {
|
|
109
|
+
"class": normalizeClass(["fw-sidebar-menu", [_ctx.baseClass, _ctx.widthClass]]),
|
|
99
110
|
"aria-label": "Aside navigation menu"
|
|
100
111
|
}, [createVNode(_component_FwButton, {
|
|
101
112
|
variant: _ctx.toggleButtonVariant,
|
|
102
|
-
tabindex: "",
|
|
113
|
+
tabindex: "0",
|
|
103
114
|
title: _ctx.isMenuOpen ? 'Close sidebar navigation menu' : 'Open sidebar navigation menu',
|
|
104
|
-
onClick:
|
|
105
|
-
|
|
106
|
-
}),
|
|
107
|
-
"class": normalizeClass(["inline-block w-9 h-9 !p-0 shadow absolute top-4 -right-4 rounded-full", _ctx.toggleButtonClass])
|
|
115
|
+
onClick: _ctx.toggleMenu,
|
|
116
|
+
"class": normalizeClass(["inline-block w-9 h-9 !p-0 shadow !absolute top-4 -right-4 rounded-full z-[2]", _ctx.toggleButtonClass])
|
|
108
117
|
}, {
|
|
109
118
|
"default": withCtx(function () {
|
|
110
119
|
return [createVNode(_component_ChevronRightSvg, {
|
|
111
120
|
name: "chevron-right",
|
|
112
|
-
"class": normalizeClass(["size-6 inline-block m-0
|
|
121
|
+
"class": normalizeClass(["size-6 inline-block m-0 fw-sidebar-menu-toggle", {
|
|
122
|
+
'fw-sidebar-menu-toggle--open': _ctx.isMenuOpen
|
|
123
|
+
}])
|
|
113
124
|
}, null, 8, ["class"])];
|
|
114
125
|
}),
|
|
115
126
|
_: 1
|
|
116
|
-
}, 8, ["variant", "title", "class"]),
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
}), 128))])], 512), [[vShow, _ctx.isMenuOpen]])];
|
|
141
|
-
}),
|
|
142
|
-
_: 3
|
|
143
|
-
})], 2)) : createCommentVNode("", true);
|
|
127
|
+
}, 8, ["variant", "title", "onClick", "class"]), createElementVNode("div", {
|
|
128
|
+
"class": normalizeClass(["fw-sidebar-menu-contents", {
|
|
129
|
+
'fw-sidebar-menu-contents--closed': !_ctx.isMenuOpen
|
|
130
|
+
}])
|
|
131
|
+
}, [_ctx.$slots.title ? (openBlock(), createElementBlock("div", _hoisted_1, [renderSlot(_ctx.$slots, "title")])) : createCommentVNode("", true), createElementVNode("div", _hoisted_2, [(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.enabledItems, function (item, i) {
|
|
132
|
+
var _ref, _ref2;
|
|
133
|
+
return openBlock(), createBlock(_component_FwButton, {
|
|
134
|
+
key: (_ref = (_ref2 = i !== null && i !== void 0 ? i : item.href) !== null && _ref2 !== void 0 ? _ref2 : item.to) !== null && _ref !== void 0 ? _ref : item.label,
|
|
135
|
+
rounded: false,
|
|
136
|
+
"class": "!text-left !px-4 bg-transparent border-none !no-underline hover:!bg-brand-bg4 focus:bg-brand-bg4",
|
|
137
|
+
variant: "quaternary",
|
|
138
|
+
href: item.href,
|
|
139
|
+
to: item.to,
|
|
140
|
+
external: item.external,
|
|
141
|
+
size: "lg",
|
|
142
|
+
"aria-current": "page",
|
|
143
|
+
onClick: item.onClick
|
|
144
|
+
}, {
|
|
145
|
+
"default": withCtx(function () {
|
|
146
|
+
return [createTextVNode(toDisplayString(item.label), 1)];
|
|
147
|
+
}),
|
|
148
|
+
_: 2
|
|
149
|
+
}, 1032, ["href", "to", "external", "onClick"]);
|
|
150
|
+
}), 128))])], 2)], 2)), [[vShow, _ctx.hasItems]]);
|
|
144
151
|
}
|
|
145
152
|
|
|
146
|
-
var css_248z = ".sidebarMenuSlide-enter-active{-webkit-transition:
|
|
147
|
-
var stylesheet = ".sidebarMenuSlide-enter-active{-webkit-transition:
|
|
153
|
+
var css_248z = ".sidebarMenuSlide-enter-active,.sidebarMenuSlide-leave-active{-webkit-transition:opacity .18s ease,-webkit-transform .22s ease;transition:opacity .18s ease,-webkit-transform .22s ease;-moz-transition:transform .22s ease,opacity .18s ease,-moz-transform .22s ease;transition:transform .22s ease,opacity .18s ease;transition:transform .22s ease,opacity .18s ease,-webkit-transform .22s ease,-moz-transform .22s ease;will-change:transform,opacity}.sidebarMenuSlide-enter-from,.sidebarMenuSlide-leave-to{opacity:0;-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);-ms-transform:translateX(-8px);transform:translateX(-8px)}.fw-sidebar-menu-contents,.sidebarMenuSlide-enter-to,.sidebarMenuSlide-leave-from{opacity:1;-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.fw-sidebar-menu-contents{-webkit-box-orient:vertical;-webkit-box-direction:normal;-moz-box-orient:vertical;-moz-box-direction:normal;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;overflow:hidden;padding:2rem 1rem;-webkit-transition:opacity .16s ease,-webkit-transform .2s ease;transition:opacity .16s ease,-webkit-transform .2s ease;-moz-transition:opacity .16s ease,transform .2s ease,-moz-transform .2s ease;transition:opacity .16s ease,transform .2s ease;transition:opacity .16s ease,transform .2s ease,-webkit-transform .2s ease,-moz-transform .2s ease;-webkit-transition-delay:.16s;-moz-transition-delay:.16s;transition-delay:.16s;white-space:nowrap;will-change:opacity,transform}.fw-sidebar-menu-contents--closed{opacity:0;pointer-events:none;-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);-ms-transform:translateX(-8px);transform:translateX(-8px);-webkit-transition-delay:0ms;-moz-transition-delay:0ms;transition-delay:0ms;visibility:hidden}.fw-sidebar-menu-toggle{-webkit-transition:-webkit-transform .2s ease;transition:-webkit-transform .2s ease;-moz-transition:transform .2s ease,-moz-transform .2s ease;transition:transform .2s ease;transition:transform .2s ease,-webkit-transform .2s ease,-moz-transform .2s ease;will-change:transform}.fw-sidebar-menu-toggle--open{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}@media (prefers-reduced-motion:reduce){.fw-sidebar-menu-toggle,.sidebarMenuSlide-enter-active,.sidebarMenuSlide-leave-active{-webkit-transition:none!important;-moz-transition:none!important;transition:none!important}}.fw-sidebar-menu .fw-button--quaternary.router-link-active{background-color:var(--colorBg4)}";
|
|
154
|
+
var stylesheet = ".sidebarMenuSlide-enter-active,.sidebarMenuSlide-leave-active{-webkit-transition:opacity .18s ease,-webkit-transform .22s ease;transition:opacity .18s ease,-webkit-transform .22s ease;-moz-transition:transform .22s ease,opacity .18s ease,-moz-transform .22s ease;transition:transform .22s ease,opacity .18s ease;transition:transform .22s ease,opacity .18s ease,-webkit-transform .22s ease,-moz-transform .22s ease;will-change:transform,opacity}.sidebarMenuSlide-enter-from,.sidebarMenuSlide-leave-to{opacity:0;-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);-ms-transform:translateX(-8px);transform:translateX(-8px)}.fw-sidebar-menu-contents,.sidebarMenuSlide-enter-to,.sidebarMenuSlide-leave-from{opacity:1;-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.fw-sidebar-menu-contents{-webkit-box-orient:vertical;-webkit-box-direction:normal;-moz-box-orient:vertical;-moz-box-direction:normal;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;overflow:hidden;padding:2rem 1rem;-webkit-transition:opacity .16s ease,-webkit-transform .2s ease;transition:opacity .16s ease,-webkit-transform .2s ease;-moz-transition:opacity .16s ease,transform .2s ease,-moz-transform .2s ease;transition:opacity .16s ease,transform .2s ease;transition:opacity .16s ease,transform .2s ease,-webkit-transform .2s ease,-moz-transform .2s ease;-webkit-transition-delay:.16s;-moz-transition-delay:.16s;transition-delay:.16s;white-space:nowrap;will-change:opacity,transform}.fw-sidebar-menu-contents--closed{opacity:0;pointer-events:none;-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);-ms-transform:translateX(-8px);transform:translateX(-8px);-webkit-transition-delay:0ms;-moz-transition-delay:0ms;transition-delay:0ms;visibility:hidden}.fw-sidebar-menu-toggle{-webkit-transition:-webkit-transform .2s ease;transition:-webkit-transform .2s ease;-moz-transition:transform .2s ease,-moz-transform .2s ease;transition:transform .2s ease;transition:transform .2s ease,-webkit-transform .2s ease,-moz-transform .2s ease;will-change:transform}.fw-sidebar-menu-toggle--open{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}@media (prefers-reduced-motion:reduce){.fw-sidebar-menu-toggle,.sidebarMenuSlide-enter-active,.sidebarMenuSlide-leave-active{-webkit-transition:none!important;-moz-transition:none!important;transition:none!important}}.fw-sidebar-menu .fw-button--quaternary.router-link-active{background-color:var(--colorBg4)}";
|
|
148
155
|
styleInject(css_248z);
|
|
149
156
|
|
|
150
157
|
script.render = render;
|