@fleetbase/fleetops-engine 0.3.1 → 0.3.3
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.
- package/addon/components/admin/visibility-controls.js +1 -0
- package/addon/components/contact-form-panel.hbs +82 -0
- package/addon/components/contact-form-panel.js +195 -0
- package/addon/components/contact-panel/details.hbs +36 -0
- package/addon/components/contact-panel/details.js +3 -0
- package/addon/components/contact-panel.hbs +52 -0
- package/addon/components/contact-panel.js +161 -0
- package/addon/components/driver-form-panel.hbs +39 -55
- package/addon/components/driver-form-panel.js +41 -0
- package/addon/components/driver-panel/details.hbs +2 -2
- package/addon/components/driver-panel.hbs +12 -10
- package/addon/components/driver-panel.js +13 -0
- package/addon/components/fleet-form-panel.hbs +28 -28
- package/addon/components/fleet-form-panel.js +150 -1
- package/addon/components/fleet-listing-panel.hbs +8 -0
- package/addon/components/fleet-listing-panel.js +34 -0
- package/addon/components/fleet-panel/details.hbs +30 -0
- package/addon/components/fleet-panel/driver-listing.hbs +72 -0
- package/addon/components/fleet-panel/driver-listing.js +149 -0
- package/addon/components/fleet-panel/vehicle-listing.hbs +72 -0
- package/addon/components/fleet-panel/vehicle-listing.js +149 -0
- package/addon/components/fleet-panel.hbs +12 -58
- package/addon/components/fleet-panel.js +148 -26
- package/addon/components/fleet-vehicle-listing.hbs +0 -1
- package/addon/components/fuel-report-form-panel.hbs +41 -0
- package/addon/components/fuel-report-form-panel.js +122 -0
- package/addon/components/fuel-report-panel/details.hbs +38 -0
- package/addon/components/fuel-report-panel.hbs +30 -0
- package/addon/components/fuel-report-panel.js +161 -0
- package/addon/components/issue-form-panel.hbs +85 -0
- package/addon/components/issue-form-panel.js +211 -0
- package/addon/components/issue-panel/details.hbs +48 -0
- package/addon/components/issue-panel.hbs +30 -0
- package/addon/components/issue-panel.js +160 -0
- package/addon/components/layout/fleet-ops-sidebar.hbs +2 -2
- package/addon/components/layout/fleet-ops-sidebar.js +2 -1
- package/addon/components/live-map-drawer/driver-listing.hbs +6 -0
- package/addon/components/live-map-drawer/driver-listing.js +240 -0
- package/addon/components/live-map-drawer/place-listing.hbs +6 -0
- package/addon/components/live-map-drawer/place-listing.js +204 -0
- package/addon/components/live-map-drawer/vehicle-listing.hbs +6 -0
- package/addon/components/live-map-drawer/vehicle-listing.js +216 -0
- package/addon/components/live-map-drawer.hbs +17 -0
- package/addon/components/live-map-drawer.js +104 -0
- package/addon/components/live-map.hbs +5 -1
- package/addon/components/live-map.js +109 -15
- package/addon/components/map-container/toolbar.hbs +15 -9
- package/addon/components/map-container/topbar.hbs +1 -1
- package/addon/components/modals/issue-details.hbs +38 -0
- package/addon/components/modals/issue-from.hbs +138 -0
- package/addon/components/modals/order-event.hbs +1 -1
- package/addon/components/order/schedule-card.hbs +4 -4
- package/addon/components/order/schedule-card.js +13 -6
- package/addon/components/place-form-panel.hbs +50 -0
- package/addon/components/place-form-panel.js +134 -0
- package/addon/components/place-panel/details.hbs +95 -0
- package/addon/components/place-panel.hbs +30 -0
- package/addon/components/place-panel.js +161 -0
- package/addon/components/vehicle-form-panel.hbs +35 -44
- package/addon/components/vehicle-form-panel.js +41 -0
- package/addon/components/vehicle-panel/details.hbs +8 -2
- package/addon/components/vehicle-panel.hbs +8 -6
- package/addon/components/vendor-form-panel/create-form.hbs +114 -0
- package/addon/components/vendor-form-panel/create-form.js +158 -0
- package/addon/components/vendor-form-panel/edit-form.hbs +98 -0
- package/addon/components/vendor-form-panel/edit-form.js +51 -0
- package/addon/components/vendor-form-panel.hbs +48 -0
- package/addon/components/vendor-form-panel.js +226 -0
- package/addon/components/vendor-panel/details.hbs +77 -0
- package/addon/components/vendor-panel/details.js +12 -0
- package/addon/components/vendor-panel.hbs +58 -0
- package/addon/components/vendor-panel.js +161 -0
- package/addon/controllers/management/contacts/index/details.js +55 -0
- package/addon/controllers/management/contacts/index/edit.js +111 -0
- package/addon/controllers/management/contacts/index/new.js +88 -0
- package/addon/controllers/management/contacts/index.js +23 -128
- package/addon/controllers/management/drivers/index/new.js +2 -2
- package/addon/controllers/management/drivers/index.js +18 -32
- package/addon/controllers/management/fleets/index/details.js +53 -0
- package/addon/controllers/management/fleets/index/edit.js +75 -41
- package/addon/controllers/management/fleets/index/new.js +42 -57
- package/addon/controllers/management/fleets/index.js +0 -1
- package/addon/controllers/management/fuel-reports/index/details.js +63 -0
- package/addon/controllers/management/fuel-reports/index/edit.js +111 -0
- package/addon/controllers/management/fuel-reports/index/new.js +95 -0
- package/addon/controllers/management/fuel-reports/index.js +57 -127
- package/addon/controllers/management/issues/index/details.js +54 -0
- package/addon/controllers/management/issues/index/edit.js +111 -0
- package/addon/controllers/management/issues/index/new.js +94 -0
- package/addon/controllers/management/issues/index.js +131 -26
- package/addon/controllers/management/places/index/details.js +55 -0
- package/addon/controllers/management/places/index/edit.js +111 -0
- package/addon/controllers/management/places/index/new.js +88 -0
- package/addon/controllers/management/places/index.js +21 -182
- package/addon/controllers/management/vehicles/index/new.js +2 -6
- package/addon/controllers/management/vendors/index/details.js +55 -0
- package/addon/controllers/management/vendors/index/edit.js +111 -0
- package/addon/controllers/management/vendors/index/new.js +88 -0
- package/addon/controllers/management/vendors/index.js +43 -247
- package/addon/controllers/operations/orders/index.js +29 -15
- package/addon/controllers/operations/scheduler/index.js +45 -30
- package/addon/routes/management/contacts/index/details.js +14 -0
- package/addon/routes/management/contacts/index/edit.js +10 -0
- package/addon/routes/management/contacts/index/new.js +3 -0
- package/addon/routes/management/contacts/index.js +1 -1
- package/addon/routes/management/fleets/index/details.js +1 -1
- package/addon/routes/management/fleets/index/edit.js +1 -1
- package/addon/routes/management/fleets/index.js +1 -1
- package/addon/routes/management/fuel-reports/index/details.js +14 -0
- package/addon/routes/management/fuel-reports/index/edit.js +10 -0
- package/addon/routes/management/fuel-reports/index/new.js +3 -0
- package/addon/routes/management/fuel-reports/index.js +3 -1
- package/addon/routes/management/issues/index/details.js +14 -0
- package/addon/routes/management/issues/index/edit.js +10 -0
- package/addon/routes/management/issues/index/new.js +3 -0
- package/addon/routes/management/issues/index.js +1 -1
- package/addon/routes/management/places/index/details.js +14 -0
- package/addon/routes/management/places/index/edit.js +10 -0
- package/addon/routes/management/places/index/new.js +3 -0
- package/addon/routes/management/places/index.js +6 -1
- package/addon/routes/management/vendors/index/details.js +15 -0
- package/addon/routes/management/vendors/index/edit.js +11 -0
- package/addon/routes/management/vendors/index/new.js +3 -0
- package/addon/routes/management/vendors/index.js +1 -0
- package/addon/routes/operations/scheduler/index.js +25 -0
- package/addon/routes.js +27 -7
- package/addon/services/context-panel.js +60 -0
- package/addon/styles/fleetops-engine.css +28 -0
- package/addon/templates/management/contacts/index/details.hbs +1 -0
- package/addon/templates/management/contacts/index/edit.hbs +1 -0
- package/addon/templates/management/contacts/index/new.hbs +1 -0
- package/addon/templates/management/contacts/index.hbs +22 -3
- package/addon/templates/management/drivers/index.hbs +29 -5
- package/addon/templates/management/fleets/index/details.hbs +1 -1
- package/addon/templates/management/fleets/index/edit.hbs +1 -1
- package/addon/templates/management/fleets/index/new.hbs +1 -1
- package/addon/templates/management/fuel-reports/index/details.hbs +1 -0
- package/addon/templates/management/fuel-reports/index/edit.hbs +1 -0
- package/addon/templates/management/fuel-reports/index/new.hbs +1 -0
- package/addon/templates/management/fuel-reports/index.hbs +25 -4
- package/addon/templates/management/issues/index/details.hbs +1 -0
- package/addon/templates/management/issues/index/edit.hbs +1 -0
- package/addon/templates/management/issues/index/new.hbs +1 -0
- package/addon/templates/management/issues/index.hbs +5 -3
- package/addon/templates/management/places/index/details.hbs +1 -0
- package/addon/templates/management/places/index/edit.hbs +1 -0
- package/addon/templates/management/places/index/new.hbs +1 -0
- package/addon/templates/management/vendors/index/details.hbs +1 -0
- package/addon/templates/management/vendors/index/edit.hbs +1 -0
- package/addon/templates/management/vendors/index/new.hbs +1 -0
- package/addon/templates/operations/orders/index.hbs +5 -5
- package/addon/templates/operations/scheduler/index.hbs +33 -9
- package/addon/utils/create-full-calendar-event-from-order.js +8 -0
- package/app/components/contact-form-panel.js +1 -0
- package/app/components/contact-panel/details.js +1 -0
- package/app/components/contact-panel.js +1 -0
- package/app/components/{full-calendar/draggable.js → fleet-listing-panel.js} +1 -1
- package/app/components/fleet-panel/details.js +1 -0
- package/app/components/fleet-panel/driver-listing.js +1 -0
- package/app/components/fleet-panel/vehicle-listing.js +1 -0
- package/app/components/fuel-report-form-panel.js +1 -0
- package/app/components/{full-calendar.js → fuel-report-panel.js} +1 -1
- package/app/components/issue-form-panel.js +1 -0
- package/app/components/issue-panel.js +1 -0
- package/app/components/live-map-drawer/driver-listing.js +1 -0
- package/app/components/live-map-drawer/place-listing.js +1 -0
- package/app/components/live-map-drawer/vehicle-listing.js +1 -0
- package/app/components/live-map-drawer.js +1 -0
- package/app/components/place-form-panel.js +1 -0
- package/app/components/place-panel.js +1 -0
- package/app/components/vendor-form-panel/create-form.js +1 -0
- package/app/components/vendor-form-panel/edit-form.js +1 -0
- package/app/components/vendor-form-panel.js +1 -0
- package/app/components/vendor-panel/details.js +1 -0
- package/app/components/vendor-panel.js +1 -0
- package/app/controllers/management/contacts/index/details.js +1 -0
- package/app/controllers/management/contacts/index/edit.js +1 -0
- package/app/controllers/management/contacts/index/new.js +1 -0
- package/app/controllers/management/fuel-reports/index/details.js +1 -0
- package/app/controllers/management/fuel-reports/index/edit.js +1 -0
- package/app/controllers/management/fuel-reports/index/new.js +1 -0
- package/app/controllers/management/issues/index/details.js +1 -0
- package/app/controllers/management/issues/index/edit.js +1 -0
- package/app/controllers/management/issues/index/new.js +1 -0
- package/app/controllers/management/places/index/details.js +1 -0
- package/app/controllers/management/places/index/edit.js +1 -0
- package/app/controllers/management/places/index/new.js +1 -0
- package/app/controllers/management/vendors/index/edit.js +1 -0
- package/app/controllers/management/vendors/index/new.js +1 -0
- package/app/routes/addon/routes/management/places/index/new.js +1 -0
- package/app/routes/management/contacts/index/details.js +1 -0
- package/app/routes/management/contacts/index/edit.js +1 -0
- package/app/routes/management/contacts/index/new.js +1 -0
- package/app/routes/management/fuel-reports/index/details.js +1 -0
- package/app/routes/management/fuel-reports/index/edit.js +1 -0
- package/app/routes/management/fuel-reports/index/new.js +1 -0
- package/app/routes/management/issues/index/details.js +1 -0
- package/app/routes/management/issues/index/edit.js +1 -0
- package/app/routes/management/issues/index/new.js +1 -0
- package/app/routes/management/places/index/details.js +1 -0
- package/app/routes/management/places/index/edit.js +1 -0
- package/app/routes/management/places/index/new.js +1 -0
- package/app/routes/management/vendors/index/details.js +1 -0
- package/app/routes/management/vendors/index/edit.js +1 -0
- package/app/routes/management/vendors/index/new.js +1 -0
- package/app/templates/addon/routes/management/places/index/new.js +1 -0
- package/app/templates/management/contacts/index/details.js +1 -0
- package/app/templates/management/contacts/index/edit.js +1 -0
- package/app/templates/management/contacts/index/new.js +1 -0
- package/app/templates/management/fuel-reports/index/details.js +1 -0
- package/app/templates/management/fuel-reports/index/edit.js +1 -0
- package/app/templates/management/fuel-reports/index/new.js +1 -0
- package/app/templates/management/issues/index/details.js +1 -0
- package/app/templates/management/issues/index/edit.js +1 -0
- package/app/templates/management/issues/index/new.js +1 -0
- package/app/templates/management/places/index/details.js +1 -0
- package/app/templates/management/places/index/edit.js +1 -0
- package/app/templates/management/places/index/new.js +1 -0
- package/app/templates/management/vendors/index/details.js +1 -0
- package/app/templates/management/vendors/index/edit.js +1 -0
- package/app/templates/management/vendors/index/new.js +1 -0
- package/app/utils/create-full-calendar-event-from-order.js +1 -0
- package/composer.json +1 -1
- package/config/environment.js +2 -1
- package/extension.json +1 -1
- package/package.json +5 -4
- package/server/migrations/2023_11_03_072503_refactor_issues_table_columns.php +42 -0
- package/server/migrations/2023_11_06_040645_refactor_fuel_reports_table.php +38 -0
- package/server/src/Casts/Point.php +15 -1
- package/server/src/Http/Controllers/Internal/v1/DriverController.php +33 -15
- package/server/src/Http/Filter/FleetFilter.php +7 -0
- package/server/src/Http/Filter/FuelReportFilter.php +58 -0
- package/server/src/Http/Filter/IssueFilter.php +69 -0
- package/server/src/Http/Filter/VehicleFilter.php +10 -0
- package/server/src/Http/Middleware/TransformLocationMiddleware.php +48 -0
- package/server/src/Http/Resources/v1/Driver.php +1 -0
- package/server/src/Http/Resources/v1/Fleet.php +20 -21
- package/server/src/Http/Resources/v1/FuelReport.php +37 -35
- package/server/src/Http/Resources/v1/Issue.php +77 -0
- package/server/src/Http/Resources/v1/ParentFleet.php +60 -0
- package/server/src/Http/Resources/v1/SubFleet.php +60 -0
- package/server/src/Http/Resources/v1/Vehicle.php +4 -2
- package/server/src/Integrations/Lalamove/Lalamove.php +6 -6
- package/server/src/Models/Contact.php +7 -0
- package/server/src/Models/Driver.php +1 -1
- package/server/src/Models/Fleet.php +35 -4
- package/server/src/Models/FuelReport.php +53 -3
- package/server/src/Models/Issue.php +106 -7
- package/server/src/Models/Order.php +22 -0
- package/server/src/Models/Vehicle.php +1 -1
- package/server/src/Models/VehicleDevice.php +4 -2
- package/server/src/Models/VehicleDeviceEvent.php +8 -4
- package/server/src/Notifications/OrderAssigned.php +0 -6
- package/server/src/Notifications/OrderCanceled.php +0 -6
- package/server/src/Notifications/OrderDispatchFailed.php +0 -6
- package/server/src/Notifications/OrderDispatched.php +0 -6
- package/server/src/Notifications/OrderPing.php +0 -6
- package/server/src/Notifications/OrderSplit.php +0 -6
- package/server/src/Observers/FleetObserver.php +19 -0
- package/server/src/Providers/FleetOpsServiceProvider.php +1 -0
- package/server/src/Providers/NotificationServiceProvider.php +1 -1
- package/server/src/routes.php +2 -2
- package/addon/components/full-calendar/draggable.js +0 -1
- package/addon/components/full-calendar.js +0 -1
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
<div class="space-y-4">
|
|
2
|
+
<ContentPanel @title="Setup" @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
|
|
3
|
+
<InputGroup @name="Select vendor type">
|
|
4
|
+
<div class="fleetbase-model-select fleetbase-power-select ember-model-select">
|
|
5
|
+
<PowerSelect @options={{this.vendorTypes}} @selected={{this.selectedVendorType}} @onChange={{this.onSelectVendorType}} @placeholder="Select vendor type" @triggerClass="form-select form-input" as |vendorType|>
|
|
6
|
+
{{vendorType.label}}
|
|
7
|
+
</PowerSelect>
|
|
8
|
+
</div>
|
|
9
|
+
</InputGroup>
|
|
10
|
+
{{#if (eq this.selectedVendorType.value "integrated-vendor")}}
|
|
11
|
+
<InputGroup @name="Choose integrated vendor provider">
|
|
12
|
+
<div class="fleetbase-model-select fleetbase-power-select ember-model-select">
|
|
13
|
+
<PowerSelect @options={{this.supportedIntegratedVendors}} @selected={{this.selectedIntegratedVendor}} @onChange={{this.onSelectIntegratedVendor}} @placeholder="Select integrated vendor provider" @triggerClass="form-select form-input" as |integratedVendor|>
|
|
14
|
+
<div class="flex flex-row items-center">
|
|
15
|
+
<Image src={{integratedVendor.logo}} alt={{integratedVendor.code}} class="w-4 h-4" width="16" height="16" />
|
|
16
|
+
<h3 class="text-sm ml-4 dark:text-white">{{integratedVendor.name}}</h3>
|
|
17
|
+
</div>
|
|
18
|
+
</PowerSelect>
|
|
19
|
+
</div>
|
|
20
|
+
</InputGroup>
|
|
21
|
+
{{/if}}
|
|
22
|
+
</ContentPanel>
|
|
23
|
+
{{#if this.selectedVendorType.value}}
|
|
24
|
+
{{#if (eq this.selectedVendorType.value "integrated-vendor")}}
|
|
25
|
+
{{#if this.selectedIntegratedVendor}}
|
|
26
|
+
<ContentPanel @title="Provider" @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
|
|
27
|
+
<div class="flex flex-row items-center">
|
|
28
|
+
<img src={{this.selectedIntegratedVendor.logo}} alt={{this.selectedIntegratedVendor.code}} class="w-12 h-12" width="48" height="48" />
|
|
29
|
+
<h3 class="text-base text-black dark:text-white ml-4">{{this.selectedIntegratedVendor.name}}</h3>
|
|
30
|
+
</div>
|
|
31
|
+
</ContentPanel>
|
|
32
|
+
<ContentPanel @title="Credentials" @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
|
|
33
|
+
{{#each this.selectedIntegratedVendor.credential_params as |param|}}
|
|
34
|
+
<InputGroup @name={{smart-humanize param.key}} @value={{mut (get this.integratedVendor.credentials param.key)}} @helpText={{concat "Optionally supply your own " (smart-humanize param.key) " to configure this vendor."}} />
|
|
35
|
+
{{/each}}
|
|
36
|
+
</ContentPanel>
|
|
37
|
+
<ContentPanel @title="Options" @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
|
|
38
|
+
{{#each this.selectedIntegratedVendor.option_params as |param|}}
|
|
39
|
+
{{#if param.options}}
|
|
40
|
+
<InputGroup @name={{smart-humanize param.key}}>
|
|
41
|
+
<Select @value={{mut (get this.integratedVendor.options param.key)}} @options={{param.options}} @optionValue={{param.optionValue}} @optionLabel={{param.optionLabel}} @humanize={{true}} @placeholder={{concat "Select " (smart-humanize param.key)}} @onSelect={{fn (mut (get this.integratedVendor.options param.key))}} />
|
|
42
|
+
</InputGroup>
|
|
43
|
+
{{else}}
|
|
44
|
+
<InputGroup @name={{smart-humanize param.key}} @value={{mut (get this.integratedVendor.options param.key)}} @helpText={{concat "Optionally supply your own " (smart-humanize param.key) " to configure this vendor."}} />
|
|
45
|
+
{{/if}}
|
|
46
|
+
{{/each}}
|
|
47
|
+
<InputGroup>
|
|
48
|
+
<Checkbox @value={{this.integratedVendor.sandbox}} @label="Sandbox" @onToggle={{fn (mut this.integratedVendor.sandbox)}} @alignItems="center" @labelClass="mb-0i" />
|
|
49
|
+
</InputGroup>
|
|
50
|
+
</ContentPanel>
|
|
51
|
+
<ContentPanel @title="Advanced Options" @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
|
|
52
|
+
<div>
|
|
53
|
+
<a href="javascript:;" class="text-blue-600 underline text-sm" {{on "click" this.toggleAdvancedOptions}}>{{if
|
|
54
|
+
this.showAdvancedOptions
|
|
55
|
+
"Hide Advanced Options"
|
|
56
|
+
"Show Advanced Options"
|
|
57
|
+
}}</a>
|
|
58
|
+
</div>
|
|
59
|
+
{{#if this.showAdvancedOptions}}
|
|
60
|
+
<div class="mt-4">
|
|
61
|
+
<InputGroup @name="Custom Host" @value={{this.integratedVendor.host}} @helpText="Optionally provide a custom host that should be used for this integration." />
|
|
62
|
+
<InputGroup @name="Custom Namespace" @value={{this.integratedVendor.namespace}} @helpText="Optionally provide a custom namespace or api version that should be used for the integration." />
|
|
63
|
+
<InputGroup @name="Webhook URL" @value={{this.integratedVendor.webhook_url}} @helpText="Integrated vendors will typically require this so that Fleetbase can receive activity updates on the order. Do not change unless you know what you are doing! Changing this may break your order updates!" />
|
|
64
|
+
</div>
|
|
65
|
+
{{/if}}
|
|
66
|
+
</ContentPanel>
|
|
67
|
+
{{else}}
|
|
68
|
+
<div class="flex items-center justify-center border-2 border-dashed h-32 w-full rounded-md dark:border-gray-700 border-gray-200">
|
|
69
|
+
<h3 class="text-gray-800 dark:text-gray-400 italic text-sm">Select an integrated vendor provider.</h3>
|
|
70
|
+
</div>
|
|
71
|
+
{{/if}}
|
|
72
|
+
{{else}}
|
|
73
|
+
<ContentPanel @title="Vendor Details" @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
|
|
74
|
+
<InputGroup @name="Name" @value={{this.vendor.name}} @helpText="The vendor's name, typically the name of a business." />
|
|
75
|
+
<InputGroup @name="Email" @type="email" @value={{this.vendor.email}} @helpText="The vendor's email, this can be used to trigger emails to the vendor." />
|
|
76
|
+
<InputGroup @name="Phone" @type="tel" @value={{this.vendor.phone}} @helpText="The vendor's phone #, this can be used to trigger SMS or messages to the vendor." />
|
|
77
|
+
<InputGroup @name="Website" @value={{this.vendor.website}} @helpText="The vendor's website, optionally add the vendors website for reference." />
|
|
78
|
+
<InputGroup @name="Type">
|
|
79
|
+
<div class="fleetbase-model-select fleetbase-power-select ember-model-select">
|
|
80
|
+
<PowerSelect @options={{@vendorTypes}} @selected={{this.vendor.type}} @onChange={{fn (mut this.vendor.type)}} @placeholder="Select vendor type" @triggerClass="form-select form-input" as |type|>
|
|
81
|
+
{{smart-humanize type}}
|
|
82
|
+
</PowerSelect>
|
|
83
|
+
</div>
|
|
84
|
+
</InputGroup>
|
|
85
|
+
<InputGroup @name="Status">
|
|
86
|
+
<div class="fleetbase-model-select fleetbase-power-select ember-model-select">
|
|
87
|
+
<PowerSelect @options={{@vendorStatusOptions}} @selected={{this.vendor.status}} @onChange={{fn (mut this.vendor.status)}} @placeholder="Select vendor status" @triggerClass="form-select form-input" as |status|>
|
|
88
|
+
{{smart-humanize status}}
|
|
89
|
+
</PowerSelect>
|
|
90
|
+
</div>
|
|
91
|
+
</InputGroup>
|
|
92
|
+
<InputGroup @wrapperClass="col-span-2">
|
|
93
|
+
<div class="flex items-center justify-between">
|
|
94
|
+
<label>
|
|
95
|
+
Address
|
|
96
|
+
</label>
|
|
97
|
+
<div class="mb-1.5 flex flex-row">
|
|
98
|
+
<Button @type="default" @size="xs" @icon="edit" @text={{if this.vendor.has_place "Edit" "New Address"}} @onClick={{this.editAddress}} />
|
|
99
|
+
</div>
|
|
100
|
+
</div>
|
|
101
|
+
<ModelSelect @modelName="place" @selectedModel={{this.vendor.place}} @placeholder="Select Address" @triggerClass="form-select form-input" @infiniteScroll={{false}} @renderInPlace={{true}} @onChange={{this.selectVendorAddress}} as |model|>
|
|
102
|
+
<div class="flex items-center flex-row justify-between">
|
|
103
|
+
<div class="truncate flex-1">{{n-a model.address}}</div>
|
|
104
|
+
<Badge @hideStatusDot={{true}} @status="info">{{model.public_id}}</Badge>
|
|
105
|
+
</div>
|
|
106
|
+
</ModelSelect>
|
|
107
|
+
</InputGroup>
|
|
108
|
+
<InputGroup @name="Country">
|
|
109
|
+
<CountrySelect class="w-full form-input form-select form-datalist" @value={{this.vendor.country}} @onChange={{fn (mut this.vendor.country)}} placeholder="Country" />
|
|
110
|
+
</InputGroup>
|
|
111
|
+
</ContentPanel>
|
|
112
|
+
{{/if}}
|
|
113
|
+
{{/if}}
|
|
114
|
+
</div>
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import Component from '@glimmer/component';
|
|
2
|
+
import { tracked } from '@glimmer/tracking';
|
|
3
|
+
import { inject as service } from '@ember/service';
|
|
4
|
+
import { action } from '@ember/object';
|
|
5
|
+
import { isArray } from '@ember/array';
|
|
6
|
+
import apiUrl from '@fleetbase/ember-core/utils/api-url';
|
|
7
|
+
import contextComponentCallback from '../../utils/context-component-callback';
|
|
8
|
+
|
|
9
|
+
export default class VendorFormPanelCreateFormComponent extends Component {
|
|
10
|
+
/**
|
|
11
|
+
* @service store
|
|
12
|
+
*/
|
|
13
|
+
@service store;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @service fetch
|
|
17
|
+
*/
|
|
18
|
+
@service fetch;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @service contextPanel
|
|
22
|
+
*/
|
|
23
|
+
@service contextPanel;
|
|
24
|
+
/**
|
|
25
|
+
* State of whether editing credentials is enabled.
|
|
26
|
+
* @type {Boolean}
|
|
27
|
+
*/
|
|
28
|
+
@tracked isEditingCredentials = false;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* State of whether to show advanced options for integrated vendor.
|
|
32
|
+
* @type {Boolean}
|
|
33
|
+
*/
|
|
34
|
+
@tracked showAdvancedOptions = false;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* The selectable types of vendors.
|
|
38
|
+
* @type {Array}
|
|
39
|
+
*/
|
|
40
|
+
@tracked vendorTypes = [
|
|
41
|
+
{ label: 'Choose a integrated vendor', value: 'integrated-vendor' },
|
|
42
|
+
{ label: 'Create a custom vendor', value: 'vendor' },
|
|
43
|
+
];
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* The selected type of vendor being created or edited.
|
|
47
|
+
* @type {String}
|
|
48
|
+
*/
|
|
49
|
+
@tracked selectedVendorType = this.vendorTypes[1];
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* The supported integrated vendors.
|
|
53
|
+
* @type {Array}
|
|
54
|
+
*/
|
|
55
|
+
@tracked supportedIntegratedVendors = [];
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* The selected integrated vendor provider.
|
|
59
|
+
* @type {Object}
|
|
60
|
+
*/
|
|
61
|
+
@tracked selectedIntegratedVendor;
|
|
62
|
+
|
|
63
|
+
constructor() {
|
|
64
|
+
super(...arguments);
|
|
65
|
+
this.vendor = this.args.vendor;
|
|
66
|
+
this.fetchSupportedIntegratedVendors();
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
@action toggleCredentialsReset() {
|
|
70
|
+
if (this.isEditingCredentials) {
|
|
71
|
+
this.isEditingCredentials = false;
|
|
72
|
+
} else {
|
|
73
|
+
this.isEditingCredentials = true;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
@action toggleAdvancedOptions() {
|
|
78
|
+
if (this.showAdvancedOptions) {
|
|
79
|
+
this.showAdvancedOptions = false;
|
|
80
|
+
} else {
|
|
81
|
+
this.showAdvancedOptions = true;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
@action onSelectVendorType(selectedVendorType) {
|
|
86
|
+
this.selectedVendorType = selectedVendorType;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
@action onSelectIntegratedVendor(integratedVendor) {
|
|
90
|
+
this.selectedIntegratedVendor = integratedVendor;
|
|
91
|
+
const { credential_params, option_params } = integratedVendor;
|
|
92
|
+
|
|
93
|
+
// create credentials object
|
|
94
|
+
const credentials = {};
|
|
95
|
+
if (isArray(integratedVendor.credential_params)) {
|
|
96
|
+
for (let i = 0; i < integratedVendor.credential_params.length; i++) {
|
|
97
|
+
const param = integratedVendor.credential_params.objectAt(i);
|
|
98
|
+
credentials[param] = null;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// create options object
|
|
103
|
+
const options = {};
|
|
104
|
+
if (isArray(integratedVendor.option_params)) {
|
|
105
|
+
for (let i = 0; i < integratedVendor.option_params.length; i++) {
|
|
106
|
+
const param = integratedVendor.option_params.objectAt(i);
|
|
107
|
+
options[param.key] = null;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
const vendor = this.store.createRecord('integrated-vendor', {
|
|
112
|
+
provider: integratedVendor.code,
|
|
113
|
+
webhook_url: apiUrl(`listeners/${integratedVendor.code}`),
|
|
114
|
+
credentials: {},
|
|
115
|
+
options: {},
|
|
116
|
+
credential_params,
|
|
117
|
+
option_params,
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
this.vendor = vendor;
|
|
121
|
+
|
|
122
|
+
// trigger callback
|
|
123
|
+
contextComponentCallback(this, 'onVendorChanged', vendor);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
@action selectVendorAddress(place) {
|
|
127
|
+
this.vendor.place = place;
|
|
128
|
+
this.vendor.place_uuid = place.id;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
@action async editAddress() {
|
|
132
|
+
let place;
|
|
133
|
+
|
|
134
|
+
if (this.vendor.has_place) {
|
|
135
|
+
place = await this.vendor.place;
|
|
136
|
+
} else {
|
|
137
|
+
place = this.store.createRecord('place');
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
return this.contextPanel.focus(place, 'editing', {
|
|
141
|
+
onAfterSave: (place) => {
|
|
142
|
+
this.vendor.place = place;
|
|
143
|
+
this.contextPanel.clear();
|
|
144
|
+
},
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Fetches the supported integrated vendors.
|
|
150
|
+
*
|
|
151
|
+
* @returns {Promise}
|
|
152
|
+
*/
|
|
153
|
+
fetchSupportedIntegratedVendors() {
|
|
154
|
+
return this.fetch.get('integrated-vendors/supported').then((supportedIntegratedVendors) => {
|
|
155
|
+
this.supportedIntegratedVendors = supportedIntegratedVendors;
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
<div class="space-y-4">
|
|
2
|
+
{{#if this.isIntegratedVendor}}
|
|
3
|
+
<ContentPanel @title="Provider" @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
|
|
4
|
+
<div class="flex flex-row items-center">
|
|
5
|
+
<img src={{this.vendor.provider_settings.logo}} alt={{this.vendor.provider_settings.code}} class="w-12 h-12" width="48" height="48" />
|
|
6
|
+
<h3 class="text-base text-black dark:text-white ml-4">{{this.vendor.provider_settings.name}}</h3>
|
|
7
|
+
</div>
|
|
8
|
+
</ContentPanel>
|
|
9
|
+
<ContentPanel @title="Credentials" @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
|
|
10
|
+
{{#if this.isEditingCredentials}}
|
|
11
|
+
{{#each this.vendor.provider_settings.credential_params as |param|}}
|
|
12
|
+
<InputGroup @name={{smart-humanize param.key}} @value={{mut (get this.vendor.credentials param.key)}} @helpText={{concat "Optionally supply your own " (smart-humanize param.key) " to configure this vendor."}} />
|
|
13
|
+
{{/each}}
|
|
14
|
+
<div class="mt-4">
|
|
15
|
+
<a href="javascript:;" class="text-red-600 underline text-sm" {{on "click" this.toggleCredentialsReset}}>Cancel credentials reset</a>
|
|
16
|
+
</div>
|
|
17
|
+
{{else}}
|
|
18
|
+
<div class="rounded-md border shadow-sm border-gray-200 text-black bg-white dark:border-gray-700 dark:bg-gray-900 dark:text-white text-xs px-3 py-2 mb-4 mt-2">
|
|
19
|
+
<p class="mb-2">Sensitive credentials can only be reset, to update credentials you must re-enter the credentials.</p>
|
|
20
|
+
<a href="javascript:;" class="text-red-600 underline text-sm" {{on "click" this.toggleCredentialsReset}}>Click here to reset credentials</a>
|
|
21
|
+
</div>
|
|
22
|
+
<div>
|
|
23
|
+
{{#each this.vendor.provider_settings.credential_params as |param|}}
|
|
24
|
+
<InputGroup @name={{smart-humanize param.key}} @value="*********" @disabled="true" @helpText={{concat "Optionally supply your own " (smart-humanize param.key) " to configure this vendor."}} />
|
|
25
|
+
{{/each}}
|
|
26
|
+
</div>
|
|
27
|
+
{{/if}}
|
|
28
|
+
</ContentPanel>
|
|
29
|
+
<ContentPanel @title="Options" @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
|
|
30
|
+
{{#each this.vendor.provider_settings.option_params as |param|}}
|
|
31
|
+
{{#if param.options}}
|
|
32
|
+
<InputGroup @name={{smart-humanize param.key}}>
|
|
33
|
+
<Select @value={{mut (get this.vendor.options param.key)}} @options={{param.options}} @optionValue={{param.optionValue}} @optionLabel={{param.optionLabel}} @humanize={{true}} @placeholder={{concat "Select " (smart-humanize param.key)}} @onSelect={{fn (mut (get this.vendor.options param.key))}} />
|
|
34
|
+
</InputGroup>
|
|
35
|
+
{{else}}
|
|
36
|
+
<InputGroup @name={{smart-humanize param.key}} @value={{mut (get this.vendor.options param.key)}} @helpText={{concat "Optionally supply your own " (smart-humanize param.key) " to configure this vendor."}} />
|
|
37
|
+
{{/if}}
|
|
38
|
+
{{/each}}
|
|
39
|
+
<InputGroup>
|
|
40
|
+
<Checkbox @value={{this.vendor.sandbox}} @label="Sandbox" @onToggle={{fn (mut this.vendor.sandbox)}} @alignItems="center" @labelClass="mb-0i" />
|
|
41
|
+
</InputGroup>
|
|
42
|
+
</ContentPanel>
|
|
43
|
+
<ContentPanel @title="Advanced Options" @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
|
|
44
|
+
<div>
|
|
45
|
+
<a href="javascript:;" class="text-blue-600 underline text-sm" {{on "click" this.toggleAdvancedOptions}}>{{if
|
|
46
|
+
this.showAdvancedOptions
|
|
47
|
+
"Hide Advanced Options"
|
|
48
|
+
"Show Advanced Options"
|
|
49
|
+
}}</a>
|
|
50
|
+
</div>
|
|
51
|
+
{{#if this.showAdvancedOptions}}
|
|
52
|
+
<div class="mt-4">
|
|
53
|
+
<InputGroup @name="Custom Host" @value={{this.vendor.host}} @helpText="Optionally provide a custom host that should be used for this integration." />
|
|
54
|
+
<InputGroup @name="Custom Namespace" @value={{this.vendor.namespace}} @helpText="Optionally provide a custom namespace or api version that should be used for the integration." />
|
|
55
|
+
<InputGroup @name="Webhook URL" @value={{this.vendor.webhook_url}} @helpText="Integrated vendors will typically require this so that Fleetbase can receive activity updates on the order. Do not change unless you know what you are doing! Changing this may break your order updates!" />
|
|
56
|
+
</div>
|
|
57
|
+
{{/if}}
|
|
58
|
+
</ContentPanel>
|
|
59
|
+
{{else}}
|
|
60
|
+
<InputGroup @name="Name" @value={{this.vendor.name}} @helpText="The vendor's name, typically the name of a business." />
|
|
61
|
+
<InputGroup @name="Email" @type="email" @value={{this.vendor.email}} @helpText="The vendor's email, this can be used to trigger emails to the vendor." />
|
|
62
|
+
<InputGroup @name="Phone" @type="tel" @value={{this.vendor.phone}} @helpText="The vendor's phone #, this can be used to trigger SMS or messages to the vendor." />
|
|
63
|
+
<InputGroup @name="Website" @value={{this.vendor.website}} @helpText="The vendor's website, optionally add the vendors website for reference." />
|
|
64
|
+
<InputGroup @name="Type">
|
|
65
|
+
<div class="fleetbase-model-select fleetbase-power-select ember-model-select">
|
|
66
|
+
<PowerSelect @options={{@vendorTypes}} @selected={{this.vendor.type}} @onChange={{fn (mut this.vendor.type)}} @placeholder="Select vendor type" @triggerClass="form-select form-input" as |type|>
|
|
67
|
+
{{smart-humanize type}}
|
|
68
|
+
</PowerSelect>
|
|
69
|
+
</div>
|
|
70
|
+
</InputGroup>
|
|
71
|
+
<InputGroup @name="Status">
|
|
72
|
+
<div class="fleetbase-model-select fleetbase-power-select ember-model-select">
|
|
73
|
+
<PowerSelect @options={{@vendorStatusOptions}} @selected={{this.vendor.status}} @onChange={{fn (mut this.vendor.status)}} @placeholder="Select vendor status" @triggerClass="form-select form-input" as |status|>
|
|
74
|
+
{{smart-humanize status}}
|
|
75
|
+
</PowerSelect>
|
|
76
|
+
</div>
|
|
77
|
+
</InputGroup>
|
|
78
|
+
<InputGroup @wrapperClass="col-span-2">
|
|
79
|
+
<div class="flex items-center justify-between">
|
|
80
|
+
<label>
|
|
81
|
+
Address
|
|
82
|
+
</label>
|
|
83
|
+
<div class="mb-1.5 flex flex-row">
|
|
84
|
+
<Button @type="default" @size="xs" @icon="edit" @text={{if this.vendor.has_place "Edit" "New Address"}} @onClick={{this.editAddress}} />
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
<ModelSelect @modelName="place" @selectedModel={{this.vendor.place}} @placeholder="Select Address" @triggerClass="form-select form-input" @infiniteScroll={{false}} @renderInPlace={{true}} @onChange={{this.selectVendorAddress}} as |model|>
|
|
88
|
+
<div class="flex items-center flex-row justify-between">
|
|
89
|
+
<div class="truncate flex-1">{{n-a model.address}}</div>
|
|
90
|
+
<Badge @hideStatusDot={{true}} @status="info">{{model.public_id}}</Badge>
|
|
91
|
+
</div>
|
|
92
|
+
</ModelSelect>
|
|
93
|
+
</InputGroup>
|
|
94
|
+
<InputGroup @name="Country">
|
|
95
|
+
<CountrySelect class="w-full form-input form-select form-datalist" @value={{this.vendor.country}} @onChange={{fn (mut this.vendor.country)}} placeholder="Country" />
|
|
96
|
+
</InputGroup>
|
|
97
|
+
{{/if}}
|
|
98
|
+
</div>
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import Component from '@glimmer/component';
|
|
2
|
+
import { tracked } from '@glimmer/tracking';
|
|
3
|
+
import { inject as service } from '@ember/service';
|
|
4
|
+
import { action } from '@ember/object';
|
|
5
|
+
|
|
6
|
+
export default class VendorFormPanelEditFormComponent extends Component {
|
|
7
|
+
@service store;
|
|
8
|
+
@service contextPanel;
|
|
9
|
+
@tracked isIntegratedVendor;
|
|
10
|
+
@tracked isEditingCredentials = false;
|
|
11
|
+
@tracked showAdvancedOptions = false;
|
|
12
|
+
|
|
13
|
+
constructor() {
|
|
14
|
+
super(...arguments);
|
|
15
|
+
this.vendor = this.args.vendor;
|
|
16
|
+
this.isIntegratedVendor = this.vendor && this.vendor.type === 'integrated-vendor';
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
@action toggleCredentialsReset() {
|
|
20
|
+
if (this.isEditingCredentials) {
|
|
21
|
+
this.isEditingCredentials = false;
|
|
22
|
+
} else {
|
|
23
|
+
this.isEditingCredentials = true;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
@action toggleAdvancedOptions() {
|
|
28
|
+
if (this.showAdvancedOptions) {
|
|
29
|
+
this.showAdvancedOptions = false;
|
|
30
|
+
} else {
|
|
31
|
+
this.showAdvancedOptions = true;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@action selectVendorAddress(place) {
|
|
36
|
+
this.vendor.place = place;
|
|
37
|
+
this.vendor.place_uuid = place.id;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
@action async editAddress() {
|
|
41
|
+
let place;
|
|
42
|
+
|
|
43
|
+
if (this.vendor.has_place) {
|
|
44
|
+
place = await this.vendor.place;
|
|
45
|
+
} else {
|
|
46
|
+
place = this.store.createRecord('place');
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return this.contextPanel.focus(place);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<Overlay @onLoad={{this.setOverlayContext}} @position="right" @noBackdrop={{true}} @fullHeight={{true}} @isResizeble={{or this.isResizable @isResizable}} @width={{or this.width @width "600px"}}>
|
|
2
|
+
<Overlay::Header @hideLeftSection={{true}} @actionsWrapperClass="flex-1 flex-col py-3" class="h-auto-i">
|
|
3
|
+
<div class="flex flex-row justify-between w-full">
|
|
4
|
+
<div class="flex flex-1 flex-row">
|
|
5
|
+
<div class="w-14">
|
|
6
|
+
<div class="upload-avatar-overlay w-12 h-12 flex items-center justify-start rounded-lg">
|
|
7
|
+
<img src={{this.vendor.logo_url}} alt={{this.vendor.name}} height="48" width="48" class="h-12 w-12 rounded-lg shadow-sm" />
|
|
8
|
+
<Attach::Tooltip @class="clean" @animation="scale" @placement="top">
|
|
9
|
+
<InputInfo @text="Upload new photo" />
|
|
10
|
+
</Attach::Tooltip>
|
|
11
|
+
<div class="upload-avatar-button-wrapper rounded-lg">
|
|
12
|
+
<UploadButton @name="photos" @accept="image/*" @onFileAdded={{this.onUploadNewPhoto}} @icon="upload" @hideButtonText={{true}} @labelClass="upload-avatar-label-overlay" class="w-12 btn-reset" />
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|
|
15
|
+
</div>
|
|
16
|
+
<div class="flex flex-col">
|
|
17
|
+
<h1 class="text-gray-900 dark:text-white text-2xl">
|
|
18
|
+
{{#if this.vendor.id}}
|
|
19
|
+
{{this.vendor.name}}
|
|
20
|
+
{{else}}
|
|
21
|
+
<span>New Vendor</span>
|
|
22
|
+
{{/if}}
|
|
23
|
+
</h1>
|
|
24
|
+
<div class="-mt-1">
|
|
25
|
+
<div class="flex flex-row items-center">
|
|
26
|
+
<span class="text-sm dark:text-gray-500 text-gray-700 mr-3">{{n-a (smart-humanize this.vendor.type)}}</span>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
</div>
|
|
31
|
+
<div>
|
|
32
|
+
<Button @icon={{if this.vendor.id "save" "check"}} @type="primary" @text={{if this.vendor.id "Save Vendor" "Create Vendor"}} @onClick={{this.save}} @wrapperClass="mr-2" />
|
|
33
|
+
{{#if this.vendor.id}}
|
|
34
|
+
<Button @type="default" @icon="id-card" @helpText="View fleet details" @onClick={{this.onViewDetails}} @wrapperClass="mr-2" />
|
|
35
|
+
{{/if}}
|
|
36
|
+
<Button @type="default" @icon="times" @helpText={{if this.vendor.id "Cancel edit vendor" "Cancel new vendor"}} @onClick={{this.onPressCancel}} />
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
</Overlay::Header>
|
|
40
|
+
|
|
41
|
+
<Overlay::Body @wrapperClass="new-service-rate-overlay-body px-4 space-y-4 pt-4" @increaseInnerBodyHeightBy={{1000}}>
|
|
42
|
+
{{#if this.isEditing}}
|
|
43
|
+
<VendorFormPanel::EditForm @vendor={{this.vendor}} @vendorTypes={{this.vendorTypeOptions}} @vendorStatusOptions={{this.vendorStatusOptions}} @onVendorChanged={{this.onVendorChanged}} />
|
|
44
|
+
{{else}}
|
|
45
|
+
<VendorFormPanel::CreateForm @vendor={{this.vendor}} @vendorTypes={{this.vendorTypeOptions}} @vendorStatusOptions={{this.vendorStatusOptions}} @onVendorChanged={{this.onVendorChanged}} />
|
|
46
|
+
{{/if}}
|
|
47
|
+
</Overlay::Body>
|
|
48
|
+
</Overlay>
|