diff --git a/resources/jscomposition/base/buttons/OutlineButton.vue b/resources/jscomposition/base/buttons/OutlineButton.vue index 3b492172de..d27a27ec11 100644 --- a/resources/jscomposition/base/buttons/OutlineButton.vue +++ b/resources/jscomposition/base/buttons/OutlineButton.vue @@ -2,9 +2,8 @@ + tw-space-x-2 tw-px-3 tw-py-3 hover:tw-bg-${color}-200 tw-justify-center tw-items-center`" + @click.prevent.stop="onClick"> diff --git a/resources/jscomposition/base/form/Dropdown.vue b/resources/jscomposition/base/form/Dropdown.vue index 1e28d9eff9..6c2e839aad 100644 --- a/resources/jscomposition/base/form/Dropdown.vue +++ b/resources/jscomposition/base/form/Dropdown.vue @@ -1,18 +1,17 @@ - + + name="input"> + class="tw-flex tw-w-full tw-justify-between tw-items-center tw-py-2 tw-px-3 tw-ring-1 tw-ring-inset + tw-ring-gray-300 tw-rounded-lg focus:tw-ring-2 focus:tw-ring-inset focus:tw-ring-primary-400" + @click.prevent.stop="toogleShow"> {{ data?.label || data?.value }} @@ -22,36 +21,34 @@ + class="tw-fixed tw-mt-1 tw-rounded-lg tw-z-10 tw-shadow-lg tw-bg-white tw-ring-1 tw-ring-inset tw-ring-gray-300" + :style="{ width: `${widthContainer}px`, top: `${top}px` }"> + onClick, + }"> + @click.prevent.stop="onClick(option, index)"> + data, + }"> {{ option.label || option.value }} + class="tw-flex tw-py-2 tw-px-4 transition duration-300"> + {{ option.label || option.value }} + @@ -63,9 +60,8 @@ diff --git a/resources/jscomposition/system/table/cell/CaseTitleCell.vue b/resources/jscomposition/system/table/cell/CaseTitleCell.vue index 07c430d5c2..f1e0f96701 100644 --- a/resources/jscomposition/system/table/cell/CaseTitleCell.vue +++ b/resources/jscomposition/system/table/cell/CaseTitleCell.vue @@ -4,18 +4,21 @@ v-if="row.case_title_formatted" class="tw-text-nowrap tw-whitespace-nowrap tw-overflow-hidden tw-text-ellipsis" :style="{ width: column.width + 'px' }" - v-html="row.case_title_formatted" /> + v-html="row.case_title_formatted" + /> + :row="row" + > {{ getValue() }} diff --git a/resources/jscomposition/system/table/filter/FooterButtons.vue b/resources/jscomposition/system/table/filter/FooterButtons.vue new file mode 100644 index 0000000000..7f733e2859 --- /dev/null +++ b/resources/jscomposition/system/table/filter/FooterButtons.vue @@ -0,0 +1,29 @@ + + + + {{ $t("Cancel") }} + + + + {{ $t("Clear") }} + + + + {{ $t("Apply") }} + + + + diff --git a/resources/jscomposition/system/table/filter/SortingButtons.vue b/resources/jscomposition/system/table/filter/SortingButtons.vue new file mode 100644 index 0000000000..bfc4d66f76 --- /dev/null +++ b/resources/jscomposition/system/table/filter/SortingButtons.vue @@ -0,0 +1,32 @@ + + + + + + {{ $t("Sort Ascending") }} + + + + + + {{ $t("Sort Descending") }} + + + + diff --git a/resources/jscomposition/system/table/filter/index.js b/resources/jscomposition/system/table/filter/index.js new file mode 100644 index 0000000000..7f7682fb96 --- /dev/null +++ b/resources/jscomposition/system/table/filter/index.js @@ -0,0 +1,11 @@ +import FilterColumn from "./FilterColumn.vue"; +import FooterButtons from "./FooterButtons.vue"; +import SortingButtons from "./SortingButtons.vue"; + +export * from "./operator"; + +export { + FilterColumn, + FooterButtons, + SortingButtons, +}; diff --git a/resources/jscomposition/system/table/filter/operator/BetweenOperator.vue b/resources/jscomposition/system/table/filter/operator/BetweenOperator.vue new file mode 100644 index 0000000000..19182999e8 --- /dev/null +++ b/resources/jscomposition/system/table/filter/operator/BetweenOperator.vue @@ -0,0 +1,48 @@ + + + + + + diff --git a/resources/jscomposition/system/table/filter/operator/DateBetweenOperator.vue b/resources/jscomposition/system/table/filter/operator/DateBetweenOperator.vue new file mode 100644 index 0000000000..f89cfb1a6f --- /dev/null +++ b/resources/jscomposition/system/table/filter/operator/DateBetweenOperator.vue @@ -0,0 +1,48 @@ + + + + + + diff --git a/resources/jscomposition/system/table/filter/operator/DateOperator.vue b/resources/jscomposition/system/table/filter/operator/DateOperator.vue new file mode 100644 index 0000000000..ffa69b243e --- /dev/null +++ b/resources/jscomposition/system/table/filter/operator/DateOperator.vue @@ -0,0 +1,18 @@ + + + + diff --git a/resources/jscomposition/system/table/filter/operator/FilterOperator.vue b/resources/jscomposition/system/table/filter/operator/FilterOperator.vue new file mode 100644 index 0000000000..8e7641af48 --- /dev/null +++ b/resources/jscomposition/system/table/filter/operator/FilterOperator.vue @@ -0,0 +1,125 @@ + + + + + + + + + + diff --git a/resources/jscomposition/system/table/filter/operator/InOperator.vue b/resources/jscomposition/system/table/filter/operator/InOperator.vue new file mode 100644 index 0000000000..b12b073084 --- /dev/null +++ b/resources/jscomposition/system/table/filter/operator/InOperator.vue @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + diff --git a/resources/jscomposition/system/table/filter/operator/InputOperator.vue b/resources/jscomposition/system/table/filter/operator/InputOperator.vue new file mode 100644 index 0000000000..82ea3fc6b0 --- /dev/null +++ b/resources/jscomposition/system/table/filter/operator/InputOperator.vue @@ -0,0 +1,17 @@ + + + + diff --git a/resources/jscomposition/system/table/filter/operator/index.js b/resources/jscomposition/system/table/filter/operator/index.js new file mode 100644 index 0000000000..b1c78c6c8e --- /dev/null +++ b/resources/jscomposition/system/table/filter/operator/index.js @@ -0,0 +1,15 @@ +import BetweenOperator from "./BetweenOperator.vue"; +import FilterOperator from "./FilterOperator.vue"; +import InOperator from "./InOperator.vue"; +import InputOperator from "./InputOperator.vue"; +import DateOperator from "./DateOperator.vue"; +import DateBetweenOperator from "./DateBetweenOperator.vue"; + +export { + BetweenOperator, + FilterOperator, + InOperator, + InputOperator, + DateOperator, + DateBetweenOperator, +}; diff --git a/resources/jscomposition/system/table/filter/operator/operatorConfig.js b/resources/jscomposition/system/table/filter/operator/operatorConfig.js new file mode 100644 index 0000000000..366769d6c4 --- /dev/null +++ b/resources/jscomposition/system/table/filter/operator/operatorConfig.js @@ -0,0 +1,39 @@ +import InputOperator from "./InputOperator.vue"; +import BetweenOperator from "./BetweenOperator.vue"; +import InOperator from "./InOperator.vue"; +import DateOperator from "./DateOperator.vue"; +import DateBetweenOperator from "./DateBetweenOperator.vue"; + +const operatorType = [ + { + operator: ["=", ">", "<", ">=", "<=", "contains", "regex"], + type: ["number", "string"], + component: () => InputOperator, + }, + { + operator: ["between"], + type: ["number", "string"], + component: () => BetweenOperator, + }, + { + operator: ["in"], + type: ["number", "string"], + component: () => InOperator, + }, + { + operator: ["<", "<=", ">", ">="], + type: ["datetime"], + component: () => DateOperator, + }, + { + operator: ["between"], + type: ["datetime"], + component: () => DateBetweenOperator, + }, +]; + +export const getOperatorType = (operator = "=", type = "string") => { + const response = operatorType.find((e) => e.operator.includes(operator) && e.type.includes(type)); + + return response; +}; diff --git a/resources/jscomposition/system/table/index.js b/resources/jscomposition/system/table/index.js index 08ba296b39..26f3b8ab32 100644 --- a/resources/jscomposition/system/table/index.js +++ b/resources/jscomposition/system/table/index.js @@ -1 +1,8 @@ -export * from "./cell/index" \ No newline at end of file +import FilterableTable from "./FilterableTable.vue"; + +export * from "./cell/index"; +export * from "./filter/index"; + +export { + FilterableTable, +};