aloha-vue 2.74.0 → 2.75.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.
Files changed (166) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE +22 -21
  3. package/dist/aloha-vue.css +13594 -13594
  4. package/dist/aloha-vue.css.map +1 -1
  5. package/dist/aloha-vue.es.js +59266 -64918
  6. package/dist/aloha-vue.umd.js +338 -211
  7. package/package.json +27 -34
  8. package/scss/components/ATable.scss +2 -2
  9. package/scss/utils/button.scss +362 -362
  10. package/scss/utils/funktions.scss +162 -162
  11. package/src/AAccordion/AAccordionItem/AAccordionItem.js +235 -230
  12. package/src/ACarousel/ACarousel.js +7 -2
  13. package/src/ADropdown/ADropdown.js +4 -1
  14. package/src/AFilters/AFilterCenter/AFilterCenter.js +5 -1
  15. package/src/AFilters/AFilterCenter/AFilterCenterItem/AFilterCenterItem.js +7 -2
  16. package/src/AFilters/AFiltersHorizontal/AFiltersHorizontal.js +412 -396
  17. package/src/AFilters/AFiltersHorizontal/AFiltersHorizontalFilter/AFiltersHorizontalFilter.js +102 -99
  18. package/src/AFilters/AFiltersHorizontal/compositionAPI/FiltersSavedDeleteAPI.js +108 -108
  19. package/src/AFilters/AFiltersMain/AFiltersMain.js +114 -111
  20. package/src/AFilters/AFiltersSaveModal/compositionAPI/SaveAPI.js +65 -65
  21. package/src/ALinkCopy/ALinkCopy.js +98 -95
  22. package/src/ALinkCopy/compositionAPI/CopyAPI.js +48 -48
  23. package/src/AList/__tests__/AList.test.js +33 -33
  24. package/src/AList/compositionAPI/__tests__/TagAPI.test.js +43 -43
  25. package/src/AMenu/AMenu.js +4 -1
  26. package/src/AMenu/AMenuBreadcrumbs/AMenuBreadcrumbs.js +240 -237
  27. package/src/AMenu/AMenuPanelLink/AMenuPanelLink.js +4 -1
  28. package/src/AMenu/AMenuSearchPanelBreadcrumbs/AMenuSearchPanelBreadcrumbs.js +122 -119
  29. package/src/AModalWizard/AModalWizard.js +58 -53
  30. package/src/AModalWizard/compositionAPI/__tests__/ScrollAPI.test.js +46 -46
  31. package/src/APagination/APaginationPages/APaginationPages.js +15 -4
  32. package/src/ARate/ARate.js +254 -249
  33. package/src/ARate/ARateIcon/ADecimalIcon/ADecimalIcon.js +53 -50
  34. package/src/ARate/ARateIcon/ARateIcon.js +109 -104
  35. package/src/AResizer/AResizer.js +167 -162
  36. package/src/ATable/ATableHeaderTh/compositionAPI/SortAPI.js +172 -167
  37. package/src/ATable/ATableHeaderThAction/ATableHeaderThAction.js +14 -4
  38. package/src/ATable/ATableHeaderThAction/ATableHeaderThActionItem/ATableHeaderThActionItem.js +191 -184
  39. package/src/ATable/ATablePreviewDown/ATablePreviewDown.js +72 -69
  40. package/src/ATable/ATablePreviewRight/ATablePreviewRight.js +265 -258
  41. package/src/ATable/ATableSortingAdditional/ATableSortingAdditional.js +224 -219
  42. package/src/ATable/ATableSortingAdditional/__tests__/ATableSortingAdditional.AttributesAPI.test.js +39 -39
  43. package/src/ATable/ATableSortingAdditional/__tests__/ATableSortingAdditional.ColumnsAPI.test.js +68 -68
  44. package/src/ATable/ATableSortingAdditional/__tests__/ATableSortingAdditional.DropdownAPI.test.js +45 -45
  45. package/src/ATable/ATableSortingAdditional/__tests__/ATableSortingAdditional.FormAPI.test.js +95 -95
  46. package/src/ATable/ATableSortingAdditional/__tests__/ATableSortingAdditional.ModelAPI.test.js +1 -1
  47. package/src/ATable/ATableTd/ATableTd.js +4 -1
  48. package/src/ATable/ATableTdAction/ATableTdAction.js +19 -12
  49. package/src/ATable/ATableTopPanel/ATableTopPanel.js +11 -3
  50. package/src/ATable/ATableTr/ATableTr.js +408 -405
  51. package/src/ATable/__tests__/ATable.HeaderSlot.test.js +102 -97
  52. package/src/ATable/__tests__/ATable.RowIdsAPI.test.js +66 -66
  53. package/src/ATableForm/ATableForm.js +88 -85
  54. package/src/ATableForm/ATableFormCellAction/ATableFormCellAction.js +14 -4
  55. package/src/ATableForm/ATableFormCellDnd/ATableFormCellDnd.js +196 -187
  56. package/src/ATableForm/ATableFormRow/compositionAPI/EditAPI.js +104 -104
  57. package/src/ATableForm/__tests__/ATableForm.DragAndDropAPI.test.js +200 -212
  58. package/src/ATableForm/__tests__/ATableForm.ListView.test.js +134 -174
  59. package/src/ATableForm/compositionAPI/IconsAPI.js +24 -21
  60. package/src/AVerticalScroll/AVerticalScroll.js +182 -177
  61. package/src/AWizard/AWizard.js +26 -21
  62. package/src/AWizard/AWizardStep/AWizardStep.js +275 -270
  63. package/src/AWizard/compositionAPI/__tests__/ChangeStepAPI.test.js +32 -32
  64. package/src/AWizard/compositionAPI/__tests__/LocalAPI.test.js +55 -55
  65. package/src/PuxDatepicker/PuxDatepickerCalendarPanel/PuxDatepickerCalendarPanel.js +646 -648
  66. package/src/PuxDatepicker/panel/PanelDate/PanelDate.js +300 -301
  67. package/src/PuxDatepicker/panel/PanelMonth/PanelMonth.js +148 -149
  68. package/src/PuxDatepicker/panel/PanelTime/PanelTime.js +256 -257
  69. package/src/PuxDatepicker/panel/PanelYear/PanelYear.js +136 -137
  70. package/src/PuxDatepicker/utils/index.js +100 -100
  71. package/src/compositionAPI/AHttpAPI.js +593 -593
  72. package/src/compositionAPI/__tests__/AHttpAPI.test.js +42 -42
  73. package/src/filters/__tests__/filterBoolean.test.js +38 -38
  74. package/src/filters/__tests__/filterCapitalize.test.js +38 -38
  75. package/src/filters/__tests__/filterCurrency.test.js +21 -21
  76. package/src/filters/__tests__/filterDate.test.js +42 -42
  77. package/src/filters/__tests__/filterDefaultForEmpty.test.js +24 -24
  78. package/src/filters/__tests__/filterEmail.test.js +42 -42
  79. package/src/filters/__tests__/filterEscapeHtml.test.js +45 -45
  80. package/src/filters/__tests__/filterFileSize.test.js +45 -45
  81. package/src/filters/__tests__/filterFloat.test.js +74 -74
  82. package/src/filters/__tests__/filterJson.test.js +74 -74
  83. package/src/filters/__tests__/filterKeyValue.test.js +50 -50
  84. package/src/filters/__tests__/filterLimitTo.test.js +39 -39
  85. package/src/filters/__tests__/filterLink.test.js +41 -41
  86. package/src/filters/__tests__/filterList.test.js +149 -149
  87. package/src/filters/__tests__/filterLowerCase.test.js +38 -38
  88. package/src/filters/__tests__/filterMask.test.js +80 -80
  89. package/src/filters/__tests__/filterPropertyByValue.test.js +27 -27
  90. package/src/filters/__tests__/filterSearchHighlight.test.js +129 -129
  91. package/src/filters/__tests__/filterUpperCase.test.js +38 -38
  92. package/src/filters/__tests__/filterValueByCondition.test.js +3 -3
  93. package/src/filters/filterJson.js +39 -39
  94. package/src/filters/filterValueByCondition.js +2 -2
  95. package/src/plugins/AAlertPlugin.js +16 -5
  96. package/src/plugins/AMultiselectOrderedPlugin.js +88 -81
  97. package/src/plugins/ASelectPlugin.js +12 -10
  98. package/src/ui/ACheckbox/ACheckbox.js +82 -79
  99. package/src/ui/ADatepicker/compositionAPI/EventsAPI.js +297 -297
  100. package/src/ui/ADatepicker/utils/index.js +76 -76
  101. package/src/ui/ADatepickerAlt/ADatepicker.js +912 -912
  102. package/src/ui/ADatepickerAlt/utils/index.js +98 -98
  103. package/src/ui/AFieldset/__tests__/AFieldset.ClassColumn.test.js +113 -114
  104. package/src/ui/AFormElementBtnClear/AFormElementBtnClear.js +4 -1
  105. package/src/ui/AInputCurrency/AInputCurrency.js +20 -15
  106. package/src/ui/AInputCurrency/__tests__/AInputCurrency.ModelAPI.test.js +73 -73
  107. package/src/ui/AInputNumber/AInputNumber.js +17 -12
  108. package/src/ui/AJson/AJson.js +12 -3
  109. package/src/ui/AJson/compositionAPI/JsonAPI.js +116 -116
  110. package/src/ui/ALabel/__tests__/ALabel.IdAPI.test.js +42 -42
  111. package/src/ui/ALabel/__tests__/ALabel.LabelAPI.test.js +33 -33
  112. package/src/ui/ARadio/ARadio.js +80 -77
  113. package/src/ui/ASelect/ASelect.js +390 -383
  114. package/src/ui/ASelect/ASelectElement/ASelectElement.js +179 -176
  115. package/src/ui/ASelect/ASelectValueCloseable/ASelectValueCloseable.js +143 -141
  116. package/src/ui/ASelect/__tests__/SelectedFirstAPI.test.js +101 -101
  117. package/src/ui/ASelect/__tests__/SelectedVisibleAPI.test.js +98 -98
  118. package/src/ui/ASlider/compositionAPI/SliderAPI.js +23 -23
  119. package/src/ui/AValidatedJson/AValidatedJson.js +4 -1
  120. package/src/ui/AValidatedJson/AValidatedJsonItem/AValidatedJsonItem.js +308 -298
  121. package/src/ui/compositionApi/UiCollapseAPI.js +68 -63
  122. package/src/ui/compositionApi/UiInputAutofillAPI.js +41 -41
  123. package/src/ui/compositionApi/__tests__/UIDataGroupAPI.test.js +106 -106
  124. package/src/ui/compositionApi/__tests__/UIExcludeRenderAttributesAPI.test.js +39 -39
  125. package/src/ui/compositionApi/__tests__/UiDataWithKeyIdAndLabelAPI.test.js +128 -128
  126. package/src/ui/compositionApi/__tests__/UiSearchAPI.test.js +71 -71
  127. package/src/utils/EventBus.js +51 -8
  128. package/src/utils/__tests__/EventBus.test.js +138 -0
  129. package/src/utils/__tests__/utils.aOrderBy.test.js +1 -1
  130. package/src/utils/__tests__/utils.aSortBy.test.js +1 -1
  131. package/src/utils/__tests__/utils.getTotalNestedCount.test.js +56 -56
  132. package/src/utils/__tests__/utils.isArrayOfArrays.test.js +44 -44
  133. package/src/utils/__tests__/utils.isArrayOfStrings.test.js +36 -36
  134. package/src/utils/__tests__/utilsArray.aFirst.test.js +1 -1
  135. package/src/utils/__tests__/utilsArray.aLast.test.js +1 -1
  136. package/src/utils/__tests__/utilsLang.isArguments.test.js +1 -1
  137. package/src/utils/__tests__/utilsLang.isArray.test.js +1 -1
  138. package/src/utils/__tests__/utilsLang.isArrayBuffer.test.js +1 -1
  139. package/src/utils/__tests__/utilsLang.isBoolean.test.js +1 -1
  140. package/src/utils/__tests__/utilsLang.isBuffer.test.js +1 -1
  141. package/src/utils/__tests__/utilsLang.isDate.test.js +1 -1
  142. package/src/utils/__tests__/utilsLang.isElement.test.js +5 -3
  143. package/src/utils/__tests__/utilsLang.isError.test.js +1 -1
  144. package/src/utils/__tests__/utilsLang.isFinite.test.js +1 -1
  145. package/src/utils/__tests__/utilsLang.isFunction.test.js +1 -1
  146. package/src/utils/__tests__/utilsLang.isInteger.test.js +1 -1
  147. package/src/utils/__tests__/utilsLang.isMap.test.js +1 -1
  148. package/src/utils/__tests__/utilsLang.isNaN.test.js +1 -1
  149. package/src/utils/__tests__/utilsLang.isNil.test.js +1 -1
  150. package/src/utils/__tests__/utilsLang.isNull.test.js +1 -1
  151. package/src/utils/__tests__/utilsLang.isNumber.test.js +1 -1
  152. package/src/utils/__tests__/utilsLang.isObject.test.js +1 -1
  153. package/src/utils/__tests__/utilsLang.isObjectLike.test.js +5 -3
  154. package/src/utils/__tests__/utilsLang.isPlainObject.test.js +3 -2
  155. package/src/utils/__tests__/utilsLang.isPromise.test.js +5 -2
  156. package/src/utils/__tests__/utilsLang.isRegExp.test.js +1 -1
  157. package/src/utils/__tests__/utilsLang.isSet.test.js +1 -1
  158. package/src/utils/__tests__/utilsLang.isString.test.js +1 -1
  159. package/src/utils/__tests__/utilsLang.isSymbol.test.js +5 -3
  160. package/src/utils/__tests__/utilsLang.isUndefined.test.js +1 -1
  161. package/src/utils/__tests__/utilsLang.isWeakMap.test.js +1 -1
  162. package/src/utils/__tests__/utilsLang.isWeakSet.test.js +1 -1
  163. package/src/utils/__tests__/utilsMath.isEven.test.js +43 -43
  164. package/src/utils/__tests__/utilsMath.isOdd.test.js +43 -43
  165. package/src/utils/__tests__/utilsUi.isModelForFilterNotEmpty.test.js +65 -65
  166. package/src/utils/autosize.js +1 -1
