quasar-ui-danx 0.1.1 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quasar-ui-danx",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "author": "Dan <dan@flytedesk.com>",
5
5
  "description": "DanX Vue / Quasar component library",
6
6
  "license": "MIT",
@@ -1,7 +1,7 @@
1
1
  <template>
2
- <div class="overflow-hidden">
2
+ <div class="overflow-hidden w-full">
3
3
  <ActionVnode />
4
- <q-table
4
+ <QTable
5
5
  ref="actionTable"
6
6
  :selected="selectedRows"
7
7
  :pagination="quasarPagination"
@@ -10,7 +10,7 @@
10
10
  :rows="pagedItems?.data || []"
11
11
  selection="multiple"
12
12
  :rows-per-page-options="rowsPerPageOptions"
13
- class="sticky-column sticky-header w-full !border-0"
13
+ class="sticky-column sticky-header w-full h-full !border-0"
14
14
  color="blue-base"
15
15
  @update:selected="$emit('update:selected-rows', $event)"
16
16
  @update:pagination="() => {}"
@@ -33,7 +33,7 @@
33
33
  />
34
34
  </template>
35
35
  <template #header-cell="rowProps">
36
- <q-th
36
+ <QTh
37
37
  :key="rowProps.key"
38
38
  :props="rowProps"
39
39
  :data-drop-zone="`resize-column-` + rowProps.col.name"
@@ -47,7 +47,7 @@
47
47
  >
48
48
  <RowResizeIcon class="w-4 text-neutral-base" />
49
49
  </HandleDraggable>
50
- </q-th>
50
+ </QTh>
51
51
  </template>
52
52
  <template #body-cell="rowProps">
53
53
  <ActionTableColumn
@@ -58,11 +58,12 @@
58
58
  <slot :column-name="rowProps.col.name" :row="rowProps.row" :value="rowProps.value" />
59
59
  </ActionTableColumn>
60
60
  </template>
61
- </q-table>
61
+ </QTable>
62
62
  </div>
63
63
  </template>
64
64
 
65
65
  <script setup>
66
+ import { QTable, QTh } from 'quasar';
66
67
  import { ref } from 'vue';
67
68
  import { getItem, setItem } from '../../helpers';
68
69
  import { DragHandleIcon as RowResizeIcon } from '../../svg';
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <q-td :key="rowProps.key" :props="rowProps">
2
+ <q-td :key="rowProps.key" :props="rowProps" :style="columnStyle">
3
3
  <div :style="columnStyle">
4
4
  <div
5
5
  class="flex items-center flex-nowrap"
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="flex items-center" :class="{'w-72': showFilters}">
2
+ <div class="flex items-center transition-all" :class="{'w-72': showFilters, 'w-[6.5rem]': !showFilters}">
3
3
  <div class="flex-grow">
4
4
  <q-btn
5
5
  class="btn-blue-highlight"
@@ -1,11 +1,11 @@
1
1
  <template>
2
2
  <div class="w-full flex justify-end items-center flex-nowrap border-b">
3
3
  <FilterListToggle
4
- :show-filters="showFilters"
5
- :filter="filter"
6
- class="border-r p-4 flex-shrink-0"
7
- @update:show-filters="$emit('update:show-filters', $event)"
8
- @update:filter="$emit('update:filter', $event)"
4
+ :show-filters="showFilters"
5
+ :filter="filter"
6
+ class="border-r p-4 flex-shrink-0"
7
+ @update:show-filters="$emit('update:show-filters', $event)"
8
+ @update:filter="$emit('update:filter', $event)"
9
9
  />
10
10
 
11
11
  <div class="flex-grow">
@@ -20,9 +20,10 @@
20
20
  </div>
21
21
  </template>
22
22
  <script setup>
23
- import { FilterListToggle } from "quasar-ui-danx";
23
+ import { QSeparator } from 'quasar';
24
+ import { FilterListToggle } from '../Filters';
24
25
 
25
- defineEmits(["update:show-filters", "update:filter"]);
26
+ defineEmits(['update:show-filters', 'update:filter']);
26
27
  defineProps({
27
28
  filter: {
28
29
  type: Object,
@@ -18,7 +18,7 @@ import { RenderVnode } from '../Utility';
18
18
  defineProps({
19
19
  activePanel: {
20
20
  type: String,
21
- required: true
21
+ default: null
22
22
  },
23
23
  panels: {
24
24
  type: Array,
@@ -1,11 +1,12 @@
1
1
  <template>
2
2
  <QTooltip
3
+ class="interactive-tooltip"
3
4
  ref="tooltipBox"
4
5
  v-model="show"
5
6
  no-parent-event
6
- class="!pointer-events-auto"
7
7
  @mouseenter="onEnterTooltip"
8
8
  @mouseleave="onLeaveTooltip"
9
+ :transition-duration="200"
9
10
  >
10
11
  <slot>{{ tooltip }}</slot>
11
12
  </QTooltip>
@@ -18,6 +19,7 @@ const show = ref(false);
18
19
  const tooltipBox = ref(null);
19
20
  const isHovering = ref(false);
20
21
  const isHoveringParent = ref(false);
22
+ let timeout = null;
21
23
  onMounted(() => {
22
24
  tooltipBox.value.$el.parentNode.addEventListener('mouseover', onEnterParent);
23
25
  tooltipBox.value.$el.parentNode.addEventListener('mouseleave', onLeaveParent);
@@ -25,25 +27,40 @@ onMounted(() => {
25
27
  function onEnterParent() {
26
28
  show.value = true;
27
29
  isHoveringParent.value = true;
30
+ if (timeout) clearTimeout(timeout);
28
31
  }
29
32
  function onLeaveParent() {
30
33
  isHoveringParent.value = false;
31
- if (!show.value) return;
32
-
33
- setTimeout(() => {
34
- if (isHovering.value || isHoveringParent.value) {
35
- onLeaveParent();
36
- } else {
37
- show.value = false;
38
- }
39
- }, 200);
34
+ if (show.value) delayClose();
40
35
  }
41
36
  function onEnterTooltip() {
42
37
  isHovering.value = true;
43
38
  show.value = true;
39
+ if (timeout) clearTimeout(timeout);
44
40
  }
45
41
  function onLeaveTooltip() {
46
42
  isHovering.value = false;
47
- show.value = false;
43
+ if (show.value) delayClose();
44
+ }
45
+ function delayClose() {
46
+ if (timeout) clearTimeout(timeout);
47
+ timeout = setTimeout(() => {
48
+ if (isHovering.value || isHoveringParent.value) {
49
+ delayClose();
50
+ } else {
51
+ show.value = false;
52
+ }
53
+ }, 200);
48
54
  }
55
+
49
56
  </script>
57
+ <style lang="scss">
58
+ body .q-tooltip {
59
+ &.interactive-tooltip {
60
+ pointer-events: auto !important;
61
+ background: white;
62
+ color: inherit;
63
+ box-shadow: 0 0 10px 3px rgba(0, 0, 0, 0.2);
64
+ }
65
+ }
66
+ </style>