@inriver/inri 1.0.0
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/.eslintrc.js +5 -0
- package/componentProperties.d.ts +8 -0
- package/configs/base-eslint-config.js +36 -0
- package/configs/base-tailwind-config.js +149 -0
- package/i18n.ts +11 -0
- package/index.ts +25 -0
- package/package.json +36 -0
- package/src/components/CAutoBreadcrumbs.vue +72 -0
- package/src/components/CBtn.vue +98 -0
- package/src/components/CColorPicker.vue +55 -0
- package/src/components/CContextMenu.vue +29 -0
- package/src/components/CDatePicker.vue +51 -0
- package/src/components/CDeleteTileBtn.vue +52 -0
- package/src/components/CDialog.vue +253 -0
- package/src/components/CDialogCloseBtn.vue +9 -0
- package/src/components/CDirtyCheck.vue +68 -0
- package/src/components/CDrawer.vue +44 -0
- package/src/components/CDrawerButton.vue +91 -0
- package/src/components/CExpansionItem.vue +57 -0
- package/src/components/CExpansionItemWithCheckbox.vue +41 -0
- package/src/components/CFileDropzone.vue +114 -0
- package/src/components/CGrid.vue +101 -0
- package/src/components/CHeader.vue +10 -0
- package/src/components/CHeaderLinks.vue +61 -0
- package/src/components/CHeaderMenuLink.vue +51 -0
- package/src/components/CHeaderSearch.vue +142 -0
- package/src/components/CIconBtn.vue +70 -0
- package/src/components/CMenuItem.vue +66 -0
- package/src/components/CPageContainer.vue +11 -0
- package/src/components/CPageError.vue +24 -0
- package/src/components/CPageSpinner.vue +18 -0
- package/src/components/CSearch.vue +45 -0
- package/src/components/CSection.vue +29 -0
- package/src/components/CSectionTitle.vue +8 -0
- package/src/components/CSelect.vue +208 -0
- package/src/components/CSlideEffect.vue +62 -0
- package/src/components/CSpinner.vue +107 -0
- package/src/components/CTableActions.vue +16 -0
- package/src/components/CTileBtn.vue +178 -0
- package/src/components/CTimePicker.vue +42 -0
- package/src/components/CToggleGridView.vue +26 -0
- package/src/components/CToggleSidebarBtn.vue +19 -0
- package/src/components/CTooltip.vue +44 -0
- package/src/components/CTreeNode.vue +39 -0
- package/src/components/cards/CBannerCard.vue +103 -0
- package/src/components/cards/CSmallCard.vue +149 -0
- package/src/components/internal-components/ConfirmDialog.vue +78 -0
- package/src/composables/useDialog.ts +47 -0
- package/src/composables/useDirtyCheck.ts +25 -0
- package/src/composables/useDoubleClickListener.ts +28 -0
- package/src/composables/useSelectable.ts +62 -0
- package/src/composables/useTruncateChips.ts +46 -0
- package/src/i18n/de/index.ts +17 -0
- package/src/i18n/en/index.ts +84 -0
- package/src/i18n/es/index.ts +7 -0
- package/src/i18n/fr/index.ts +7 -0
- package/src/init/initInriFramework.ts +25 -0
- package/src/init/useInriApp.ts +55 -0
- package/src/layouts/CLayoutBlank.vue +7 -0
- package/src/layouts/CLayoutWithBackButton.vue +50 -0
- package/src/layouts/CLayoutWithSidebars.vue +46 -0
- package/src/layouts/layout-fragments/CPageAutoBreadcrumbs.vue +6 -0
- package/src/layouts/layout-fragments/CPageBackButton.vue +18 -0
- package/src/layouts/layout-fragments/CPageBlank.vue +20 -0
- package/src/layouts/layout-fragments/CPageFlexCol.vue +5 -0
- package/src/layouts/layout-fragments/CPageLeftSidebar.vue +5 -0
- package/src/layouts/layout-fragments/CPageMainContent.vue +5 -0
- package/src/layouts/layout-fragments/CPageOuterWrapper.vue +5 -0
- package/src/layouts/layout-fragments/CPageRightSidebar.vue +5 -0
- package/src/layouts/layout-fragments/CPageTitle.vue +34 -0
- package/src/plugins/dialog.ts +45 -0
- package/src/plugins/errors/ErrorFactories.ts +59 -0
- package/src/plugins/errors/Errors.ts +156 -0
- package/src/plugins/errors/Exception.ts +6 -0
- package/src/plugins/errors/globalErrorHandler.ts +21 -0
- package/src/plugins/errors/handleError.ts +34 -0
- package/src/plugins/errors/logger.ts +16 -0
- package/src/plugins/errors/vueErrorHandler.ts +26 -0
- package/src/plugins/globalAppConfig.ts +25 -0
- package/src/plugins/i18n.ts +46 -0
- package/src/plugins/inriIcons.ts +58 -0
- package/src/plugins/inriverQuasarComponentConfigurations.ts +67 -0
- package/src/plugins/library.ts +119 -0
- package/src/plugins/notify.ts +153 -0
- package/src/plugins/quasar-user-options.ts +19 -0
- package/src/plugins/validationRules.ts +292 -0
- package/src/shims-vue.d.ts +6 -0
- package/src/stores/inriStore.ts +54 -0
- package/src/stores/interfaceLanguageStore.ts +27 -0
- package/src/styles/_css-variables.scss +101 -0
- package/src/styles/_reset.scss +67 -0
- package/src/styles/_transitions.scss +9 -0
- package/src/styles/_utils.scss +15 -0
- package/src/styles/components/_breadcrumbs.scss +3 -0
- package/src/styles/components/_checkboxes.scss +17 -0
- package/src/styles/components/_chips.scss +17 -0
- package/src/styles/components/_forms.scss +203 -0
- package/src/styles/components/_menu.scss +12 -0
- package/src/styles/components/_notifications.scss +24 -0
- package/src/styles/components/_q-editor.scss +14 -0
- package/src/styles/components/_radio-buttons.scss +17 -0
- package/src/styles/components/_tables.scss +92 -0
- package/src/styles/components/_tooltips.scss +5 -0
- package/src/styles/components/_tree.scss +86 -0
- package/src/styles/components/_truncated-chips.scss +39 -0
- package/src/styles/main.scss +45 -0
- package/src/styles/quasar.variables.scss +50 -0
- package/src/typings.d.ts +70 -0
- package/src/utils/colorUtils.ts +73 -0
- package/src/utils/errorUtils.ts +37 -0
- package/src/utils/fileUtils.ts +57 -0
- package/src/utils/helpers.ts +6 -0
- package/src/utils/routeUtils.ts +23 -0
- package/tsconfig.json +37 -0
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
.c-input {
|
|
2
|
+
// Input, select etc overrides
|
|
3
|
+
&.q-field--outlined .q-field__control {
|
|
4
|
+
padding: 0 16px 0 12px;
|
|
5
|
+
border-radius: 5px;
|
|
6
|
+
background: var(--input-bg-color);
|
|
7
|
+
|
|
8
|
+
&::after {
|
|
9
|
+
border-width: 1px;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// Outline color
|
|
14
|
+
&.q-field--outlined .q-field__control::before {
|
|
15
|
+
border-color: var(--color-grey);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Focus
|
|
19
|
+
&.q-field--highlighted:not(.q-field--error) {
|
|
20
|
+
&.q-field--outlined .q-field__control::after {
|
|
21
|
+
border-color: var(--q-accent);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Padding below the input
|
|
26
|
+
&.q-field--with-bottom {
|
|
27
|
+
padding-bottom: 36px;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Label
|
|
31
|
+
.q-field__label {
|
|
32
|
+
transition: all 0.3s !important;
|
|
33
|
+
font-size: 14px;
|
|
34
|
+
color: var(--color-grey-dark);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Move the floated label
|
|
38
|
+
&.q-field--float .q-field__label {
|
|
39
|
+
top: 0 !important;
|
|
40
|
+
background: var(--input-bg-color);
|
|
41
|
+
padding: 0 4px;
|
|
42
|
+
left: -4px;
|
|
43
|
+
z-index: 1;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Set label color
|
|
47
|
+
&.q-field--float:not(.q-field--focused):not(.q-field--error) {
|
|
48
|
+
.q-field__label {
|
|
49
|
+
color: var(--color-grey-darker);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// If you have a prepended icon then offset the label to the left on focus
|
|
54
|
+
&.q-field--float {
|
|
55
|
+
.q-field__prepend + .q-field__control-container {
|
|
56
|
+
.q-field__label {
|
|
57
|
+
left: -34px;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Reset top padding on inputs to compensate for offset label
|
|
63
|
+
.q-field__native {
|
|
64
|
+
padding: 8px 0 !important;
|
|
65
|
+
|
|
66
|
+
// Smaller min-height than default
|
|
67
|
+
min-height: 40px !important;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Reset top padding on select boxes to compensate for offset label
|
|
71
|
+
&.q-field--auto-height.q-field--labeled .q-field__control-container {
|
|
72
|
+
padding-top: 0;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.q-field--auto-height {
|
|
76
|
+
min-height: 50px !important;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Field with errors and hints
|
|
80
|
+
.q-field__bottom {
|
|
81
|
+
padding-top: 4px;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Textarea overrides
|
|
85
|
+
&.q-textarea {
|
|
86
|
+
.q-field__control-container {
|
|
87
|
+
padding-top: 8px !important;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.q-field__control {
|
|
91
|
+
padding: 0;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
textarea {
|
|
95
|
+
resize: none !important;
|
|
96
|
+
padding: 8px 16px 8px 12px !important;
|
|
97
|
+
height: 138px;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.q-field__label {
|
|
101
|
+
left: 10px;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.q-field__append {
|
|
105
|
+
position: absolute;
|
|
106
|
+
right: 16px;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// Disabled input
|
|
111
|
+
&.q-field--disabled {
|
|
112
|
+
.q-field__control::before {
|
|
113
|
+
border-color: var(--color-grey-lighter) !important;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.q-field__native {
|
|
117
|
+
color: var(--color-grey-dark);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// Select overrides
|
|
122
|
+
.q-select__dropdown-icon {
|
|
123
|
+
color: var(--color-grey-dark);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
&.q-select--with-input .q-field__control {
|
|
127
|
+
cursor: pointer;
|
|
128
|
+
|
|
129
|
+
input {
|
|
130
|
+
cursor: pointer;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// Error icon
|
|
135
|
+
.mdi-alert-circle-outline {
|
|
136
|
+
font-size: 18px;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// Default modifier
|
|
141
|
+
.c-input.c-input--default:not(.q-textarea) {
|
|
142
|
+
.q-field__control {
|
|
143
|
+
height: auto;
|
|
144
|
+
min-height: 50px;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.q-field__label {
|
|
148
|
+
top: 15px;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.q-field__marginal {
|
|
152
|
+
height: 50px;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// Rounded
|
|
157
|
+
.c-input.q-field--rounded .q-field__control {
|
|
158
|
+
border-radius: 25px;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// Dense modifier
|
|
162
|
+
.c-input--dense {
|
|
163
|
+
// Outline color
|
|
164
|
+
&.q-field--outlined .q-field__control::before {
|
|
165
|
+
border-color: var(--color-grey);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.q-field__label {
|
|
169
|
+
color: var(--color-grey-darkest);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
::placeholder {
|
|
173
|
+
color: var(--color-text);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
&.q-textarea {
|
|
177
|
+
.q-field__control {
|
|
178
|
+
padding: 0;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
textarea {
|
|
182
|
+
padding: 8px 20px 8px 16px !important;
|
|
183
|
+
height: 80px;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.q-field__label {
|
|
187
|
+
left: 16px;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.q-field__append {
|
|
191
|
+
right: 20px;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
&.q-field--float .q-field__label {
|
|
196
|
+
top: -2px !important;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// Dense rounded
|
|
200
|
+
&.q-field--rounded .q-field__control {
|
|
201
|
+
padding: 0 16px;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
.c-notify {
|
|
2
|
+
.c-spinner {
|
|
3
|
+
width: 18px !important;
|
|
4
|
+
height: 18px !important;
|
|
5
|
+
color: #fff !important;
|
|
6
|
+
margin-right: 20px !important;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.q-notification__icon--additional {
|
|
10
|
+
margin-right: 20px;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
&.q-notification--standard {
|
|
14
|
+
.q-notification__actions {
|
|
15
|
+
padding: 0;
|
|
16
|
+
margin-right: 0;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.c-notify__btn {
|
|
22
|
+
padding: 8px;
|
|
23
|
+
margin-left: 12px;
|
|
24
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
.q-editor__toolbar-group + .q-editor__toolbar-group::before {
|
|
2
|
+
top: 0;
|
|
3
|
+
bottom: 0;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.q-editor .q-btn {
|
|
7
|
+
color: var(--color-grey-dark);
|
|
8
|
+
margin: 6px 0;
|
|
9
|
+
padding: 6px;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.q-editor__toolbar-group:first-child {
|
|
13
|
+
margin-left: 12px;
|
|
14
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
.c-radio {
|
|
2
|
+
&.q-radio[aria-label] {
|
|
3
|
+
max-width: max-content;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
&.q-radio.disabled {
|
|
7
|
+
opacity: 0.4 !important;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.q-radio__inner--falsy .q-radio__icon {
|
|
11
|
+
color: var(--radio-border-color);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.q-radio__label {
|
|
15
|
+
padding: 4px 10px;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
.c-table {
|
|
2
|
+
th {
|
|
3
|
+
padding: 7px 12px;
|
|
4
|
+
font-size: 14px;
|
|
5
|
+
font-weight: 500;
|
|
6
|
+
white-space: nowrap;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
td {
|
|
10
|
+
padding: 7px 12px;
|
|
11
|
+
border-bottom: none !important;
|
|
12
|
+
border-top: 1px solid var(--color-border);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
thead tr th {
|
|
16
|
+
position: sticky;
|
|
17
|
+
z-index: 1;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
thead tr:first-child th {
|
|
21
|
+
top: 0;
|
|
22
|
+
background: var(--table-header-bg-color);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
tbody tr:first-child td {
|
|
26
|
+
border-color: transparent;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
tbody tr.selected {
|
|
30
|
+
background-color: var(--item-selected-bg-color);
|
|
31
|
+
|
|
32
|
+
td {
|
|
33
|
+
border-color: transparent;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
td::after {
|
|
37
|
+
background: transparent;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Also hide the border from the next sibling
|
|
41
|
+
& + tr {
|
|
42
|
+
td {
|
|
43
|
+
border-color: transparent;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Hide the border on hovered items
|
|
49
|
+
tbody tr:hover {
|
|
50
|
+
td {
|
|
51
|
+
border-color: transparent;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Also hide the border from the next sibling
|
|
55
|
+
& + tr {
|
|
56
|
+
td {
|
|
57
|
+
border-color: transparent;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// This will align the content to the top instead of being centered
|
|
64
|
+
.c-table.align-top {
|
|
65
|
+
td {
|
|
66
|
+
padding: 14px 12px 13px;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
td {
|
|
70
|
+
vertical-align: top;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// If the items are selectable then we want to hide the default checkboxes
|
|
75
|
+
.c-table.hide-checkboxes {
|
|
76
|
+
th:first-child,
|
|
77
|
+
td:first-child {
|
|
78
|
+
display: none;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
th:first-child + th,
|
|
82
|
+
td:first-child + td {
|
|
83
|
+
border-left: 0;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.c-table.with-action-buttons {
|
|
88
|
+
th:last-child,
|
|
89
|
+
td:last-child {
|
|
90
|
+
border-left: 0;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
.c-tree.q-tree {
|
|
2
|
+
.q-icon {
|
|
3
|
+
font-size: 20px;
|
|
4
|
+
width: 12px;
|
|
5
|
+
margin-right: 8px;
|
|
6
|
+
color: var(--tree-icon-color);
|
|
7
|
+
|
|
8
|
+
&:hover {
|
|
9
|
+
color: var(--tree-text-color);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
& > .q-tree__node--child > .q-tree__node-header {
|
|
14
|
+
padding-left: 36px !important;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// Remove the top margin on the first item in the list
|
|
18
|
+
& > .q-tree__node:first-child > .q-tree__node-header {
|
|
19
|
+
margin-top: 0;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// Make item content be on top of the q-focus-helper instead of below
|
|
23
|
+
.q-tree__node-header > * {
|
|
24
|
+
z-index: 1;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.q-tree__node {
|
|
28
|
+
padding-bottom: 0;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Override relative to that we can extend the focus background to go from edge to edge
|
|
32
|
+
.q-tree__node.relative-position,
|
|
33
|
+
.q-tree__node-header.relative-position {
|
|
34
|
+
position: static;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.q-tree__node-header {
|
|
38
|
+
border-radius: 0;
|
|
39
|
+
margin-top: 8px;
|
|
40
|
+
padding: 2px 16px;
|
|
41
|
+
min-height: 32px;
|
|
42
|
+
|
|
43
|
+
&:hover .q-focus-helper,
|
|
44
|
+
&:focus .q-focus-helper {
|
|
45
|
+
opacity: 1 !important;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.q-tree__node-header-content {
|
|
50
|
+
color: var(--tree-text-color);
|
|
51
|
+
padding-left: 4px;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.q-tree__node-header-content div:first-child {
|
|
55
|
+
overflow: hidden;
|
|
56
|
+
text-overflow: ellipsis;
|
|
57
|
+
white-space: nowrap;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Do some overrides on the focus effect
|
|
61
|
+
.q-focus-helper {
|
|
62
|
+
background: var(--item-hover-bg-color) !important;
|
|
63
|
+
height: 32px !important;
|
|
64
|
+
top: auto !important;
|
|
65
|
+
|
|
66
|
+
&::before,
|
|
67
|
+
&::after {
|
|
68
|
+
opacity: 0 !important;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Selected item
|
|
73
|
+
.q-tree__node--selected {
|
|
74
|
+
font-weight: 600;
|
|
75
|
+
|
|
76
|
+
.q-focus-helper {
|
|
77
|
+
background: var(--item-selected-bg-color) !important;
|
|
78
|
+
opacity: 1;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.q-icon {
|
|
82
|
+
pointer-events: all;
|
|
83
|
+
color: var(--tree-text-color);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// This is used when having chips/tags in tables. If there are more chips than fits the cell then hide chips and show some icons.
|
|
2
|
+
// It is used together with the useTruncateChips composable function.
|
|
3
|
+
|
|
4
|
+
// Only shown when more chips than fits in the cell
|
|
5
|
+
.truncated-chips__ellipsis,
|
|
6
|
+
.truncated-chips__show-more-btn {
|
|
7
|
+
display: none;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// This is the wrapper for all the chips
|
|
11
|
+
.truncated-chips {
|
|
12
|
+
overflow: hidden;
|
|
13
|
+
max-width: 1px;
|
|
14
|
+
padding-left: 6px !important;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// When a chip is overflown truncate it and all the sibling chips. Toggle the status of some buttons/icons.
|
|
18
|
+
.truncated-chip {
|
|
19
|
+
display: none !important;
|
|
20
|
+
|
|
21
|
+
& ~ .q-chip {
|
|
22
|
+
display: none;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
& ~ .truncated-chips__show-more-btn {
|
|
26
|
+
display: inline-flex;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
& ~ .truncated-chips__edit-btn {
|
|
30
|
+
display: none;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
& ~ .truncated-chips__ellipsis {
|
|
34
|
+
display: inline-flex;
|
|
35
|
+
color: var(--color-grey);
|
|
36
|
+
position: relative;
|
|
37
|
+
top: 8px;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
@import 'css-variables';
|
|
2
|
+
@import './quasar.variables.scss';
|
|
3
|
+
@import 'quasar/dist/quasar.sass';
|
|
4
|
+
@import 'transitions';
|
|
5
|
+
@import 'reset';
|
|
6
|
+
@import 'components/forms';
|
|
7
|
+
@import 'components/chips';
|
|
8
|
+
@import 'components/checkboxes';
|
|
9
|
+
@import 'components/radio-buttons';
|
|
10
|
+
@import 'components/tables';
|
|
11
|
+
@import 'components/q-editor';
|
|
12
|
+
@import 'components/tree';
|
|
13
|
+
@import 'components/tooltips';
|
|
14
|
+
@import 'components/notifications';
|
|
15
|
+
@import 'components/breadcrumbs';
|
|
16
|
+
@import 'components/menu';
|
|
17
|
+
@import 'components/truncated-chips';
|
|
18
|
+
@import 'utils';
|
|
19
|
+
|
|
20
|
+
@font-face {
|
|
21
|
+
font-family: 'Wallop';
|
|
22
|
+
src: url('/fonts/Wallop-Regular.woff2') format("woff2");
|
|
23
|
+
font-display: swap;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@font-face {
|
|
27
|
+
font-family: 'Wallop';
|
|
28
|
+
src: url('/fonts/Wallop-Medium.woff2') format("woff2");
|
|
29
|
+
font-weight: 500;
|
|
30
|
+
font-display: swap;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@font-face {
|
|
34
|
+
font-family: 'Wallop';
|
|
35
|
+
src: url('/fonts/Wallop-SemiBold.woff2') format("woff2");
|
|
36
|
+
font-weight: 600;
|
|
37
|
+
font-display: swap;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
@font-face {
|
|
41
|
+
font-family: 'Wallop';
|
|
42
|
+
src: url('/fonts/Wallop-Bold.woff2') format("woff2");
|
|
43
|
+
font-weight: 700;
|
|
44
|
+
font-display: swap;
|
|
45
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
$primary : #000;
|
|
2
|
+
$secondary : var(--color-grey-lighter);
|
|
3
|
+
$accent : var(--color-green);
|
|
4
|
+
|
|
5
|
+
$dark : #1d1d1d;
|
|
6
|
+
|
|
7
|
+
$positive : var(--color-green);
|
|
8
|
+
$negative : var(--color-red);
|
|
9
|
+
$info : var(--color-blue);
|
|
10
|
+
$warning : var(--color-yellow);
|
|
11
|
+
|
|
12
|
+
$typography-font-family: var(--font-family);
|
|
13
|
+
|
|
14
|
+
$h1: (size: 24px, line-height: 1.45, letter-spacing: normal, weight: 600) !default;
|
|
15
|
+
$h2: (size: 22px, line-height: 1.45, letter-spacing: normal, weight: 600) !default;
|
|
16
|
+
$h3: (size: 18px, line-height: 1.45, letter-spacing: normal, weight: 600) !default;
|
|
17
|
+
$h4: (size: 16px, line-height: 1.45, letter-spacing: normal, weight: 600) !default;
|
|
18
|
+
|
|
19
|
+
// These should not be used but are always bundled by Quasar. Let's give them fallback sizes just in case (h4 clones)
|
|
20
|
+
$h5: (size: 16px, line-height: 1.45, letter-spacing: normal, weight: 600) !default;
|
|
21
|
+
$h6: (size: 16px, line-height: 1.45, letter-spacing: normal, weight: 600) !default;
|
|
22
|
+
|
|
23
|
+
$body1: (size: 14px, line-height: 1, letter-spacing: normal, weight: 400) !default;
|
|
24
|
+
$body2: (size: 12px, line-height: 1, letter-spacing: normal, weight: 400) !default;
|
|
25
|
+
|
|
26
|
+
$separator-color: var(--color-border);
|
|
27
|
+
|
|
28
|
+
$input-text-color: var(--color-grey-darker);
|
|
29
|
+
|
|
30
|
+
$editor-border-color: var(--color-grey);
|
|
31
|
+
|
|
32
|
+
$generic-border-radius: 0;
|
|
33
|
+
|
|
34
|
+
$menu-box-shadow: 0;
|
|
35
|
+
|
|
36
|
+
// Tooltips
|
|
37
|
+
$tooltip-color: var(--tooltip-text-color);
|
|
38
|
+
$tooltip-background: var(--tooltip-bg-color);
|
|
39
|
+
$tooltip-fontsize: 14px;
|
|
40
|
+
$tooltip-border-radius: 5px;
|
|
41
|
+
$tooltip-padding: 4px 10px;
|
|
42
|
+
|
|
43
|
+
// Override Quasar color palette
|
|
44
|
+
$grey: var(--color-grey);
|
|
45
|
+
$blue: var(--color-blue);
|
|
46
|
+
$purple: var(--color-purple);
|
|
47
|
+
$red: var(--color-red);
|
|
48
|
+
$orange: var(--color-orange);
|
|
49
|
+
$yellow: var(--color-yellow);
|
|
50
|
+
$green: var(--color-green);
|
package/src/typings.d.ts
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
interface Components {
|
|
2
|
+
CBannerCard: typeof import('./components/cards/CBannerCard.vue')['default'],
|
|
3
|
+
CSmallCard: typeof import('./components/cards/CSmallCard.vue')['default'],
|
|
4
|
+
ConfirmDialog: typeof import('./components/internal-components/ConfirmDialog.vue')['default'],
|
|
5
|
+
CAutoBreadcrumbs: typeof import('./components/CAutoBreadcrumbs.vue')['default'],
|
|
6
|
+
CBtn: typeof import('./components/CBtn.vue')['default'],
|
|
7
|
+
CColorPicker: typeof import('./components/CColorPicker.vue')['default'],
|
|
8
|
+
CContextMenu: typeof import('./components/CContextMenu.vue')['default'],
|
|
9
|
+
CDatePicker: typeof import('./components/CDatePicker.vue')['default'],
|
|
10
|
+
CDialog: typeof import('./components/CDialog.vue')['default'],
|
|
11
|
+
CDialogCloseBtn: typeof import('./components/CDialogCloseBtn.vue')['default'],
|
|
12
|
+
CDirtyCheck: typeof import('./components/CDirtyCheck.vue')['default'],
|
|
13
|
+
CDrawer: typeof import('./components/CDrawer.vue')['default'],
|
|
14
|
+
CDrawerButton: typeof import('./components/CDrawerButton.vue')['default'],
|
|
15
|
+
CExpansionItem: typeof import('./components/CExpansionItem.vue')['default'],
|
|
16
|
+
CExpansionItemWithCheckbox: typeof import('./components/CExpansionItemWithCheckbox.vue')['default'],
|
|
17
|
+
CGrid: typeof import('./components/CGrid.vue')['default'],
|
|
18
|
+
CHeader: typeof import('./components/CHeader.vue')['default'],
|
|
19
|
+
CHeaderLinks: typeof import('./components/CHeaderLinks.vue')['default'],
|
|
20
|
+
CHeaderMenuLink: typeof import('./components/CHeaderMenuLink.vue')['default'],
|
|
21
|
+
CHeaderSearch: typeof import('./components/CHeaderSearch.vue')['default'],
|
|
22
|
+
CIconBtn: typeof import('./components/CIconBtn.vue')['default'],
|
|
23
|
+
CMenuItem: typeof import('./components/CMenuItem.vue')['default'],
|
|
24
|
+
CPageContainer: typeof import('./components/CPageContainer.vue')['default'],
|
|
25
|
+
CPageError: typeof import('./components/CPageError.vue')['default'],
|
|
26
|
+
CPageSpinner: typeof import('./components/CPageSpinner.vue')['default'],
|
|
27
|
+
CSearch: typeof import('./components/CSearch.vue')['default'],
|
|
28
|
+
CSection: typeof import('./components/CSection.vue')['default'],
|
|
29
|
+
CSectionTitle: typeof import('./components/CSectionTitle.vue')['default'],
|
|
30
|
+
CSelect: typeof import('./components/CSelect.vue')['default'],
|
|
31
|
+
CSlideEffect: typeof import('./components/CSlideEffect.vue')['default'],
|
|
32
|
+
CSpinner: typeof import('./components/CSpinner.vue')['default'],
|
|
33
|
+
CTableActions: typeof import('./components/CTableActions.vue')['default'],
|
|
34
|
+
CTileBtn: typeof import('./components/CTileBtn.vue')['default'],
|
|
35
|
+
CTimePicker: typeof import('./components/CTimePicker.vue')['default'],
|
|
36
|
+
CToggleGridView: typeof import('./components/CToggleGridView.vue')['default'],
|
|
37
|
+
CToggleSidebarBtn: typeof import('./components/CToggleSidebarBtn.vue')['default'],
|
|
38
|
+
CTooltip: typeof import('./components/CTooltip.vue')['default'],
|
|
39
|
+
CTreeNode: typeof import('./components/CTreeNode.vue')['default'],
|
|
40
|
+
CDeleteTileBtn: typeof import('./components/CDeleteTileBtn.vue')['default'],
|
|
41
|
+
CFileDropzone: typeof import('./components/CFileDropzone.vue')['default'],
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
interface Layouts {
|
|
45
|
+
CLayoutBlank: typeof import('./layouts/CLayoutBlank.vue')['default'],
|
|
46
|
+
CLayoutWithBackButton: typeof import('./layouts/CLayoutWithBackButton.vue')['default'],
|
|
47
|
+
CLayoutWithSidebars: typeof import('./layouts/CLayoutWithSidebars.vue')['default'],
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
interface LayoutFragments {
|
|
51
|
+
CPageAutoBreadcrumbs: typeof import('./layouts/layout-fragments/CPageAutoBreadcrumbs.vue')['default'],
|
|
52
|
+
CPageBackButton: typeof import('./layouts/layout-fragments/CPageBackButton.vue')['default'],
|
|
53
|
+
CPageBlank: typeof import('./layouts/layout-fragments/CPageBlank.vue')['default'],
|
|
54
|
+
CPageFlexCol: typeof import('./layouts/layout-fragments/CPageFlexCol.vue')['default'],
|
|
55
|
+
CPageLeftSidebar: typeof import('./layouts/layout-fragments/CPageLeftSidebar.vue')['default'],
|
|
56
|
+
CPageMainContent: typeof import('./layouts/layout-fragments/CPageMainContent.vue')['default'],
|
|
57
|
+
CPageOuterWrapper: typeof import('./layouts/layout-fragments/CPageOuterWrapper.vue')['default'],
|
|
58
|
+
CPageRightSidebar: typeof import('./layouts/layout-fragments/CPageRightSidebar.vue')['default'],
|
|
59
|
+
CPageTitle: typeof import('./layouts/layout-fragments/CPageTitle.vue')['default'],
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export interface GlobalComponents extends Components, Layouts, LayoutFragments {}
|
|
63
|
+
|
|
64
|
+
export interface ComponentCustomProperties {
|
|
65
|
+
$validate: typeof import('./plugins/validationRules')['rules'],
|
|
66
|
+
$notify: typeof import('./plugins/notify')['default'],
|
|
67
|
+
$dialog: typeof import('./plugins/dialog')['default'],
|
|
68
|
+
$colors: typeof import('./utils/colorUtils')['colors'],
|
|
69
|
+
$inri: typeof import('./plugins/inriverQuasarComponentConfigurations')['quasarComponentConfigurations'],
|
|
70
|
+
}
|