diff --git a/app/controllers/platform/api/v1/accounts_controller.rb b/app/controllers/platform/api/v1/accounts_controller.rb index 9e6d53fef..e11cf9d4a 100644 --- a/app/controllers/platform/api/v1/accounts_controller.rb +++ b/app/controllers/platform/api/v1/accounts_controller.rb @@ -4,6 +4,7 @@ class Platform::Api::V1::AccountsController < PlatformController def create @resource = Account.create!(account_params) update_resource_features + @resource.save! @platform_app.platform_app_permissibles.find_or_create_by(permissible: @resource) end diff --git a/app/dashboards/account_dashboard.rb b/app/dashboards/account_dashboard.rb index de6ab42bb..b566551f4 100644 --- a/app/dashboards/account_dashboard.rb +++ b/app/dashboards/account_dashboard.rb @@ -26,7 +26,8 @@ class AccountDashboard < Administrate::BaseDashboard conversations: CountField, locale: Field::Select.with_options(collection: LANGUAGES_CONFIG.map { |_x, y| y[:iso_639_1_code] }), status: Field::Select.with_options(collection: [%w[Active active], %w[Suspended suspended]]), - account_users: Field::HasMany + account_users: Field::HasMany, + custom_attributes: Field::String }.merge(enterprise_attribute_types).freeze # COLLECTION_ATTRIBUTES @@ -45,7 +46,7 @@ class AccountDashboard < Administrate::BaseDashboard # SHOW_PAGE_ATTRIBUTES # an array of attributes that will be displayed on the model's show page. - enterprise_show_page_attributes = ChatwootApp.enterprise? ? %i[limits all_features] : [] + enterprise_show_page_attributes = ChatwootApp.enterprise? ? %i[custom_attributes limits all_features] : [] SHOW_PAGE_ATTRIBUTES = (%i[ id name diff --git a/app/javascript/dashboard/components-next/Campaigns/CampaignCard/CampaignCard.vue b/app/javascript/dashboard/components-next/Campaigns/CampaignCard/CampaignCard.vue index 068114ed6..229553253 100644 --- a/app/javascript/dashboard/components-next/Campaigns/CampaignCard/CampaignCard.vue +++ b/app/javascript/dashboard/components-next/Campaigns/CampaignCard/CampaignCard.vue @@ -83,61 +83,55 @@ const inboxIcon = computed(() => { diff --git a/app/javascript/dashboard/components-next/Campaigns/Pages/CampaignPage/LiveChatCampaign/EditLiveChatCampaignDialog.vue b/app/javascript/dashboard/components-next/Campaigns/Pages/CampaignPage/LiveChatCampaign/EditLiveChatCampaignDialog.vue index 458ee1f1c..9f46a1bde 100644 --- a/app/javascript/dashboard/components-next/Campaigns/Pages/CampaignPage/LiveChatCampaign/EditLiveChatCampaignDialog.vue +++ b/app/javascript/dashboard/components-next/Campaigns/Pages/CampaignPage/LiveChatCampaign/EditLiveChatCampaignDialog.vue @@ -63,14 +63,12 @@ defineExpose({ dialogRef }); overflow-y-auto @confirm="handleSubmit" > - + diff --git a/app/javascript/dashboard/components-next/CardLayout.vue b/app/javascript/dashboard/components-next/CardLayout.vue index 73c140a7b..0fd3f5986 100644 --- a/app/javascript/dashboard/components-next/CardLayout.vue +++ b/app/javascript/dashboard/components-next/CardLayout.vue @@ -15,7 +15,7 @@ const handleClick = () => { diff --git a/app/javascript/dashboard/components-next/Contacts/ContactsCard/ContactsCard.vue b/app/javascript/dashboard/components-next/Contacts/ContactsCard/ContactsCard.vue index 92d26e90d..5b5989a42 100644 --- a/app/javascript/dashboard/components-next/Contacts/ContactsCard/ContactsCard.vue +++ b/app/javascript/dashboard/components-next/Contacts/ContactsCard/ContactsCard.vue @@ -61,55 +61,49 @@ const onClickViewDetails = async () => { diff --git a/app/javascript/dashboard/components-next/HelpCenter/PortalSwitcher/CreatePortalDialog.vue b/app/javascript/dashboard/components-next/HelpCenter/PortalSwitcher/CreatePortalDialog.vue index 78cc59003..d245656d0 100644 --- a/app/javascript/dashboard/components-next/HelpCenter/PortalSwitcher/CreatePortalDialog.vue +++ b/app/javascript/dashboard/components-next/HelpCenter/PortalSwitcher/CreatePortalDialog.vue @@ -120,29 +120,27 @@ defineExpose({ dialogRef }); :is-loading="isCreatingPortal" @confirm="handleDialogConfirm" > - +
+ + +
diff --git a/app/javascript/dashboard/components-next/combobox/ComboBox.vue b/app/javascript/dashboard/components-next/combobox/ComboBox.vue index 459091d83..de84974e6 100644 --- a/app/javascript/dashboard/components-next/combobox/ComboBox.vue +++ b/app/javascript/dashboard/components-next/combobox/ComboBox.vue @@ -118,13 +118,12 @@ watch( diff --git a/app/javascript/dashboard/components-next/combobox/ComboBoxDropdown.vue b/app/javascript/dashboard/components-next/combobox/ComboBoxDropdown.vue index e479aca2d..e1cd8a086 100644 --- a/app/javascript/dashboard/components-next/combobox/ComboBoxDropdown.vue +++ b/app/javascript/dashboard/components-next/combobox/ComboBoxDropdown.vue @@ -11,10 +11,6 @@ const props = defineProps({ type: Array, required: true, }, - searchValue: { - type: String, - required: true, - }, searchPlaceholder: { type: String, default: '', @@ -33,10 +29,15 @@ const props = defineProps({ }, }); -const emit = defineEmits(['update:searchValue', 'select', 'search']); +const emit = defineEmits(['select', 'search']); const { t } = useI18n(); +const searchValue = defineModel('searchValue', { + type: String, + default: '', +}); + const searchInput = ref(null); const isSelected = option => { @@ -47,7 +48,7 @@ const isSelected = option => { }; const onInputSearch = event => { - emit('update:searchValue', event.target.value); + searchValue.value = event.target.value; emit('search', event.target.value); }; diff --git a/app/javascript/dashboard/components-next/dialog/Dialog.story.vue b/app/javascript/dashboard/components-next/dialog/Dialog.story.vue index a94381e52..60fb6000e 100644 --- a/app/javascript/dashboard/components-next/dialog/Dialog.story.vue +++ b/app/javascript/dashboard/components-next/dialog/Dialog.story.vue @@ -7,6 +7,7 @@ import Input from 'dashboard/components-next/input/Input.vue'; const alertDialog = ref(null); const editDialog = ref(null); const confirmDialog = ref(null); +const confirmDialogWithCustomFooter = ref(null); const openAlertDialog = () => { alertDialog.value.open(); @@ -17,6 +18,9 @@ const openEditDialog = () => { const openConfirmDialog = () => { confirmDialog.value.open(); }; +const openConfirmDialogWithCustomFooter = () => { + confirmDialogWithCustomFooter.value.open(); +}; // eslint-disable-next-line no-unused-vars const onConfirm = dialog => {}; @@ -44,24 +48,22 @@ const onConfirm = dialog => {}; confirm-button-label="Save" @confirm="onConfirm()" > - +
+ + +
@@ -77,5 +79,21 @@ const onConfirm = dialog => {}; @confirm="onConfirm()" /> + + +