@fleetbase/storefront-engine 0.2.6 → 0.2.8

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 (73) hide show
  1. package/addon/components/file-record.hbs +9 -2
  2. package/addon/components/file-record.js +3 -2
  3. package/addon/components/modals/add-store-hours.hbs +12 -2
  4. package/addon/components/modals/assign-driver.hbs +18 -5
  5. package/addon/components/modals/create-first-store.hbs +18 -6
  6. package/addon/components/modals/create-gateway.hbs +19 -7
  7. package/addon/components/modals/create-network-category.hbs +23 -5
  8. package/addon/components/modals/create-network.hbs +15 -7
  9. package/addon/components/modals/create-new-variant.hbs +20 -4
  10. package/addon/components/modals/create-notification-channel.hbs +22 -17
  11. package/addon/components/modals/create-product-category.hbs +22 -7
  12. package/addon/components/modals/create-store.hbs +11 -3
  13. package/addon/components/modals/import-products.hbs +34 -15
  14. package/addon/components/modals/incoming-order.hbs +29 -19
  15. package/addon/components/modals/manage-addons.hbs +50 -9
  16. package/addon/components/modals/manage-addons.js +3 -2
  17. package/addon/components/modals/order-ready-assign-driver.hbs +24 -13
  18. package/addon/components/modals/select-addon-category.hbs +8 -1
  19. package/addon/components/modals/share-network.hbs +23 -8
  20. package/addon/components/modals/store-details.hbs +4 -4
  21. package/addon/components/modals/store-form.hbs +24 -5
  22. package/addon/components/modals/store-location-form.hbs +26 -16
  23. package/addon/components/network-category-picker.hbs +17 -6
  24. package/addon/components/schedule-manager.hbs +8 -1
  25. package/addon/components/schedule-manager.js +6 -5
  26. package/addon/components/store-selector.hbs +14 -3
  27. package/addon/components/widget/customers.hbs +16 -7
  28. package/addon/components/widget/customers.js +2 -1
  29. package/addon/components/widget/orders.hbs +58 -23
  30. package/addon/components/widget/orders.js +17 -16
  31. package/addon/components/widget/storefront-metrics.hbs +5 -5
  32. package/addon/controllers/customers/index.js +21 -13
  33. package/addon/controllers/networks/index/network/index.js +16 -9
  34. package/addon/controllers/networks/index/network/stores.js +39 -31
  35. package/addon/controllers/networks/index/network.js +3 -2
  36. package/addon/controllers/networks/index.js +10 -3
  37. package/addon/controllers/orders/index.js +30 -23
  38. package/addon/controllers/products/index/category/edit.js +5 -3
  39. package/addon/controllers/products/index/category/new.js +10 -9
  40. package/addon/controllers/products/index/category.js +8 -7
  41. package/addon/controllers/products/index/index.js +9 -2
  42. package/addon/controllers/products/index.js +9 -8
  43. package/addon/controllers/settings/gateways.js +7 -6
  44. package/addon/controllers/settings/index.js +1 -0
  45. package/addon/controllers/settings/locations.js +18 -11
  46. package/addon/controllers/settings/notifications.js +8 -7
  47. package/addon/services/storefront.js +13 -7
  48. package/addon/templates/application.hbs +8 -8
  49. package/addon/templates/customers/index/edit.hbs +0 -1
  50. package/addon/templates/customers/index.hbs +23 -4
  51. package/addon/templates/home.hbs +1 -1
  52. package/addon/templates/networks/index/network/customers.hbs +0 -1
  53. package/addon/templates/networks/index/network/index.hbs +200 -62
  54. package/addon/templates/networks/index/network/orders.hbs +0 -1
  55. package/addon/templates/networks/index/network/stores.hbs +18 -3
  56. package/addon/templates/networks/index/network.hbs +5 -5
  57. package/addon/templates/networks/index.hbs +12 -7
  58. package/addon/templates/orders/index/edit.hbs +0 -1
  59. package/addon/templates/orders/index/new.hbs +0 -1
  60. package/addon/templates/orders/index/view.hbs +0 -1
  61. package/addon/templates/orders/index.hbs +25 -6
  62. package/addon/templates/products/index/category/new.hbs +65 -12
  63. package/addon/templates/products/index.hbs +27 -6
  64. package/addon/templates/settings/api.hbs +3 -3
  65. package/addon/templates/settings/gateways.hbs +10 -10
  66. package/addon/templates/settings/index.hbs +146 -51
  67. package/addon/templates/settings/locations.hbs +13 -6
  68. package/addon/templates/settings/notifications.hbs +5 -7
  69. package/addon/templates/settings.hbs +6 -6
  70. package/composer.json +3 -3
  71. package/extension.json +1 -1
  72. package/package.json +134 -132
  73. package/translations/en-us.yaml +574 -1
@@ -12,7 +12,7 @@
12
12
  </div>
13
13
  <div class="w-full my-2">
14
14
  <div class="flex px-6 py-4 border-t border-b border-gray-100 dark:border-gray-800">
15
- <h5 class="dark:text-gray-100 font-semibold">Store</h5>
15
+ <h5 class="dark:text-gray-100 font-semibold">{{t "storefront.common.store"}}</h5>
16
16
  </div>
17
17
  <div class="flex items-start px-6 py-2">
18
18
  <img src={{@options.store.logo_url}} class="w-12 h-12 rounded-md shadow-sm mr-4" alt={{@options.store.name}} />
