kempo 2.10.0 → 2.10.2

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 (99) hide show
  1. package/dist/components/Search.js +1 -1
  2. package/dist/components/Sortable.js +1 -0
  3. package/dist/components/Table.js +1 -1
  4. package/dist/components/tableControls/DeleteRecord.js +1 -0
  5. package/dist/components/tableControls/DeleteSelected.js +1 -1
  6. package/dist/components/tableControls/Edit.js +1 -1
  7. package/dist/components/tableControls/ExportCSV.js +1 -0
  8. package/dist/components/tableControls/ExportJson.js +1 -0
  9. package/dist/components/tableControls/FieldSortHide.js +1 -0
  10. package/dist/components/tableControls/Filters.js +1 -1
  11. package/dist/components/tableControls/FirstPage.js +1 -0
  12. package/dist/components/tableControls/HiddenCount.js +1 -1
  13. package/dist/components/tableControls/Hide.js +1 -1
  14. package/dist/components/tableControls/LastPage.js +1 -0
  15. package/dist/components/tableControls/NextPage.js +1 -0
  16. package/dist/components/tableControls/PageSelect.js +1 -1
  17. package/dist/components/tableControls/PageSize.js +1 -1
  18. package/dist/components/tableControls/PrevPage.js +1 -0
  19. package/dist/components/tableControls/Search.js +1 -0
  20. package/dist/components/tableControls/SelectCount.js +1 -1
  21. package/dist/components/tableControls/ShowAll.js +1 -1
  22. package/dist/components/tableControls/ShowHideFields.js +1 -0
  23. package/dist/components/tableControls/TableControl.js +1 -0
  24. package/dist/index.js +1 -1
  25. package/docs/components/sortable.html +96 -0
  26. package/docs/components/table.html +32 -7
  27. package/docs/components/tableControls.html +10 -24
  28. package/docs/components/tableCustomFields.html +2 -1
  29. package/docs/components/tableFetchRecords.html +114 -0
  30. package/docs/components/tableFieldSortHide.html +75 -0
  31. package/docs/components/tablePagination.html +33 -25
  32. package/docs/components/tableRecordEditing.html +8 -8
  33. package/docs/components/tableRecordFiltering.html +6 -13
  34. package/docs/components/tableRecordHiding.html +10 -14
  35. package/docs/components/tableRecordSearching.html +75 -0
  36. package/docs/components/tableRecordSelection.html +8 -19
  37. package/docs/components/tableRowControls.html +10 -35
  38. package/docs/components/tableSorting.html +73 -0
  39. package/docs/icons/arrow-down.svg +1 -0
  40. package/docs/icons/arrow-up.svg +1 -0
  41. package/docs/icons/drag-handle.svg +1 -0
  42. package/docs/icons/export-file.svg +1 -0
  43. package/docs/icons/first.svg +1 -0
  44. package/docs/icons/last.svg +1 -0
  45. package/docs/icons/table-visibility.svg +1 -0
  46. package/docs/kempo/components/Search.js +1 -1
  47. package/docs/kempo/components/Sortable.js +1 -0
  48. package/docs/kempo/components/Table.js +1 -1
  49. package/docs/kempo/components/tableControls/DeleteRecord.js +1 -0
  50. package/docs/kempo/components/tableControls/DeleteSelected.js +1 -1
  51. package/docs/kempo/components/tableControls/Edit.js +1 -1
  52. package/docs/kempo/components/tableControls/ExportCSV.js +1 -0
  53. package/docs/kempo/components/tableControls/ExportJson.js +1 -0
  54. package/docs/kempo/components/tableControls/FieldSortHide.js +1 -0
  55. package/docs/kempo/components/tableControls/Filters.js +1 -1
  56. package/docs/kempo/components/tableControls/FirstPage.js +1 -0
  57. package/docs/kempo/components/tableControls/HiddenCount.js +1 -1
  58. package/docs/kempo/components/tableControls/Hide.js +1 -1
  59. package/docs/kempo/components/tableControls/LastPage.js +1 -0
  60. package/docs/kempo/components/tableControls/NextPage.js +1 -0
  61. package/docs/kempo/components/tableControls/PageSelect.js +1 -1
  62. package/docs/kempo/components/tableControls/PageSize.js +1 -1
  63. package/docs/kempo/components/tableControls/PrevPage.js +1 -0
  64. package/docs/kempo/components/tableControls/Search.js +1 -0
  65. package/docs/kempo/components/tableControls/SelectCount.js +1 -1
  66. package/docs/kempo/components/tableControls/ShowAll.js +1 -1
  67. package/docs/kempo/components/tableControls/ShowHideFields.js +1 -0
  68. package/docs/kempo/components/tableControls/TableControl.js +1 -0
  69. package/docs/kempo/index.js +1 -1
  70. package/icons/arrow-down.svg +1 -0
  71. package/icons/arrow-up.svg +1 -0
  72. package/icons/drag-handle.svg +1 -0
  73. package/icons/export-file.svg +1 -0
  74. package/icons/first.svg +1 -0
  75. package/icons/last.svg +1 -0
  76. package/icons/table-visibility.svg +1 -0
  77. package/package.json +1 -1
  78. package/src/components/Search.js +1 -0
  79. package/src/components/Sortable.js +169 -0
  80. package/src/components/Table.js +422 -295
  81. package/src/components/tableControls/DeleteRecord.js +43 -0
  82. package/src/components/tableControls/DeleteSelected.js +11 -13
  83. package/src/components/tableControls/Edit.js +22 -26
  84. package/src/components/tableControls/ExportCSV.js +91 -0
  85. package/src/components/tableControls/ExportJson.js +62 -0
  86. package/src/components/tableControls/FieldSortHide.js +77 -0
  87. package/src/components/tableControls/Filters.js +18 -17
  88. package/src/components/tableControls/FirstPage.js +69 -0
  89. package/src/components/tableControls/HiddenCount.js +10 -15
  90. package/src/components/tableControls/Hide.js +12 -15
  91. package/src/components/tableControls/LastPage.js +67 -0
  92. package/src/components/tableControls/NextPage.js +69 -0
  93. package/src/components/tableControls/PageSelect.js +20 -23
  94. package/src/components/tableControls/PageSize.js +12 -15
  95. package/src/components/tableControls/PrevPage.js +69 -0
  96. package/src/components/tableControls/Search.js +49 -0
  97. package/src/components/tableControls/SelectCount.js +5 -10
  98. package/src/components/tableControls/ShowAll.js +9 -12
  99. package/src/components/tableControls/TableControl.js +51 -0
