@citruslime/ui 1.2.1-beta.0 → 2.0.0-beta.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/dist/.eslintrc.js +8 -2
- package/dist/@types/appUser.d.ts +1 -0
- package/dist/@types/components/grid/column.d.ts +2 -1
- package/dist/@types/components/header/index.d.ts +0 -1
- package/dist/@types/components/{header/navigation.d.ts → navigation/index.d.ts} +7 -4
- package/dist/@types/index.d.ts +1 -0
- package/dist/components/index.d.ts +17 -14
- package/dist/main.d.ts +1 -1
- package/dist/style.css +1 -1
- package/dist/theme.js +2 -4
- package/dist/ui.es.js +1 -1
- package/dist/ui.umd.js +1 -1
- package/package.json +7 -4
- package/src/components/accordion/cl-ui-accordion.vue +89 -0
- package/src/components/app/cl-ui-app.vue +35 -0
- package/src/components/button/{button.vue → cl-ui-button.vue} +26 -6
- package/src/components/calendar/cl-ui-calendar.vue +277 -0
- package/src/components/card/{card.vue → cl-ui-card.vue} +17 -1
- package/src/components/combo-box/cl-ui-combo-box.vue +357 -0
- package/src/components/combo-box/search-container/cl-ui-combo-box-search.vue +279 -0
- package/src/components/combo-box/search-container/{header-option/header-option.vue → header/cl-ui-combo-box-header.vue} +17 -2
- package/src/components/combo-box/search-container/selectable/cl-ui-combo-box-selectable.vue +99 -0
- package/src/components/footer/{footer.vue → cl-ui-footer.vue} +10 -2
- package/src/components/grid/cell/{cell.vue → cl-ui-grid-cell.vue} +90 -1
- package/src/components/grid/cl-ui-grid.vue +477 -0
- package/src/components/grid/filter/cl-ui-grid-filter.vue +270 -0
- package/src/components/grid/footer/{footer.vue → cl-ui-grid-footer.vue} +100 -5
- package/src/components/grid/header/cl-ui-grid-header.vue +76 -0
- package/src/components/grid/view-manager/cl-ui-grid-view-manager.vue +145 -0
- package/src/components/header/cl-ui-header.vue +11 -0
- package/src/components/header-helper/cl-ui-header-helper.vue +50 -0
- package/src/components/language-switcher/{language-switcher.vue → cl-ui-language-switcher.vue} +49 -3
- package/src/components/loading-spinner/cl-ui-loading-spinner.vue +16 -0
- package/src/components/login/{login.vue → cl-ui-login.vue} +101 -19
- package/src/components/modal/{modal.vue → cl-ui-modal.vue} +74 -2
- package/src/components/navigation/cl-ui-navigation.vue +124 -0
- package/src/components/notification/{notification.vue → cl-ui-notification.vue} +21 -2
- package/src/components/slider/cl-ui-slider.vue +145 -0
- package/src/components/accordion/accordion.vue +0 -30
- package/src/components/calendar/calendar.vue +0 -35
- package/src/components/combo-box/combo-box.vue +0 -79
- package/src/components/combo-box/search-container/search-container.vue +0 -57
- package/src/components/combo-box/search-container/selectable-option/selectable-option.vue +0 -27
- package/src/components/grid/filter/filter.vue +0 -93
- package/src/components/grid/grid.vue +0 -194
- package/src/components/grid/header/header.vue +0 -39
- package/src/components/grid/view-manager/view-manager.vue +0 -73
- package/src/components/header/header-helper/header-helper.vue +0 -95
- package/src/components/header/header.vue +0 -33
- package/src/components/header/navigation/navigation.vue +0 -84
- package/src/components/loading-spinner/loading-spinner.vue +0 -8
- package/src/components/slider/slider.vue +0 -41
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
<script lang="ts" src="./header-helper"></script>
|
|
2
|
-
|
|
3
|
-
<template>
|
|
4
|
-
<div class="flex items-center z-30"
|
|
5
|
-
:class="{
|
|
6
|
-
'cursor-pointer': !disabled
|
|
7
|
-
}">
|
|
8
|
-
<cl-ui-language-switcher v-model:current-locale="selectedLocale"
|
|
9
|
-
:supported-locales="supportedLocales"
|
|
10
|
-
:disabled="disabled" />
|
|
11
|
-
|
|
12
|
-
<div v-if="user !== null"
|
|
13
|
-
class="bg-blue-light ease-in-out flex h-14 hover:bg-blue-hover items-center lg:w-64 select-none text-white transition-colors uppercase w-12"
|
|
14
|
-
@click="toggleBox">
|
|
15
|
-
<div class="w-auto">
|
|
16
|
-
<div class="bg-secondary-default font-semibold h-8 leading-8 mx-2 rounded-full text-center text-xs w-8">
|
|
17
|
-
{{ user.userInitial }}
|
|
18
|
-
</div>
|
|
19
|
-
</div>
|
|
20
|
-
|
|
21
|
-
<div class="flex-1 hidden lg:inline-block ml-2">
|
|
22
|
-
<div class="flex font-semibold text-sm">
|
|
23
|
-
<div class="lg:w-36 overflow-ellipsis overflow-hidden whitespace-nowrap">
|
|
24
|
-
{{ user.userName }}
|
|
25
|
-
</div>
|
|
26
|
-
|
|
27
|
-
<div v-if="user.userGroup !== undefined && user.userGroup.groupName !== 'NOT LOGGED IN'"
|
|
28
|
-
class="hidden lg:inline-block mx-2">
|
|
29
|
-
#{{ user.userGroup.groupId }}
|
|
30
|
-
</div>
|
|
31
|
-
</div>
|
|
32
|
-
|
|
33
|
-
<div v-if="user.userGroup !== undefined"
|
|
34
|
-
class="lg:w-44 overflow-ellipsis overflow-hidden text-xs uppercase whitespace-nowrap">
|
|
35
|
-
{{ user.userGroup.groupName }}
|
|
36
|
-
</div>
|
|
37
|
-
</div>
|
|
38
|
-
</div>
|
|
39
|
-
|
|
40
|
-
<div class="bg-blue-default ease-in-out font-semibold h-14 hidden hover:bg-blue-hover items-center lg:flex px-4 select-none text-white transition-colors uppercase"
|
|
41
|
-
@click="toggleBox">
|
|
42
|
-
{{ helperLocalisations.helpLabel }}
|
|
43
|
-
</div>
|
|
44
|
-
</div>
|
|
45
|
-
|
|
46
|
-
<div class="absolute bg-white border border-grey-2 lg:w-80 right-4 shadow-xl top-20 w-72 z-30"
|
|
47
|
-
:class="{ 'block': display, 'hidden': !display }">
|
|
48
|
-
<div v-if="user"
|
|
49
|
-
class="bg-blue-default font-semibold p-2.5 text-white">
|
|
50
|
-
{{ helperLocalisations.helpMessage }}
|
|
51
|
-
</div>
|
|
52
|
-
|
|
53
|
-
<!--
|
|
54
|
-
TODO
|
|
55
|
-
<TawkTo v-if="showChildComponents" />
|
|
56
|
-
-->
|
|
57
|
-
|
|
58
|
-
<a v-if="supportLink !== null"
|
|
59
|
-
:href="supportLink"
|
|
60
|
-
target="_blank"
|
|
61
|
-
rel="noreferrer"
|
|
62
|
-
class="block border-b border-grey-2 cursor-pointer font-semibold hover:bg-grey-1 hover:text-grey-4 p-2.5 text-grey-4 text-sm">
|
|
63
|
-
<img class="inline-block mr-1"
|
|
64
|
-
src="../../../assets/images/feedback.png">
|
|
65
|
-
|
|
66
|
-
{{ helperLocalisations.support }}
|
|
67
|
-
</a>
|
|
68
|
-
|
|
69
|
-
<a v-if="feedbackLink !== null"
|
|
70
|
-
:href="feedbackLink"
|
|
71
|
-
target="_blank"
|
|
72
|
-
rel="noreferrer"
|
|
73
|
-
class="block border-b border-grey-2 cursor-pointer font-semibold hover:bg-grey-1 hover:text-grey-4 p-2.5 text-grey-4 text-sm">
|
|
74
|
-
<img class="inline-block mr-1"
|
|
75
|
-
src="../../../assets/images/portal.png">
|
|
76
|
-
|
|
77
|
-
{{ helperLocalisations.feedback }}
|
|
78
|
-
</a>
|
|
79
|
-
|
|
80
|
-
<a v-if="websiteLink !== null"
|
|
81
|
-
:href="websiteLink"
|
|
82
|
-
target="_blank"
|
|
83
|
-
rel="noreferrer"
|
|
84
|
-
class="block border-b border-grey-2 cursor-pointer font-semibold hover:bg-grey-1 hover:text-grey-4 p-2 text-grey-4 text-xs">
|
|
85
|
-
{{ helperLocalisations.website }}
|
|
86
|
-
</a>
|
|
87
|
-
|
|
88
|
-
<a v-if="userLoggedIn == true && logoutEnabled"
|
|
89
|
-
href="#"
|
|
90
|
-
class="block border-b border-grey-2 cursor-pointer font-semibold hover:bg-grey-1 hover:text-grey-4 p-2 text-grey-4 text-xs"
|
|
91
|
-
@click.prevent="logout">
|
|
92
|
-
{{ helperLocalisations.logout }}
|
|
93
|
-
</a>
|
|
94
|
-
</div>
|
|
95
|
-
</template>
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
<script lang="ts" src="./header"></script>
|
|
2
|
-
|
|
3
|
-
<template>
|
|
4
|
-
<div class="w-full">
|
|
5
|
-
<nav class="bg-secondary-default flex items-center justify-between min-h-[56px] relative w-full">
|
|
6
|
-
<div class="flex-1 ml-14 text-center z-30">
|
|
7
|
-
<img class="box-border h-6 inline-block lg:h-10 mx-4"
|
|
8
|
-
:class="{ 'cursor-pointer': !additionalActionsDisabled }"
|
|
9
|
-
:src="logoPath"
|
|
10
|
-
loading="lazy"
|
|
11
|
-
@click="logoSelected">
|
|
12
|
-
</div>
|
|
13
|
-
|
|
14
|
-
<cl-ui-header-helper v-if="!noHelper"
|
|
15
|
-
v-model:current-locale="selectedLocale"
|
|
16
|
-
:supported-locales="supportedLocales"
|
|
17
|
-
:disabled="additionalActionsDisabled"
|
|
18
|
-
:localisations="localisations"
|
|
19
|
-
:feedback-link="feedbackLink"
|
|
20
|
-
:support-link="supportLink"
|
|
21
|
-
:website-link="websiteLink"
|
|
22
|
-
:user-logged-in="userLoggedIn"
|
|
23
|
-
:logout-enabled="true"
|
|
24
|
-
:user="user"
|
|
25
|
-
@logout="logout" />
|
|
26
|
-
</nav>
|
|
27
|
-
|
|
28
|
-
<cl-ui-navigation :navigation="navigation"
|
|
29
|
-
@item-select="itemSelected"
|
|
30
|
-
@group-select="groupSelected"
|
|
31
|
-
@state-change="stateChanged" />
|
|
32
|
-
</div>
|
|
33
|
-
</template>
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
<script lang="ts" src="./navigation"></script>
|
|
2
|
-
|
|
3
|
-
<template>
|
|
4
|
-
<div v-if="navigation"
|
|
5
|
-
class="absolute h-full left-0 overflow-hidden top-0 w-full">
|
|
6
|
-
<div class="bg-link-default cursor-pointer delay-200 duration-200 ease-in-out flex h-14 hover:bg-link-light items-center relative transform transition-all w-14 z-40"
|
|
7
|
-
:class="{ 'lg:translate-x-80 translate-x-44': isOpen }"
|
|
8
|
-
@click.prevent="isOpen ? close() : open()">
|
|
9
|
-
<ph-list class="leading-10 text-white w-full"
|
|
10
|
-
:size="24"
|
|
11
|
-
weight="bold" />
|
|
12
|
-
</div>
|
|
13
|
-
|
|
14
|
-
<div v-show="isOpen"
|
|
15
|
-
class="bg-black cursor-pointer h-full opacity-40 relative w-full z-40"
|
|
16
|
-
@click="close">
|
|
17
|
-
</div>
|
|
18
|
-
|
|
19
|
-
<div class="absolute bg-white border border-grey-0 duration-200 ease-in-out h-full left-0 lg:w-80 overflow-y-auto top-0 transform transition-transform w-44 z-[45]"
|
|
20
|
-
:class="{ 'lg:-translate-x-96 -translate-x-48': !isOpen }">
|
|
21
|
-
<div class="h-14 p-4 relative">
|
|
22
|
-
<input class="!h-6 !p-1 !px-1.5 !text-xs"
|
|
23
|
-
:value="filter"
|
|
24
|
-
type="text"
|
|
25
|
-
@input="debounce(setFilter, [ $event.target?.value ])">
|
|
26
|
-
|
|
27
|
-
<ph-magnifying-glass v-show="filter === ''"
|
|
28
|
-
class="absolute right-5 text-grey-3 top-5"
|
|
29
|
-
:size="16" />
|
|
30
|
-
|
|
31
|
-
<ph-x v-show="filter !== ''"
|
|
32
|
-
class="absolute cursor-pointer right-5 text-grey-3 top-5"
|
|
33
|
-
:size="16"
|
|
34
|
-
@click="filter = ''" />
|
|
35
|
-
</div>
|
|
36
|
-
|
|
37
|
-
<div v-for="(group, index) in navigationList"
|
|
38
|
-
:key="index">
|
|
39
|
-
<div class="bg-grey-1 capitalize flex font-semibold items-center px-1 py-2 text-sm w-full"
|
|
40
|
-
:class="{ 'cursor-pointer': !group.disabled }"
|
|
41
|
-
@click="group.disabled ? null : groupSelected(group)">
|
|
42
|
-
<ph-caret-right v-show="group.collapsed"
|
|
43
|
-
class="mr-2"
|
|
44
|
-
:size="16" />
|
|
45
|
-
|
|
46
|
-
<ph-caret-down v-show="!group.collapsed"
|
|
47
|
-
class="mr-2"
|
|
48
|
-
:size="16" />
|
|
49
|
-
|
|
50
|
-
<span class="flex-1 min-w-min">
|
|
51
|
-
{{ group.caption }}
|
|
52
|
-
</span>
|
|
53
|
-
|
|
54
|
-
<component :is="group.icon"
|
|
55
|
-
v-if="group.icon !== null"
|
|
56
|
-
class="mr-1 w-auto"
|
|
57
|
-
:size="18" />
|
|
58
|
-
</div>
|
|
59
|
-
|
|
60
|
-
<template v-if="!group.collapsed">
|
|
61
|
-
<div v-for="(groupItem, groupIndex) in group.records"
|
|
62
|
-
:key="groupIndex"
|
|
63
|
-
class="border-link-default cursor-pointer text-xs w-full"
|
|
64
|
-
:class="{ 'border-l-4': groupItem.active }">
|
|
65
|
-
<a v-if="!groupItem.linkIsExternal"
|
|
66
|
-
class="bg-grey-0 block hover:bg-link-default hover:text-white py-1.5 text-black w-full"
|
|
67
|
-
:class="{ 'pl-5': groupItem.active, 'pl-6': !groupItem.active }"
|
|
68
|
-
@click="itemSelected(groupItem); close();">
|
|
69
|
-
{{ groupItem.caption }}
|
|
70
|
-
</a>
|
|
71
|
-
<a v-else
|
|
72
|
-
class="bg-grey-0 block hover:bg-link-default hover:text-white pl-6 py-1.5 text-black w-full"
|
|
73
|
-
:href="groupItem.link"
|
|
74
|
-
target="_blank "
|
|
75
|
-
rel="noreferrer"
|
|
76
|
-
@click="close">
|
|
77
|
-
{{ groupItem.caption }}
|
|
78
|
-
</a>
|
|
79
|
-
</div>
|
|
80
|
-
</template>
|
|
81
|
-
</div>
|
|
82
|
-
</div>
|
|
83
|
-
</div>
|
|
84
|
-
</template>
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
<script lang="ts" src="./slider"/>
|
|
2
|
-
|
|
3
|
-
<style scoped src="./slider.css"></style>
|
|
4
|
-
|
|
5
|
-
<template>
|
|
6
|
-
<div v-if="validProps"
|
|
7
|
-
v-bind="$attrs"
|
|
8
|
-
class="flex flex-wrap items-center">
|
|
9
|
-
<input class="!text-sm md:!h-8 md:!w-auto"
|
|
10
|
-
type="number"
|
|
11
|
-
:value="currentValue"
|
|
12
|
-
:min="min"
|
|
13
|
-
:max="max"
|
|
14
|
-
:step="step"
|
|
15
|
-
:disabled="disabled"
|
|
16
|
-
@input="debounce(updateCurrentValue, [ $event.target, $forceUpdate ])">
|
|
17
|
-
|
|
18
|
-
<div class="flex flex-1 flex-wrap items-center md:mt-0 mt-3">
|
|
19
|
-
<span class="bg-grey-0 leading-6 md:ml-2 ml-0 px-3 rounded-full text-center text-xs">
|
|
20
|
-
{{ n(min, Number.isInteger(min) ? NumberFormat.INTEGER : NumberFormat.DECIMAL, currentLocale ) }}
|
|
21
|
-
</span>
|
|
22
|
-
|
|
23
|
-
<input v-model.number="currentValue"
|
|
24
|
-
class="align-middle appearance-none bg-gradient-to-r border border-grey-2 delay-500 ease-in flex-1 h-5 ml-2 outline-none rounded-full transition-colors"
|
|
25
|
-
:style="{ background: `linear-gradient(to right, ${colour} 0%, ${colour} ${percentage}%, white ${percentage}%, white 100%)` }"
|
|
26
|
-
type="range"
|
|
27
|
-
:min="min"
|
|
28
|
-
:max="max"
|
|
29
|
-
:step="step"
|
|
30
|
-
:disabled="disabled">
|
|
31
|
-
|
|
32
|
-
<span class="bg-grey-0 leading-6 ml-2 px-3 rounded-full text-center text-xs">
|
|
33
|
-
{{ n(max, Number.isInteger(max) ? NumberFormat.INTEGER : NumberFormat.DECIMAL, currentLocale ) }}
|
|
34
|
-
</span>
|
|
35
|
-
</div>
|
|
36
|
-
</div>
|
|
37
|
-
<div v-else
|
|
38
|
-
class="emphasis-danger text-sm w-full">
|
|
39
|
-
{{ localisations.invalidProps }}
|
|
40
|
-
</div>
|
|
41
|
-
</template>
|