@@ -24,7 +24,7 @@
24
24
  </div>
25
25
  <div class="w-full my-2">
26
26
  <div class="flex px-6 py-4 border-t border-b border-gray-100 dark:border-gray-800">
27
- <h5 class="dark:text-gray-100 font-semibold">Driver Assigned</h5>
27
+ <h5 class="dark:text-gray-100 font-semibold">{{t "storefront.component.modals.incoming-order.assigned"}}</h5>
28
28
  </div>
29
29
  <div class="flex flex-col px-6 py-2">
30
30
  {{#if @options.order.driver_assigned.id}}
@@ -32,15 +32,25 @@
32
32
  <img src={{@options.order.driver_assigned.photoUrl}} class="w-12 h-12 rounded-md shadow-sm mr-4" alt={{@options.order.driver_assigned.name}} />
33
33
  <div>
34
34
  <h5 class="font-semibold dark:text-white text-base">{{n-a @options.order.driver_assigned.displayName}}</h5>
35
- <div class="font-semibold dark:text-gray-100 text-sm">{{n-a @options.order.driver_assigned.phone "No phone"}}</div>
35
+ <div class="font-semibold dark:text-gray-100 text-sm">{{n-a @options.order.driver_assigned.phone (t "storefront.component.modals.incoming-order.no-phone")}}</div>
36
36
  </div>
37
37
  </div>
38
38
  {{else}}
39
- <h5 class="text-red-500 text-sm">No driver assigned</h5>
39
+ <h5 class="text-red-500 text-sm">{{t "storefront.component.modals.incoming-order.not-assigned"}}</h5>
40
40
  {{/if}}
41
41
  {{#if @options.assignDriver}}
42
42
  <div class="mt-2.5">
43
- <Button @size="xs" @type="default" @icon="steering-wheel" @text={{if @options.order.has_driver_assigned "Change Driver" "Assign Driver"}} @onClick={{@options.assignDriver}} />
43
+ <Button
44
+ @size="xs"
45
+ @type="default"
46
+ @icon="steering-wheel"
47
+ @text={{if
48
+ @options.order.has_driver_assigned
49
+ (t "storefront.component.modals.incoming-order.change-driver")
50
+ (t "storefront.component.modals.incoming-order.assign-driver")
51
+ }}
52
+ @onClick={{@options.assignDriver}}
53
+ />
44
54
  </div>
45
55
  {{/if}}
46
56
  </div>
@@ -49,9 +59,9 @@
49
59
  <div class="flex px-6 py-4 border-t border-b border-gray-100 dark:border-gray-800">
50
60
  <div class="flex-1">
51
61
  {{#if @options.order.meta.is_pickup}}
52
- <h5 class="dark:text-gray-100 font-semibold">Pickup</h5>
62
+ <h5 class="dark:text-gray-100 font-semibold">{{t "storefront.common.pickup"}}</h5>
53
63
  {{else}}
54
- <h5 class="dark:text-gray-100 font-semibold">Delivery</h5>
64
+ <h5 class="dark:text-gray-100 font-semibold">{{t "storefront.common.delivery"}}</h5>
55
65
  {{/if}}
56
66
  </div>
57
67
  </div>
@@ -61,7 +71,7 @@
61
71
  <div class="flex-1">
62
72
  <div class="rounded-md bg-blue-50 mr-4">
63
73
  <div class="rounded-t-md bg-blue-100 px-3 py-2 mb-3">
64
- <span class="text-blue-500 font-semibold text-sm truncate">Customer must pickup order from</span>
74
+ <span class="text-blue-500 font-semibold text-sm truncate">{{t "storefront.component.modals.incoming-order.pickup-order"}}</span>
65
75
  </div>
66
76
  <div class="flex flex-row items-center mb-4 pb-4 px-3">
67
77
  <div class="flex items-center justify-center rounded-full bg-blue-500 w-8 h-8 mr-3">
@@ -104,8 +114,8 @@
104
114
  </div>
105
115
  <div class="w-full my-2 flex flex-col">
106
116
  <div class="flex px-6 py-4 border-t border-b border-gray-100 dark:border-gray-800">
107
- <div class="flex-1 ">
108
- <h5 class="dark:text-gray-100 font-semibold">Customer</h5>
117
+ <div class="flex-1">
118
+ <h5 class="dark:text-gray-100 font-semibold">{{t "storefront.common.customer"}}</h5>
109
119
  </div>
110
120
  </div>
111
121
  <div class="py-2 px-6">
@@ -124,7 +134,7 @@
124
134
  {{#unless @options.order.meta.is_pickup}}
125
135
  <div class="rounded-md bg-blue-50">
126
136
  <div class="rounded-t-md bg-blue-100 px-3 py-2 mb-3">
127
- <span class="text-blue-500 font-semibold text-sm truncate">Customer address</span>
137
+ <span class="text-blue-500 font-semibold text-sm truncate">{{t "storefront.component.modals.incoming-order.address"}}</span>
128
138
  </div>
129
139
  <div class="flex flex-row items-center mb-4 pb-4 px-3">
130
140
  <div class="flex items-center justify-center rounded-full bg-blue-500 w-8 h-8 mr-3">
@@ -141,7 +151,7 @@
141
151
  <div class="w-full my-2 flex flex-col">
142
152
  <div class="flex px-6 py-4 border-t border-b border-gray-100 dark:border-gray-800">
143
153
  <div class="flex-1 flex-row justify-between items-center">
144
- <h5 class="dark:text-gray-100 font-semibold">Tracking</h5>
154
+ <h5 class="dark:text-gray-100 font-semibold">{{t "storefront.component.modals.incoming-order.tracking"}}</h5>
145
155
  <h5 class="dark:text-gray-100 font-semibold">({{@options.order.tracking}})</h5>
146
156
  </div>
147
157
  </div>
@@ -159,12 +169,12 @@
159
169
  <div class="w-full my-2">
160
170
  <div class="flex items-center justify-between px-6 py-4 border-t border-b border-gray-100 dark:border-gray-800">
161
171
  <div>
162
- <h5 class="dark:text-gray-100 font-semibold">Order Summary</h5>
172
+ <h5 class="dark:text-gray-100 font-semibold">{{t "storefront.component.modals.incoming-order.summary"}}</h5>
163
173
  </div>
164
174
  {{#if @options.order.payload.cod_amount}}
165
175
  <div>
166
176
  <FaIcon @icon="money-bill-wave" @size="sm" class="text-green-400 mr-1" />
167
- <span class="font-semibold text-green-400 text-sm">Cash</span>
177
+ <span class="font-semibold text-green-400 text-sm">{{t "storefront.common.cash"}}</span>
168
178
  </div>
169
179
  {{/if}}
170
180
  </div>
@@ -209,31 +219,31 @@
209
219
  </div>
210
220
  <div class="px-6 py-2.5 space-y-2 border-t border-b border-gray-100 dark:border-gray-800">
211
221
  <div class="flex items-center justify-between">
212
- <span class="dark:text-gray-50 text-sm">Subtotal</span>
222
+ <span class="dark:text-gray-50 text-sm">{{t "storefront.component.modals.incoming-order.subtotal"}}</span>
213
223
  <span class="dark:text-gray-50 text-sm">{{format-currency @options.order.meta.subtotal @options.order.meta.currency}}</span>
214
224
  </div>
215
225
  {{#unless @options.order.meta.is_pickup}}
216
226
  <div class="flex items-center justify-between">
217
- <span class="dark:text-gray-50 text-sm">Delivery fee</span>
227
+ <span class="dark:text-gray-50 text-sm">{{t "storefront.component.modals.incoming-order.fee"}}</span>
218
228
  <span class="dark:text-gray-50 text-sm">{{format-currency @options.order.meta.delivery_fee @options.order.meta.currency}}</span>
219
229
  </div>
220
230
  {{/unless}}
221
231
  {{#if @options.order.meta.tip}}
222
232
  <div class="flex items-center justify-between">
223
- <span class="dark:text-gray-50 text-sm">Tip</span>
233
+ <span class="dark:text-gray-50 text-sm">{{t "storefront.component.modals.incoming-order.tip"}}</span>
224
234
  <span class="dark:text-gray-50 text-sm">{{get-tip-amount @options.order.meta.tip @options.order.meta.subtotal @options.order.meta.currency}}</span>
225
235
  </div>
226
236
  {{/if}}
227
237
  {{#if @options.order.meta.delivery_tip}}
228
238
  <div class="flex items-center justify-between">
229
- <span class="dark:text-gray-50 text-sm">Delivery Tip</span>
239
+ <span class="dark:text-gray-50 text-sm">{{t "storefront.component.modals.incoming-order.delivery-tip"}}</span>
230
240
  <span class="dark:text-gray-50 text-sm">{{get-tip-amount @options.order.meta.delivery_tip @options.order.meta.subtotal @options.order.meta.currency}}</span>
231
241
  </div>
232
242
  {{/if}}
233
243
  </div>
234
244
  <div class="px-6 py-2">
235
245
  <div class="flex items-center justify-between">
236
- <span class="dark:text-gray-50 font-bold text-sm">Total</span>
246
+ <span class="dark:text-gray-50 font-bold text-sm">{{t "storefront.common.total"}}</span>
237
247
  <span class="dark:text-gray-50 font-bold text-sm">{{format-currency @options.order.meta.total @options.order.meta.currency}}</span>
238
248
  </div>
239
249
  </div>
@@ -1,4 +1,4 @@
1
- <Modal::Default @onOpen={{fn this.fetchCategories @options.store}} @modalIsOpened={{@modalIsOpened}} @options={{@options}} @confirm={{@onConfirm}} @decline={{@onDecline}}>
1
+ s<Modal::Default @onOpen={{fn this.fetchCategories @options.store}} @modalIsOpened={{@modalIsOpened}} @options={{@options}} @confirm={{@onConfirm}} @decline={{@onDecline}}>
2
2
  <div class="modal-body-container">
3
3
  <div class="flex items-center justify-between mb-4">
4
4
  <div>
@@ -7,7 +7,14 @@
7
7
  {{/if}}
8
8
  </div>
9
9
  <div>
10
- <Button @type="magic" @text="New Category" @icon="plus" @iconPrefix="fas" @onClick={{fn this.createCategory @options.store}} @disabled={{this.isLoading}} />
10
+ <Button
11
+ @type="magic"
12
+ @text={{t "storefront.component.modals.manage-addons.title"}}
13
+ @icon="plus"
14
+ @iconPrefix="fas"
15
+ @onClick={{fn this.createCategory @options.store}}
16
+ @disabled={{this.isLoading}}
17
+ />
11
18
  </div>
12
19
  </div>
13
20
 
@@ -17,11 +24,24 @@
17
24
  <div class="flex items-center rounded-md shadow-sm px-3 py-2 font-semibold bg-gray-200 dark:bg-gray-800 dark:text-gray-100 mb-2">
18
25
  <div class="flex-1 flex items-center">
19
26
  <FaIcon @icon="pencil" class="mr-1 dark:text-gray-100" />
20
- <Input @type="text" @value={{category.name}} {{on "blur" (fn this.saveCategory category)}} class="w-full px-2 m-0 border-none bg-transparent dark:text-gray-100" />
27
+ <Input
28
+ @type="text"
29
+ @value={{category.name}}
30
+ {{on "blur" (fn this.saveCategory category)}}
31
+ class="w-full px-2 m-0 border-none bg-transparent dark:text-gray-100"
32
+ />
21
33
  </div>
22
34
  <div class="flex items-center">
23
- <Button @text="New Addon" @icon="plus" @iconPrefix="fas" @onClick={{fn this.insertNewAddon category}} class="mr-3" />
24
- <a href="javascript:;" {{on "click" (fn this.deleteCategory index)}} class="destroy-action opacity-50 hover:opacity-100 text-sm">Delete Category</a>
35
+ <Button
36
+ @text={{t "storefront.component.modals.manage-addons.new-addon"}}
37
+ @icon="plus"
38
+ @iconPrefix="fas"
39
+ @onClick={{fn this.insertNewAddon category}}
40
+ class="mr-3"
41
+ />
42
+ <a href="javascript:;" {{on "click" (fn this.deleteCategory index)}} class="destroy-action opacity-50 hover:opacity-100 text-sm">{{t
43
+ "storefront.component.modals.manage-addons.delete"
44
+ }}</a>
25
45
  </div>
26
46
  </div>
27
47
  <div class="space-y-2 mb-2">
@@ -29,16 +49,37 @@
29
49
  <div class="grid grid-cols-10 gap-1 px-3 py-2 rounded-md dark:bg-gray-900 bg-gray-200">
30
50
  <div class="col-span-3 flex items-center">
31
51
  <FaIcon @icon="tag" class="text-sky-400 mr-2" />
32
- <Input @type="text" @value={{addon.name}} {{on "blur" (fn this.saveAddon addon)}} class="form-input flex-1 w-full" placeholder="Addon Name" />
52
+ <Input
53
+ @type="text"
54
+ @value={{addon.name}}
55
+ {{on "blur" (fn this.saveAddon addon)}}
56
+ class="form-input flex-1 w-full"
57
+ placeholder={{t "storefront.component.modals.manage-addons.addon-name"}}
58
+ />
33
59
  </div>
34
60
  <div class="col-span-4">
35
- <Input @type="text" @value={{addon.description}} {{on "blur" (fn this.saveAddon addon)}} class="form-input w-full" placeholder="Addon Description" />
61
+ <Input
62
+ @type="text"
63
+ @value={{addon.description}}
64
+ {{on "blur" (fn this.saveAddon addon)}}
65
+ class="form-input w-full"
66
+ placeholder={{t "storefront.component.modals.manage-addons.description"}}
67
+ />
36
68
  </div>
37
69
  <div class="col-span-2">
38
- <MoneyInput class="w-full" @currency={{this.activeStore.currency}} @canSelectCurrency={{false}} @value={{addon.price}} @onFormatCompleted={{fn this.saveAddon addon}} @disabled={{this.isLoading}} />
70
+ <MoneyInput
71
+ class="w-full"
72
+ @currency={{this.activeStore.currency}}
73
+ @canSelectCurrency={{false}}
74
+ @value={{addon.price}}
75
+ @onFormatCompleted={{fn this.saveAddon addon}}
76
+ @disabled={{this.isLoading}}
77
+ />
39
78
  </div>
40
79
  <div class="flex items-center justify-center text-center text-sm">
41
- <a href="javascript:;" class="destroy-action opacity-50 hover:opacity-100" {{on "click" (fn this.removeAddon category i)}}>Remove</a>
80
+ <a href="javascript:;" class="destroy-action opacity-50 hover:opacity-100" {{on "click" (fn this.removeAddon category i)}}>{{t
81
+ "storefront.common.remove"
82
+ }}</a>
42
83
  </div>
43
84
  </div>
44
85
  {{/each}}
@@ -5,6 +5,7 @@ import { action } from '@ember/object';
5
5
 
6
6
  export default class ModalsManageAddonsComponent extends Component {
7
7
  @service store;
8
+ @service intl;
8
9
  @service currentUser;
9
10
  @service modalsManager;
10
11
  @tracked categories = [];
@@ -39,7 +40,7 @@ export default class ModalsManageAddonsComponent extends Component {
39
40
 
40
41
  @action deleteCategory(index) {
41
42
  const category = this.categories.objectAt(index);
42
- const result = confirm('Are you sure you wish to delete this addon category? All addons assosciated will be lost!');
43
+ const result = confirm(this.intl.t('storefront.component.modals.manage-addons.delete-this-addon-category-assosiated-will-lost'));
43
44
 
44
45
  if (result) {
45
46
  this.categories.removeAt(index);
@@ -54,7 +55,7 @@ export default class ModalsManageAddonsComponent extends Component {
54
55
 
55
56
  @action createCategory(store) {
56
57
  const category = this.store.createRecord('addon-category', {
57
- name: 'Untitled Addon Category',
58
+ name: this.intl.t('storefront.component.modals.manage-addons.untitled-addon-category'),
58
59
  for: 'storefront_product_addon',
59
60
  owner_type: 'storefront:store',
60
61
  owner_uuid: store.id,
@@ -1,31 +1,42 @@
1
1
  <Modal::Default @modalIsOpened={{@modalIsOpened}} @options={{@options}} @confirm={{@onConfirm}} @decline={{@onDecline}}>
2
2
  <div class="modal-body-container">
3
3
  <div class="sm:flex sm:items-start">
4
- <div
5
- class="flex items-center justify-center flex-shrink-0 w-12 h-12 mx-auto bg-red-100 rounded-full sm:mx-0 sm:h-10 sm:w-10">
4
+ <div class="flex items-center justify-center flex-shrink-0 w-12 h-12 mx-auto bg-red-100 rounded-full sm:mx-0 sm:h-10 sm:w-10">
6
5
  <svg class="w-6 h-6 text-red-600" fill="none" viewBox="0 0 24 24" stroke="currentColor">
7
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
8
- d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z">
6
+ <path
7
+ stroke-linecap="round"
8
+ stroke-linejoin="round"
9
+ stroke-width="2"
10
+ d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"
11
+ >
9
12
  </path>
10
13
  </svg>
11
14
  </div>
12
15
  <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left">
13
16
  <div class="mb-4">
14
17
  <p class="text-sm leading-5 text-gray-500 dark:text-white">
15
- You are about to set this order as ready and dispatch, use the dropdown below to select a driver
16
- to dispatch to. <br><br>Or optionally you can opt to dispatch order as adhoc which will ping the
17
- order to all nearby drivers to be accepted.
18
+ {{t "storefront.component.modals.order-ready-assign-driver.driver-dispatch" htmlSafe=true}}
18
19
  </p>
19
20
  </div>
20
21
  <div class="input-group">
21
- <ShortToggle @isToggled={{@options.adhoc}} @onToggle={{fn (mut @options.adhoc)}} @label="Adhoc dispatch to nearby drivers" />
22
+ <ShortToggle
23
+ @isToggled={{@options.adhoc}}
24
+ @onToggle={{fn (mut @options.adhoc)}}
25
+ @label={{t "storefront.component.modals.order-ready-assign-driver.adhoc-dispatch-nearby-drivers"}}
26
+ />
22
27
  </div>
23
28
  {{#unless @options.adhoc}}
24
- <InputGroup class="mt-4" @name="Select Driver">
25
- <ModelSelect @modelName="driver" @selectedModel={{@options.driver}}
26
- @placeholder="Select Driver to Assign" @triggerClass="form-select form-input"
27
- @infiniteScroll={{false}} @renderInPlace={{true}} @onChange={{fn (mut
28
- @options.driver)}} as |model|>
29
+ <InputGroup class="mt-4" @name={{t "storefront.component.modals.order-ready-assign-driver.select-driver"}}>
30
+ <ModelSelect
31
+ @modelName="driver"
32
+ @selectedModel={{@options.driver}}
33
+ @placeholder={{t "storefront.component.modals.order-ready-assign-driver.select-driver-to-assign"}}
34
+ @triggerClass="form-select form-input"
35
+ @infiniteScroll={{false}}
36
+ @renderInPlace={{true}}
37
+ @onChange={{fn (mut @options.driver)}}
38
+ as |model|
39
+ >
29
40
  {{model.name}}
30
41
  </ModelSelect>
31
42
  </InputGroup>
@@ -1,5 +1,12 @@
1
1
  <Modal::Default @modalIsOpened={{@modalIsOpened}} @options={{@options}} @confirm={{@onConfirm}} @decline={{@onDecline}}>
2
2
  <div class="modal-body-container">
3
- <ComboBox @options={{@options.addonCategories}} @selected={{@options.product.addon_categories}} @optionLabel="name" @comparator="name" @selectionBoxLabel="Selected" @onChange={{@options.updateProductAddonCategories}} />
3
+ <ComboBox
4
+ @options={{@options.addonCategories}}
5
+ @selected={{@options.product.addon_categories}}
6
+ @optionLabel="name"
7
+ @comparator="name"
8
+ @selectionBoxLabel="Selected"
9
+ @onChange={{@options.updateProductAddonCategories}}
10
+ />
4
11
  </div>
5
12
  </Modal::Default>
@@ -3,9 +3,9 @@
3
3
  <div class="flex flex-col items-center justify-center mb-2">
4
4
  <FaIcon @icon="mail-bulk" @size="4x" class="text-sky-400" />
5
5
  <div class="my-2 text-center">
6
- <h2 class="dark:text-gray-100 font-semibold">Invite members to your network</h2>
6
+ <h2 class="dark:text-gray-100 font-semibold">{{t "storefront.component.modals.share-network.invite-member"}}</h2>
7
7
  <p class="my-2 px-6">
8
- Grab a shareable invitiation link or send individual invites via email below.
8
+ {{t "storefront.component.modals.share-network.email-below"}}
9
9
  </p>
10
10
  </div>
11
11
  </div>
@@ -13,22 +13,37 @@
13
13
  <div class="rounded-md border dark:border-gray-800 dark:bg-gray-800 p-4 mb-5">
14
14
  <h4 class="dark:text-gray-50 font-semibold mb-2">Share with people and organizations</h4>
15
15
  <p class="mb-4 text-sm dark:text-gray-200">
16
- Enter the emails of people or organizations you want to send an invite to your network.
16
+ {{t "storefront.component.modals.share-network.invite-network"}}
17
17
  </p>
18
18
  <div>
19
- <TagInput class="form-input" @placeholder="Add emails" @tags={{@options.recipients}} @addTag={{@options.addRecipient}} @removeTagAtIndex={{@options.removeRecipient}} as |tag|>
19
+ <TagInput
20
+ class="form-input"
21
+ @placeholder={{t "storefront.component.modals.share-network.add-email"}}
22
+ @tags={{@options.recipients}}
23
+ @addTag={{@options.addRecipient}}
24
+ @removeTagAtIndex={{@options.removeRecipient}}
25
+ as |tag|
26
+ >
20
27
  {{tag}}
21
28
  </TagInput>
22
29
  </div>
23
30
  </div>
24
31
 
25
- <div class="rounded-md border dark:border-gray-800 dark:bg-gray-800 p-4">
26
- <h4 class="dark:text-gray-50 mb-4 font-semibold">Get link</h4>
32
+ <div class="rounded-md border dark:border-fgray-800 dark:bg-gray-800 p-4">
33
+ <h4 class="dark:text-gray-50 mb-4 font-semibold">{{t "storefront.component.modals.share-network.get-link"}}</h4>
27
34
  <div class="input-group mb-0i">
28
- <Toggle @isToggled={{@options.network.options.shareable_link_enabled}} @onToggle={{@options.toggleShareableLink}} @label="Enable shareable link" @helpText="Anyone with this link is able to join your network" />
35
+ <Toggle
36
+ @isToggled={{@options.network.options.shareable_link_enabled}}
37
+ @onToggle={{@options.toggleShareableLink}}
38
+ @label={{t "storefront.component.modals.share-network.enable-shareable-link"}}
39
+ @helpText={{t "storefront.component.modals.share-network.anyone-with-this-link-able-to-join-your-network"}}
40
+ />
29
41
  </div>
30
42
  {{#if @options.network.options.shareable_link_enabled}}
31
- <ClickToCopy class="mt-4 rounded-md border dark:border-gray-900 dark:bg-gray-900 truncate px-4 py-2.5 text-sm text-green-400 dark:text-green-300 text-center" @value={{@options.shareableLink}} />
43
+ <ClickToCopy
44
+ class="mt-4 rounded-md border dark:border-gray-900 dark:bg-gray-900 truncate px-4 py-2.5 text-sm text-green-400 dark:text-green-300 text-center"
45
+ @value={{@options.shareableLink}}
46
+ />
32
47
  {{/if}}
33
48
  </div>
34
49
  </div>
@@ -2,19 +2,19 @@
2
2
  <div class="modal-body-container">
3
3
  <div class="grid grid-cols-1 gap-2 lg:grid-cols-2 lg:gap-4 text-xs dark:text-gray-100">
4
4
  <div class="field-info-container">
5
- <div class="field-name">Name</div>
5
+ <div class="field-name">{{t "storefront.common.name"}}</div>
6
6
  <div class="field-value">{{n-a @options.store.name}}</div>
7
7
  </div>
8
8
  <div class="field-info-container">
9
- <div class="field-name">Description</div>
9
+ <div class="field-name">{{t "storefront.common.description"}}</div>
10
10
  <div class="field-value">{{n-a @options.store.description}}</div>
11
11
  </div>
12
12
  <div class="field-info-container">
13
- <div class="field-name">Tags</div>
13
+ <div class="field-name">{{t "storefront.common.tag"}}</div>
14
14
  <div class="field-value">{{n-a @options.store.tagsList}}</div>
15
15
  </div>
16
16
  <div class="field-info-container">
17
- <div class="field-name">Currency</div>
17
+ <div class="field-name">{{t "storefront.common.currency"}}</div>
18
18
  <div class="field-value">{{n-a @options.store.currency}}</div>
19
19
  </div>
20
20
  </div>
@@ -1,20 +1,39 @@
1
1
  <Modal::Default @modalIsOpened={{@modalIsOpened}} @options={{@options}} @confirm={{@onConfirm}} @decline={{@onDecline}}>
2
2
  <div class="modal-body-container">
3
- <InputGroup @id="storefront_name_input" @name="Name" @value={{@options.store.name}} @placeholder="Storefront Name" @helpText="The name of your store." />
4
- <InputGroup @name="Description" @value={{@options.store.description}} @placeholder="Storefront Description" @helpText="Give your store a brief description to let users know what you sell." />
3
+ <InputGroup
4
+ @id="storefront_name_input"
5
+ @name={{t "storefront.common.name"}}
6
+ @value={{@options.store.name}}
7
+ @placeholder={{t "storefront.component.modals.store-form.storefront-name"}}
8
+ @helpText={{t "storefront.component.modals.store-form.the-name-of-your-store"}}
9
+ />
10
+ <InputGroup
11
+ @name={{t "storefront.common.Description"}}
12
+ @value={{@options.store.description}}
13
+ @placeholder={{t "storefront.component.modals.store-form.storefront-description-placeholder"}}
14
+ @helpText={{t "storefront.component.modals.store-form.give-your-store-brief-description"}}
15
+ />
5
16
  <InputGroup @name="Tags">
6
- <TagInput class="form-input" @placeholder="Add tags" @allowSpacesInTags={{true}} @tags={{@options.store.tags}} @addTag={{this.addTag}} @removeTagAtIndex={{this.removeTag}} as |tag|>
17
+ <TagInput
18
+ class="form-input"
19
+ @placeholder={{t "storefront.component.modals.store-form.add-tags-placeholder"}}
20
+ @allowSpacesInTags={{true}}
21
+ @tags={{@options.store.tags}}
22
+ @addTag={{this.addTag}}
23
+ @removeTagAtIndex={{this.removeTag}}
24
+ as |tag|
25
+ >
7
26
  {{tag}}
8
27
  </TagInput>
9
28
  </InputGroup>
10
- <InputGroup @name="Currency">
29
+ <InputGroup @name={{t "storefront.common.currency"}}>
11
30
  <CurrencySelect @value={{@options.store.currency}} @onSelect={{fn (mut @options.store.currency)}} @triggerClass="w-full form-select" />
12
31
  </InputGroup>
13
32
 
14
33
  <div class="store-boolean-settings">
15
34
  <div class="input-group">
16
35
  <Toggle @isToggled={{@options.store.online}} @onToggle={{fn (mut @options.store.online)}}>
17
- <FaIcon @icon="plug" class="text-gray-600 dark:text-gray-400 mx-2" /><span class="dark:text-gray-100 text-sm">Online</span>
36
+ <FaIcon @icon="plug" class="text-gray-600 dark:text-gray-400 mx-2" /><span class="dark:text-gray-100 text-sm">{{t "storefront.common.online"}}</span>
18
37
  </Toggle>
19
38
  </div>
20
39
  </div>
@@ -1,30 +1,40 @@
1
1
  <Modal::Default @modalIsOpened={{@modalIsOpened}} @options={{@options}} @confirm={{@onConfirm}} @decline={{@onDecline}}>
2
2
  <div class="modal-body-container">
3
3
  <div class="grid grid-cols-3 gap-1 text-xs dark:text-gray-100">
4
- <InputGroup @name="Name" @autocomplete="nope" @value={{@options.place.name}} @wrapperClass="col-span-3" />
5
- <InputGroup @name="Street 1" @value={{@options.place.street1}} @wrapperClass="col-span-3">
6
- <AutocompleteInput @value={{@options.place.street1}} @onSelect={{@options.autocomplete}} placeholder="Street 1" class="w-full" as |result|>
4
+ <InputGroup @name={{t "storefront.common.name"}} @autocomplete="nope" @value={{@options.place.name}} @wrapperClass="col-span-3" />
5
+ <InputGroup @name={{t "storefront.common.street-1"}} @value={{@options.place.street1}} @wrapperClass="col-span-3">
6
+ <AutocompleteInput @value={{@options.place.street1}} @onSelect={{@options.autocomplete}} placeholder={{t "storefront.common.street-1"}} class="w-full" as |result|>
7
7
  {{result.address}}
8
8
  </AutocompleteInput>
9
9
  </InputGroup>
10
- <InputGroup @name="Street 2" @autocomplete="nope" @value={{@options.place.street2}} @wrapperClass="col-span-3" />
11
- <InputGroup @name="Neighborhood" @autocomplete="nope" @value={{@options.place.neighborhood}} />
12
- <InputGroup @name="Building" @autocomplete="nope" @value={{@options.place.building}} />
13
- <InputGroup @name="Security Access Code" @autocomplete="nope" @value={{@options.place.security_access_code}} />
14
- <InputGroup @name="Postal Code" @autocomplete="nope" @value={{@options.place.postal_code}} />
15
- <InputGroup @name="City" @autocomplete="nope" @value={{@options.place.city}} />
16
- <InputGroup @name="State" @autocomplete="nope" @value={{@options.place.province}} />
17
- <InputGroup @name="Country" @wrapperClass="col-span-2">
18
- <CountrySelect class="w-full form-input form-select form-datalist" @value={{@options.place.country}} @onChange={{fn (mut @options.place.country)}} placeholder="Country" />
10
+ <InputGroup @name={{t "storefront.component.modals.store-location-form.street-2"}} @autocomplete="nope" @value={{@options.place.street2}} @wrapperClass="col-span-3" />
11
+ <InputGroup @name={{t "storefront.common.neighborhood"}} @autocomplete="nope" @value={{@options.place.neighborhood}} />
12
+ <InputGroup @name={{t "storefront.common.building"}} @autocomplete="nope" @value={{@options.place.building}} />
13
+ <InputGroup @name={{t "storefront.component.modals.store-location-form.security-access-code"}} @autocomplete="nope" @value={{@options.place.security_access_code}} />
14
+ <InputGroup @name={{t "storefront.component.modals.store-location-form.postal-code"}} @autocomplete="nope" @value={{@options.place.postal_code}} />
15
+ <InputGroup @name={{t "storefront.common.city"}} @autocomplete="nope" @value={{@options.place.city}} />
16
+ <InputGroup @name={{t "storefront.common.state"}} @autocomplete="nope" @value={{@options.place.province}} />
17
+ <InputGroup @name={{t "storefront.common.country"}} @wrapperClass="col-span-2">
18
+ <CountrySelect
19
+ class="w-full form-input form-select form-datalist"
20
+ @value={{@options.place.country}}
21
+ @onChange={{fn (mut @options.place.country)}}
22
+ placeholder={{t "storefront.common.country"}}
23
+ />
19
24
  </InputGroup>
20
- <InputGroup @name="Coordinates" @wrapperClass="col-span-2">
21
- <CoordinatesInput @value={{@options.place.location}} @onChange={{@options.updatePlaceCoordinates}} @onGeocode={{@options.autocomplete}} @onInit={{@options.setCoordinatesInput}} />
25
+ <InputGroup @name={{t "storefront.common.coordinates"}} @wrapperClass="col-span-2">
26
+ <CoordinatesInput
27
+ @value={{@options.place.location}}
28
+ @onChange={{@options.updatePlaceCoordinates}}
29
+ @onGeocode={{@options.autocomplete}}
30
+ @onInit={{@options.setCoordinatesInput}}
31
+ />
22
32
  </InputGroup>
23
33
  <div class="col-span-1"></div>
24
- <InputGroup @name="Phone">
34
+ <InputGroup @name={{t "storefront.common.phone"}}>
25
35
  <PhoneInput @value={{@options.place.phone}} @autocomplete="nope" @onInput={{fn (mut @options.place.phone)}} class="form-input w-full" />
26
36
  </InputGroup>
27
- <InputGroup @name="Email" @autocomplete="nope" @value={{@options.place.email}} />
37
+ <InputGroup @name={{t "storefront.common.email"}} @autocomplete="nope" @value={{@options.place.email}} />
28
38
  </div>
29
39
  </div>
30
40
  </Modal::Default>
@@ -1,16 +1,27 @@
1
- <DropdownButton @renderInPlace={{true}} @size="xs" @type="magic" @icon="folder-tree" @iconSize="sm" @text={{this.buttonTitle}} @buttonClass={{concat "w-full truncate w-48" " " @buttonClass}} @buttonWrapperClass={{concat "w-full" " " @buttonWrapperClass}} @wrapperClass={{@wrapperClass}} as |dd|>
1
+ <DropdownButton
2
+ @renderInPlace={{true}}
3
+ @size="xs"
4
+ @type="magic"
5
+ @icon="folder-tree"
6
+ @iconSize="sm"
7
+ @text={{this.buttonTitle}}
8
+ @buttonClass={{concat "w-full truncate w-48" " " @buttonClass}}
9
+ @buttonWrapperClass={{concat "w-full" " " @buttonWrapperClass}}
10
+ @wrapperClass={{@wrapperClass}}
11
+ as |dd|
12
+ >
2
13
  <div role="menu" class="store-selector-dropdown-menu next-dd-menu py-1">
3
14
  <div role="group" class="px-1 overflow-y-scroll max-h-72">
4
15
  {{#if this.isLoading}}
5
16
  <div class="text-sm flex flex-row items-center px-3 py-0.5 border-0 my-1">
6
17
  <Spinner class="mr-2i" />
7
- <span class="dark:text-gray-100 test-sm">Loading...</span>
18
+ <span class="dark:text-gray-100 test-sm">{{t "storefront.common.loading"}}</span>
8
19
  </div>
9
20
  {{else}}
10
21
  {{#if this.selectedCategory}}
11
22
  <a href="javascript:;" class="next-dd-item" role="menuitem" {{on "click" this.loadParentCategories}}>
12
23
  <FaIcon @icon="arrow-left" class="mr-2" />
13
- <span>Back</span>
24
+ <span>{{t "storefront.common.back"}}</span>
14
25
  </a>
15
26
  {{/if}}
16
27
  {{#each this.categories as |category|}}
@@ -20,9 +31,9 @@
20
31
  {{else}}
21
32
  <div class="text-sm flex flex-row items-center px-3 py-0.5 border-0 my-1 truncate">
22
33
  {{#if this.selectedCategory}}
23
- <span>No subcategories for {{this.selectedCategory.name}}</span>
34
+ <span>{{t "storefront.component.network-category-picker.no-subcategory"}} {{this.selectedCategory.name}}</span>
24
35
  {{else}}
25
- <span>No categories for this network</span>
36
+ <span>{{t "storefront.component.network-category-picker.no-categories"}}</span>
26
37
  {{/if}}
27
38
  </div>
28
39
  {{/each}}
@@ -32,7 +43,7 @@
32
43
  <div class="next-dd-menu-seperator"></div>
33
44
  <div role="group" class="px-1">
34
45
  <a href="javascript:;" class="next-dd-item" role="menuitem" {{on "click" (dropdown-fn dd this.onCreateNewCategory)}}>
35
- Create a new category
46
+ {{t "storefront.component.network-category-picker.create-category"}}
36
47
  </a>
37
48
  </div>
38
49
  </div>
@@ -4,7 +4,14 @@
4
4
  <div class="content-panel-header items-center {{@contentPanelHeaderClass}}">
5
5
  <h4 class="font-semibold text-sm dark:text-gray-100">{{day}}</h4>
6
6
  <div>
7
- <Button @icon="calendar-week" @text="Add Hours" @textClass="truncate text-xs" @size="sm" @onClick={{fn this.addHours @subject day}} class="{{@addHoursButtonClass}}" />
7
+ <Button
8
+ @icon="calendar-week"
9
+ @text={{t "storefront.component.schedule-manager.add-hours"}}
10
+ @textClass="truncate text-xs"
11
+ @size="sm"
12
+ @onClick={{fn this.addHours @subject day}}
13
+ class="{{@addHoursButtonClass}}"
14
+ />
8
15
  </div>
9
16
  </div>
10
17
  <div class="content-panel-body {{@contentPanelBodyClass}}">