@@ -1,187 +1,196 @@
1
- import {
2
- computed,
3
- h,
4
- } from "vue";
5
-
6
- import AButton from "../../AButton/AButton";
7
- import AIcon from "../../AIcon/AIcon";
8
- import ATranslation from "../../ATranslation/ATranslation";
9
-
10
- import IdAPI from "./compositionAPI/IdAPI";
11
-
12
- import ChevronDown from "aloha-svg/dist/js/bootstrap/ChevronDown";
13
- import ChevronUp from "aloha-svg/dist/js/bootstrap/ChevronUp";
14
- import GripVertical from "aloha-svg/dist/js/bootstrap/GripVertical";
15
- import LockFill from "aloha-svg/dist/js/bootstrap/LockFill";
16
-
17
- export default {
18
- name: "ATableFormCellDnd",
19
- props: {
20
- canMoveRowDown: {
21
- type: Function,
22
- required: true,
23
- },
24
- canMoveRowUp: {
25
- type: Function,
26
- required: true,
27
- },
28
- id: {
29
- type: String,
30
- required: true,
31
- },
32
- isCreateMode: {
33
- type: Boolean,
34
- required: false,
35
- default: false,
36
- },
37
- isDragAndDrop: {
38
- type: Boolean,
39
- required: false,
40
- default: false,
41
- },
42
- isDndDisabled: {
43
- type: Boolean,
44
- required: false,
45
- default: false,
46
- },
47
- isDndLocked: {
48
- type: Boolean,
49
- required: false,
50
- default: false,
51
- },
52
- isFooter: {
53
- type: Boolean,
54
- required: false,
55
- default: false,
56
- },
57
- isHeader: {
58
- type: Boolean,
59
- required: false,
60
- default: false,
61
- },
62
- moveRowDown: {
63
- type: Function,
64
- required: true,
65
- },
66
- moveRowUp: {
67
- type: Function,
68
- required: true,
69
- },
70
- onDragend: {
71
- type: Function,
72
- required: true,
73
- },
74
- onDragstart: {
75
- type: Function,
76
- required: true,
77
- },
78
- rowIndex: {
79
- type: Number,
80
- required: true,
81
- },
82
- texts: {
83
- type: Object,
84
- required: false,
85
- default: () => ({}),
86
- },
87
- widths: {
88
- type: Object,
89
- required: false,
90
- default: () => ({}),
91
- },
92
- },
93
- setup(props) {
94
- const {
95
- idBtnDown,
96
- idBtnUp,
97
- } = IdAPI(props);
98
-
99
- return {
100
- columnStyles: computed(() => ({
101
- maxWidth: `${ props.widths.dndColumn }px`,
102
- minWidth: `${ props.widths.dndColumn }px`,
103
- width: `${ props.widths.dndColumn }px`,
104
- })),
105
- idBtnDown,
106
- idBtnUp,
107
- };
108
- },
109
- render() {
110
- const tag = this.isHeader ? "th" : "td";
111
- const isHandleDraggable = this.isDragAndDrop && !this.isDndDisabled;
112
-
113
- return h(tag, {
114
- class: [
115
- "a_table_form__cell",
116
- `a_table_form__cell_${ tag }`,
117
- "a_table_form__cell_reorder",
118
- ],
119
- style: this.columnStyles,
120
- }, [
121
- this.isHeader ?
122
- h("span", {
123
- class: "a_sr_only",
124
- }, [
125
- h(ATranslation, {
126
- tag: "span",
127
- text: this.texts.reorderColumn,
128
- }),
129
- ]) :
130
- this.isCreateMode ?
131
- null :
132
- this.isFooter ?
133
- null :
134
- h("div", {
135
- class: "a_table_form__reorder_actions",
136
- }, [
137
- this.canMoveRowUp(this.rowIndex) && h(AButton, {
138
- id: this.idBtnUp,
139
- class: "a_sr_only_focusable a_btn a_btn_transparent_dark a_table_form__reorder_button",
140
- disabled: this.isDndDisabled,
141
- iconLeft: ChevronUp,
142
- preventKeyboardRepeat: true,
143
- tabindex: this.isDndDisabled ? -1 : undefined,
144
- title: this.texts.reorderUp,
145
- textScreenReader: this.texts.reorderUp,
146
- onClick: () => this.moveRowUp(this.rowIndex),
147
- }),
148
- h("span", {
149
- ariaHidden: true,
150
- class: [
151
- "a_table_form__reorder_handle",
152
- {
153
- a_table_form__reorder_handle_disabled: this.isDndDisabled,
154
- },
155
- ],
156
- draggable: isHandleDraggable,
157
- onDragend: isHandleDraggable ? this.onDragend : undefined,
158
- onDragstart: isHandleDraggable ? ($event => this.onDragstart($event, this.rowIndex)) : undefined,
159
- }, [
160
- h(AIcon, {
161
- class: "a_table_form__reorder_icon",
162
- icon: this.isDndLocked ? LockFill : GripVertical,
163
- }),
164
- ]),
165
- h("span", {
166
- class: "a_sr_only",
167
- }, [
168
- h(ATranslation, {
169
- tag: "span",
170
- text: this.isDndDisabled ? this.texts.reorderDisabled : this.texts.reorderHandle,
171
- }),
172
- ]),
173
- this.canMoveRowDown(this.rowIndex) && h(AButton, {
174
- id: this.idBtnDown,
175
- class: "a_sr_only_focusable a_btn a_btn_transparent_dark a_table_form__reorder_button",
176
- disabled: this.isDndDisabled,
177
- iconLeft: ChevronDown,
178
- preventKeyboardRepeat: true,
179
- tabindex: this.isDndDisabled ? -1 : undefined,
180
- title: this.texts.reorderDown,
181
- textScreenReader: this.texts.reorderDown,
182
- onClick: () => this.moveRowDown(this.rowIndex),
183
- }),
184
- ]),
185
- ]);
186
- },
187
- };
1
+ import {
2
+ computed,
3
+ h,
4
+ } from "vue";
5
+
6
+ import AButton from "../../AButton/AButton";
7
+ import AIcon from "../../AIcon/AIcon";
8
+ import ATranslation from "../../ATranslation/ATranslation";
9
+
10
+ import IdAPI from "./compositionAPI/IdAPI";
11
+
12
+ const ChevronDown = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-down" viewBox="0 0 16 16">
13
+ <path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708"/>
14
+ </svg>`;
15
+ const ChevronUp = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-up" viewBox="0 0 16 16">
16
+ <path fill-rule="evenodd" d="M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708z"/>
17
+ </svg>`;
18
+ const GripVertical = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-grip-vertical" viewBox="0 0 16 16">
19
+ <path d="M7 2a1 1 0 1 1-2 0 1 1 0 0 1 2 0m3 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0M7 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0m3 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0M7 8a1 1 0 1 1-2 0 1 1 0 0 1 2 0m3 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0m-3 3a1 1 0 1 1-2 0 1 1 0 0 1 2 0m3 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0m-3 3a1 1 0 1 1-2 0 1 1 0 0 1 2 0m3 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/>
20
+ </svg>`;
21
+ const LockFill = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-lock-fill" viewBox="0 0 16 16">
22
+ <path d="M8 1a2 2 0 0 1 2 2v4H6V3a2 2 0 0 1 2-2m3 6V3a3 3 0 0 0-6 0v4a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2"/>
23
+ </svg>`;
24
+
25
+
26
+ export default {
27
+ name: "ATableFormCellDnd",
28
+ props: {
29
+ canMoveRowDown: {
30
+ type: Function,
31
+ required: true,
32
+ },
33
+ canMoveRowUp: {
34
+ type: Function,
35
+ required: true,
36
+ },
37
+ id: {
38
+ type: String,
39
+ required: true,
40
+ },
41
+ isCreateMode: {
42
+ type: Boolean,
43
+ required: false,
44
+ default: false,
45
+ },
46
+ isDragAndDrop: {
47
+ type: Boolean,
48
+ required: false,
49
+ default: false,
50
+ },
51
+ isDndDisabled: {
52
+ type: Boolean,
53
+ required: false,
54
+ default: false,
55
+ },
56
+ isDndLocked: {
57
+ type: Boolean,
58
+ required: false,
59
+ default: false,
60
+ },
61
+ isFooter: {
62
+ type: Boolean,
63
+ required: false,
64
+ default: false,
65
+ },
66
+ isHeader: {
67
+ type: Boolean,
68
+ required: false,
69
+ default: false,
70
+ },
71
+ moveRowDown: {
72
+ type: Function,
73
+ required: true,
74
+ },
75
+ moveRowUp: {
76
+ type: Function,
77
+ required: true,
78
+ },
79
+ onDragend: {
80
+ type: Function,
81
+ required: true,
82
+ },
83
+ onDragstart: {
84
+ type: Function,
85
+ required: true,
86
+ },
87
+ rowIndex: {
88
+ type: Number,
89
+ required: true,
90
+ },
91
+ texts: {
92
+ type: Object,
93
+ required: false,
94
+ default: () => ({}),
95
+ },
96
+ widths: {
97
+ type: Object,
98
+ required: false,
99
+ default: () => ({}),
100
+ },
101
+ },
102
+ setup(props) {
103
+ const {
104
+ idBtnDown,
105
+ idBtnUp,
106
+ } = IdAPI(props);
107
+
108
+ return {
109
+ columnStyles: computed(() => ({
110
+ maxWidth: `${ props.widths.dndColumn }px`,
111
+ minWidth: `${ props.widths.dndColumn }px`,
112
+ width: `${ props.widths.dndColumn }px`,
113
+ })),
114
+ idBtnDown,
115
+ idBtnUp,
116
+ };
117
+ },
118
+ render() {
119
+ const tag = this.isHeader ? "th" : "td";
120
+ const isHandleDraggable = this.isDragAndDrop && !this.isDndDisabled;
121
+
122
+ return h(tag, {
123
+ class: [
124
+ "a_table_form__cell",
125
+ `a_table_form__cell_${ tag }`,
126
+ "a_table_form__cell_reorder",
127
+ ],
128
+ style: this.columnStyles,
129
+ }, [
130
+ this.isHeader ?
131
+ h("span", {
132
+ class: "a_sr_only",
133
+ }, [
134
+ h(ATranslation, {
135
+ tag: "span",
136
+ text: this.texts.reorderColumn,
137
+ }),
138
+ ]) :
139
+ this.isCreateMode ?
140
+ null :
141
+ this.isFooter ?
142
+ null :
143
+ h("div", {
144
+ class: "a_table_form__reorder_actions",
145
+ }, [
146
+ this.canMoveRowUp(this.rowIndex) && h(AButton, {
147
+ id: this.idBtnUp,
148
+ class: "a_sr_only_focusable a_btn a_btn_transparent_dark a_table_form__reorder_button",
149
+ disabled: this.isDndDisabled,
150
+ iconLeft: ChevronUp,
151
+ preventKeyboardRepeat: true,
152
+ tabindex: this.isDndDisabled ? -1 : undefined,
153
+ title: this.texts.reorderUp,
154
+ textScreenReader: this.texts.reorderUp,
155
+ onClick: () => this.moveRowUp(this.rowIndex),
156
+ }),
157
+ h("span", {
158
+ ariaHidden: true,
159
+ class: [
160
+ "a_table_form__reorder_handle",
161
+ {
162
+ a_table_form__reorder_handle_disabled: this.isDndDisabled,
163
+ },
164
+ ],
165
+ draggable: isHandleDraggable,
166
+ onDragend: isHandleDraggable ? this.onDragend : undefined,
167
+ onDragstart: isHandleDraggable ? ($event => this.onDragstart($event, this.rowIndex)) : undefined,
168
+ }, [
169
+ h(AIcon, {
170
+ class: "a_table_form__reorder_icon",
171
+ icon: this.isDndLocked ? LockFill : GripVertical,
172
+ }),
173
+ ]),
174
+ h("span", {
175
+ class: "a_sr_only",
176
+ }, [
177
+ h(ATranslation, {
178
+ tag: "span",
179
+ text: this.isDndDisabled ? this.texts.reorderDisabled : this.texts.reorderHandle,
180
+ }),
181
+ ]),
182
+ this.canMoveRowDown(this.rowIndex) && h(AButton, {
183
+ id: this.idBtnDown,
184
+ class: "a_sr_only_focusable a_btn a_btn_transparent_dark a_table_form__reorder_button",
185
+ disabled: this.isDndDisabled,
186
+ iconLeft: ChevronDown,
187
+ preventKeyboardRepeat: true,
188
+ tabindex: this.isDndDisabled ? -1 : undefined,
189
+ title: this.texts.reorderDown,
190
+ textScreenReader: this.texts.reorderDown,
191
+ onClick: () => this.moveRowDown(this.rowIndex),
192
+ }),
193
+ ]),
194
+ ]);
195
+ },
196
+ };
@@ -1,104 +1,104 @@
1
- import {
2
- ref,
3
- toRef,
4
- } from "vue";
5
-
6
- import {
7
- cloneDeep,
8
- set,
9
- unset,
10
- } from "lodash-es";
11
-
12
- export default function EditAPI(props, {
13
- errorsLocal = ref(undefined),
14
- }) {
15
- const changeModel = toRef(props, "changeModel");
16
- const onCancelEditRow = toRef(props, "onCancelEditRow");
17
- const row = toRef(props, "row");
18
- const rows = toRef(props, "rows");
19
- const rowIndex = toRef(props, "rowIndex");
20
- const saveRow = toRef(props, "saveRow");
21
-
22
- const isSaving = ref(false);
23
- const modelLocal = ref(undefined);
24
-
25
- const updateModelLocal = ({
26
- column,
27
- columnId,
28
- fullModel,
29
- id,
30
- item,
31
- model,
32
- }) => {
33
- if (!modelLocal.value) {
34
- modelLocal.value = cloneDeep(row.value) || {};
35
- }
36
- let changedModel;
37
-
38
- if (changeModel.value) {
39
- changedModel = changeModel.value({
40
- modelAll: modelLocal.value,
41
- row: row.value,
42
- column,
43
- fullModel,
44
- model: model,
45
- id,
46
- item,
47
- });
48
- }
49
- if (changedModel?.model) {
50
- modelLocal.value = cloneDeep(changedModel.model);
51
- } else if (fullModel !== undefined) {
52
- modelLocal.value = cloneDeep(fullModel);
53
- } else {
54
- set(modelLocal.value, columnId, model);
55
- }
56
- unset(errorsLocal.value, columnId);
57
- };
58
-
59
- const cancelEditRow = ({ trigger, id } = {}) => {
60
- onCancelEditRow.value({
61
- row: row.value,
62
- rowIndex: rowIndex.value,
63
- trigger,
64
- id,
65
- });
66
- };
67
-
68
- const saveEditRow = async({ id } = {}) => {
69
- if (isSaving.value) {
70
- return;
71
- }
72
-
73
- errorsLocal.value = {};
74
- isSaving.value = true;
75
-
76
- try {
77
- const result = await saveRow.value({
78
- model: cloneDeep(modelLocal.value),
79
- row: row.value,
80
- rowIndex: rowIndex.value,
81
- rows: rows.value,
82
- });
83
-
84
- if (result?.errors) {
85
- errorsLocal.value = cloneDeep(result.errors);
86
- return;
87
- }
88
-
89
- cancelEditRow({ trigger: "save", id });
90
- } catch (error) {
91
- errorsLocal.value = error;
92
- } finally {
93
- isSaving.value = false;
94
- }
95
- };
96
-
97
- return {
98
- cancelEditRow,
99
- isSaving,
100
- modelLocal,
101
- saveEditRow,
102
- updateModelLocal,
103
- };
104
- }
1
+ import {
2
+ ref,
3
+ toRef,
4
+ } from "vue";
5
+
6
+ import {
7
+ cloneDeep,
8
+ set,
9
+ unset,
10
+ } from "lodash-es";
11
+
12
+ export default function EditAPI(props, {
13
+ errorsLocal = ref(undefined),
14
+ }) {
15
+ const changeModel = toRef(props, "changeModel");
16
+ const onCancelEditRow = toRef(props, "onCancelEditRow");
17
+ const row = toRef(props, "row");
18
+ const rows = toRef(props, "rows");
19
+ const rowIndex = toRef(props, "rowIndex");
20
+ const saveRow = toRef(props, "saveRow");
21
+
22
+ const isSaving = ref(false);
23
+ const modelLocal = ref(undefined);
24
+
25
+ const updateModelLocal = ({
26
+ column,
27
+ columnId,
28
+ fullModel,
29
+ id,
30
+ item,
31
+ model,
32
+ }) => {
33
+ if (!modelLocal.value) {
34
+ modelLocal.value = cloneDeep(row.value) || {};
35
+ }
36
+ let changedModel;
37
+
38
+ if (changeModel.value) {
39
+ changedModel = changeModel.value({
40
+ modelAll: modelLocal.value,
41
+ row: row.value,
42
+ column,
43
+ fullModel,
44
+ model: model,
45
+ id,
46
+ item,
47
+ });
48
+ }
49
+ if (changedModel?.model) {
50
+ modelLocal.value = cloneDeep(changedModel.model);
51
+ } else if (fullModel !== undefined) {
52
+ modelLocal.value = cloneDeep(fullModel);
53
+ } else {
54
+ set(modelLocal.value, columnId, model);
55
+ }
56
+ unset(errorsLocal.value, columnId);
57
+ };
58
+
59
+ const cancelEditRow = ({ trigger, id } = {}) => {
60
+ onCancelEditRow.value({
61
+ row: row.value,
62
+ rowIndex: rowIndex.value,
63
+ trigger,
64
+ id,
65
+ });
66
+ };
67
+
68
+ const saveEditRow = async({ id } = {}) => {
69
+ if (isSaving.value) {
70
+ return;
71
+ }
72
+
73
+ errorsLocal.value = {};
74
+ isSaving.value = true;
75
+
76
+ try {
77
+ const result = await saveRow.value({
78
+ model: cloneDeep(modelLocal.value),
79
+ row: row.value,
80
+ rowIndex: rowIndex.value,
81
+ rows: rows.value,
82
+ });
83
+
84
+ if (result?.errors) {
85
+ errorsLocal.value = cloneDeep(result.errors);
86
+ return;
87
+ }
88
+
89
+ cancelEditRow({ trigger: "save", id });
90
+ } catch(error) {
91
+ errorsLocal.value = error;
92
+ } finally {
93
+ isSaving.value = false;
94
+ }
95
+ };
96
+
97
+ return {
98
+ cancelEditRow,
99
+ isSaving,
100
+ modelLocal,
101
+ saveEditRow,
102
+ updateModelLocal,
103
+ };
104
+ }