@@ -0,0 +1,169 @@
1
+ import Component from './Component.js';
2
+ import { onEvent, offEvent, dispatchEvent } from '../utils/element.js';
3
+ import drag from '../utils/drag.js';
4
+
5
+ const dragStartHandler = Symbol('dragStartHandler'),
6
+ dragMoveHandler = Symbol('dragMoveHandler'),
7
+ dragEndHandler = Symbol('dragEndHandler'),
8
+ cleanup = Symbol('cleanup');
9
+
10
+ export class Sortable extends Component {
11
+ constructor(){
12
+ super();
13
+
14
+ this.registerAttributes({
15
+ sorting: false
16
+ });
17
+ }
18
+ async render(force){
19
+ if(await super.render(force)){
20
+
21
+ }
22
+ return false;
23
+ }
24
+ disconnectedCallback(){
25
+ super.disconnectedCallback();
26
+ this.cleanupFuncs.forEach(func => func());
27
+ }
28
+
29
+ getCursorElement(){
30
+ const items = Array.from(this.children).filter(child => child.tagName === 'K-SORTABLE-ITEM' && !child.hasAttribute('sorting'));
31
+ if (items.length === 0) return null;
32
+
33
+ const cursorY = event.clientY;
34
+ if (cursorY < items[0].getBoundingClientRect().top) {
35
+ return [items[0], 'before'];
36
+ }
37
+ if (cursorY > items[items.length - 1].getBoundingClientRect().bottom) {
38
+ return [items[items.length - 1], 'after'];
39
+ }
40
+
41
+ for (const item of items) {
42
+ const rect = item.getBoundingClientRect();
43
+ const middleY = rect.top + rect.height / 2;
44
+ if (cursorY < middleY) {
45
+ return [item, 'before'];
46
+ } else if (cursorY < rect.bottom) {
47
+ return [item, 'after'];
48
+ }
49
+ }
50
+ return null;
51
+ }
52
+ }
53
+ window.customElements.define('k-sortable', Sortable);
54
+
55
+ export class SortableItem extends Component {
56
+ constructor(){
57
+ super();
58
+
59
+ /* Private Methods */
60
+ this[dragStartHandler] = () => {
61
+ this.sorting = true;
62
+ }
63
+ this[dragMoveHandler] = ({y}) => {
64
+ this.style.transform = `translateY(${y}px)`;
65
+ this.style.zIndex = 9999;
66
+ const [target, position] = this.sortable.getCursorElement();
67
+ Array.from(this.sortable.children).forEach(child => {
68
+ child.classList.remove('target-before', 'target-after');
69
+ });
70
+ if (target) {
71
+ target.classList.add(`target-${position}`);
72
+ }
73
+ }
74
+ this[dragEndHandler] = ({y}) => {
75
+ this.sorting = false;
76
+ this.style.transform = '';
77
+ this.style.zIndex = '';
78
+ const [target, position] = this.sortable.getCursorElement();
79
+ Array.from(this.sortable.children).forEach(child => {
80
+ child.classList.remove('target-before', 'target-after');
81
+ });
82
+ if (target) {
83
+ if (position === 'before') {
84
+ this.sortable.insertBefore(this, target);
85
+ } else if (position === 'after') {
86
+ this.sortable.insertBefore(this, target.nextSibling);
87
+ }
88
+ dispatchEvent(this.sortable, 'sort');
89
+ }
90
+ }
91
+
92
+
93
+ /* Init */
94
+ this.registerAttributes({
95
+ sorting: false
96
+ });
97
+ }
98
+
99
+ /* Lifecycle Callbacks */
100
+ async render(force = false){
101
+ if(await super.render(force)){
102
+ const $handle = this.shadowRoot.getElementById('handle');
103
+ this[cleanup] = drag({
104
+ element: $handle,
105
+ startCallback: this[dragStartHandler],
106
+ moveCallback: this[dragMoveHandler],
107
+ endCallback: this[dragEndHandler]
108
+ });
109
+ return true;
110
+ }
111
+ return false;
112
+ }
113
+
114
+ /* Protected Members */
115
+ get sortable(){
116
+ return this.closest('k-sortable');
117
+ }
118
+
119
+
120
+ /* Shadow DOM */
121
+ get shadowTemplate(){
122
+ return /*html*/`
123
+ <div id="handle">
124
+ <k-icon name="drag-handle"></k-icon>
125
+ </div>
126
+ <div id="content" class="p pl0">
127
+ ${super.shadowTemplate}
128
+ </div>
129
+ `;
130
+ }
131
+ get shadowStyles(){
132
+ return /*css*/`
133
+ ${super.shadowStyles}
134
+ :host {
135
+ display: block;
136
+ border: 1px solid var(--c_border);
137
+ user-select: none;
138
+ position: relative;
139
+ }
140
+ :host([sorting]){
141
+ opacity: 0.8;
142
+ }
143
+ #handle {
144
+ display: inline-block;
145
+ cursor: pointer;
146
+ padding: var(--spacer);
147
+ }
148
+ #content {
149
+ display: inline-block;
150
+ }
151
+ :host(.target-before)::before,
152
+ :host(.target-after)::after {
153
+ content: '';
154
+ position: absolute;
155
+ left: 0;
156
+ right: 0;
157
+ height: 4px;
158
+ background-color: var(--c_primary);
159
+ }
160
+ :host(.target-before)::before {
161
+ top: -2px;
162
+ }
163
+ :host(.target-after)::after {
164
+ bottom: -2px;
165
+ }
166
+ `;
167
+ }
168
+ }
169
+ window.customElements.define('k-sortable-item', SortableItem);