toga-ai 1.0.350 → 1.0.351
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.
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
| Doc | Summary | Files |
|
|
4
4
|
|-----|---------|-------|
|
|
5
5
|
| [TOGa Supply (toga2-supply) Architecture](architecture.md) | `toga2-supply` is the **React + Vite frontend** for TOGa Supply — warehouse fulfillment tooling (shipment selection, fulfill & ship against carrier APIs, NetSui | toga2-supply/src/api/toga.ts, toga2-supply/src/pages/ShipmentItems/view/ShipmentItemsPage.tsx, toga2-supply/src/pages/EditShipment/view/EditShipmentPage.tsx, toga2-supply/src/pages/EditShipment/api/UpdateShipmentApi.ts, toga2-supply/src/pages/Shipments/view/components/ShipmentsCardTableForm/ShipmentsCardTableForm.tsx |
|
|
6
|
-
| [Fulfill & Ship](features/fulfill-and-ship.md) | Fulfill & Ship lets a warehouse user select sales-order line items, enter serials, pick a carrier/method, and in one action: create the Item Fulfillment records | toga2-supply/src/pages/ShipmentItems/view/ShipmentItemsPage.tsx, toga2-supply/src/pages/EditShipment/view/EditShipmentPage.tsx, toga2-supply/src/pages/EditShipment/view/components/forms/EditShipmentForm.tsx, toga2-supply/src/pages/EditShipment/view/components/SelectedShipmentItemsTable.tsx, toga2-supply/src/pages/EditShipment/view/helpers/ShipmentDetailsForm/renderEditShipmentFormInput.tsx, toga2-supply/src/pages/EditShipment/viewModel/FIELDS/DUMMYUPDATESHIPMENTFIELDS.json, toga2-supply/src/pages/EditShipment/helpers/ShipmentDetailsForm/renderEditShipmentFormInput.tsx, toga2-supply/tailwind.config.cjs, toga2-supply/src/pages/EditShipment/view/modals/ReturnShippingModal.tsx, toga2-supply/src/components/ui/BaseInput/BaseInput.tsx, toga2-supply/src/pages/EditShipment/api/UpdateShipmentApi.ts, toga2-supply/src/pages/EditShipment/helpers/ShipmentDetailsForm/formatShipmentData.ts, toga2-supply/src/pages/EditShipment/types.ts, toga2-supply/src/pages/Shipments/view/ShipmentsPage.tsx, toga2-supply/src/pages/Shipments/view/components/ShipmentsCardTableForm/ShipmentsCardTableForm.tsx, toga2-supply/src/pages/Shipments/api/ShipmentsApi.ts, toga2-supply/src/pages/Shipments/types.ts, toga2-supply/src/pages/FulfilledShipments/view/FulfilledShipmentsPage.tsx, toga2-supply/src/components/ui/CardTable/CardTable.tsx, toga2-supply/src/components/ui/CardTable/types.ts, toga2-supply/src/assets/pen-line.svg, _underscore/Model/Client/ItemFulfillment.php, _underscore/Trait/Netsuite/ItemFulfillment.php, _underscore/Component/Library/Carriers/Ups/Ups.php |
|
|
6
|
+
| [Fulfill & Ship](features/fulfill-and-ship.md) | Fulfill & Ship lets a warehouse user select sales-order line items, enter serials, pick a carrier/method, and in one action: create the Item Fulfillment records | toga2-supply/src/pages/ShipmentItems/view/ShipmentItemsPage.tsx, toga2-supply/src/pages/EditShipment/view/EditShipmentPage.tsx, toga2-supply/src/pages/EditShipment/view/components/forms/EditShipmentForm.tsx, toga2-supply/src/pages/EditShipment/view/components/SelectedShipmentItemsTable.tsx, toga2-supply/src/pages/EditShipment/view/helpers/ShipmentDetailsForm/renderEditShipmentFormInput.tsx, toga2-supply/src/pages/EditShipment/viewModel/FIELDS/DUMMYUPDATESHIPMENTFIELDS.json, toga2-supply/src/pages/EditShipment/helpers/ShipmentDetailsForm/renderEditShipmentFormInput.tsx, toga2-supply/tailwind.config.cjs, toga2-supply/src/pages/EditShipment/view/modals/ReturnShippingModal.tsx, toga2-supply/src/styles/index.scss, toga2-supply/src/components/ui/BaseInput/BaseInput.tsx, toga2-supply/src/pages/EditShipment/api/UpdateShipmentApi.ts, toga2-supply/src/pages/EditShipment/helpers/ShipmentDetailsForm/formatShipmentData.ts, toga2-supply/src/pages/EditShipment/types.ts, toga2-supply/src/pages/Shipments/view/ShipmentsPage.tsx, toga2-supply/src/pages/Shipments/view/components/ShipmentsCardTableForm/ShipmentsCardTableForm.tsx, toga2-supply/src/pages/Shipments/api/ShipmentsApi.ts, toga2-supply/src/pages/Shipments/types.ts, toga2-supply/src/pages/FulfilledShipments/view/FulfilledShipmentsPage.tsx, toga2-supply/src/components/ui/CardTable/CardTable.tsx, toga2-supply/src/components/ui/CardTable/types.ts, toga2-supply/src/assets/pen-line.svg, _underscore/Model/Client/ItemFulfillment.php, _underscore/Trait/Netsuite/ItemFulfillment.php, _underscore/Component/Library/Carriers/Ups/Ups.php |
|
|
7
7
|
| [AWS Amplify Build & Deploy (non-prod environments)](workflows/amplify-build-and-deploy.md) | How `toga2-supply` (React + Vite) builds and deploys on **AWS Amplify**. | toga2-supply/amplify.yml, toga2-supply/.gitattributes, toga2-supply/.github/workflows/sync-stage-environments.yml, toga2-supply/.env.qc-security |
|
|
@@ -18,6 +18,7 @@ files:
|
|
|
18
18
|
- toga2-supply/src/pages/EditShipment/helpers/ShipmentDetailsForm/renderEditShipmentFormInput.tsx
|
|
19
19
|
- toga2-supply/tailwind.config.cjs
|
|
20
20
|
- toga2-supply/src/pages/EditShipment/view/modals/ReturnShippingModal.tsx
|
|
21
|
+
- toga2-supply/src/styles/index.scss
|
|
21
22
|
- toga2-supply/src/components/ui/BaseInput/BaseInput.tsx
|
|
22
23
|
- toga2-supply/src/pages/EditShipment/api/UpdateShipmentApi.ts
|
|
23
24
|
- toga2-supply/src/pages/EditShipment/helpers/ShipmentDetailsForm/formatShipmentData.ts
|
|
@@ -187,6 +188,27 @@ bare string** — see the gotcha below before wiring a new select field.
|
|
|
187
188
|
(`onBlur` when `field.isCurrency`). Return modal (`ReturnShippingModal.tsx`): compact selects
|
|
188
189
|
vertically centered; Carrier Account # widened to `w-[172px]` to match Carrier.
|
|
189
190
|
|
|
191
|
+
### Edit Return Label modal — searchable Addressee combobox + discard guard (2026-07-15)
|
|
192
|
+
|
|
193
|
+
`ReturnShippingModal.tsx`:
|
|
194
|
+
- **Addressee is a searchable combobox built on a native `<input list>` + `<datalist>`** of
|
|
195
|
+
warehouse/location options — typing filters the list (Chromium does a substring "contains" match;
|
|
196
|
+
Firefox only prefix-matches) and **custom free text is still allowed**; selecting a known option
|
|
197
|
+
prefills the address via `applyWarehouse`. Prefer this native pattern over react-select when free
|
|
198
|
+
text plus suggestions are both wanted — but mind the two gotchas below.
|
|
199
|
+
- **Backdrop-click discard guard.** `BaseModal` calls its `onClose` prop on backdrop click, which
|
|
200
|
+
would silently discard unsaved edits. Pass a **guarded** handler to `BaseModal`'s `onClose`
|
|
201
|
+
(`if (formMethods.formState.isDirty) return; onClose();`) so an accidental outside click can't
|
|
202
|
+
drop a dirty form, while **Cancel and the header X still call the real `onClose`** to close/discard
|
|
203
|
+
explicitly. Reuse this pattern for any BaseModal wrapping an editable form.
|
|
204
|
+
|
|
205
|
+
### Shared checkbox restyled to the Figma design-system spec (2026-07-15)
|
|
206
|
+
|
|
207
|
+
`BaseInput.tsx`'s checkbox now matches the Figma checkbox component: **16px** (was 20px),
|
|
208
|
+
`rounded-sm`, unchecked border `navy-300`, checked fill `supply-blue-400` (`#3F5DCA`, the primary),
|
|
209
|
+
12px check glyph. This is the **shared** checkbox, so the change applies **app-wide**, not just to
|
|
210
|
+
the shipment forms — audit other consumers when touching it.
|
|
211
|
+
|
|
190
212
|
## Planned direction — "Fulfill & Ship" from an existing Item Fulfillment (future, Eric)
|
|
191
213
|
|
|
192
214
|
A **third entry mode** is planned (distinct from Select-Items-create and the pencil-edit): a
|
|
@@ -221,7 +243,27 @@ the call 403s and returns no label.
|
|
|
221
243
|
|
|
222
244
|
## Gotchas / known issues
|
|
223
245
|
|
|
224
|
-
- **⚠
|
|
246
|
+
- **⚠ Native `<datalist>` renders its OWN dropdown arrow, un-hideable by Tailwind.** An
|
|
247
|
+
`<input list>` combobox (the Edit Return Label Addressee) shows a **second dark arrow** (the
|
|
248
|
+
webkit calendar-picker indicator) that a Tailwind arbitrary variant can't reliably hide. Kill it
|
|
249
|
+
with a **real global CSS rule** in the source stylesheet
|
|
250
|
+
`src/styles/index.scss` (imported by `main.tsx`):
|
|
251
|
+
`input[list]::-webkit-calendar-picker-indicator { display: none !important; }`.
|
|
252
|
+
**Edit `index.scss`, NOT `index.css`** — `index.css` is compiled output and will be overwritten.
|
|
253
|
+
Also set **`autoComplete="off"`** on the input or the browser's address-autofill popup
|
|
254
|
+
("Saved data / Manage personal info") overlaps and fights the datalist.
|
|
255
|
+
- **⚠ A `className` template literal must keep the trailing space before `${...}`.** `border ${cond
|
|
256
|
+
? a : b}` is correct; `border${cond ? a : b}` concatenates into an invalid single class
|
|
257
|
+
(e.g. `borderborder-navy-300`) and the utility silently no-ops. Concrete failure: the `BaseInput`
|
|
258
|
+
checkbox's unchecked border disappeared because the space was dropped. Watch this whenever
|
|
259
|
+
conditional classes are appended to a static base class.
|
|
260
|
+
- **⚠ `justify-between` + `clamp()` gaps are frozen when the container is a FIXED width.** The Update
|
|
261
|
+
Info field row uses `gap-x-[clamp(2px,1vw,50px)]` with `justify-between`, but the card was a fixed
|
|
262
|
+
`w-[1820px]`, so `justify-between` distributed columns across a constant width and the gaps never
|
|
263
|
+
changed on resize. Fix: make the card `w-full max-w-[1820px]` and the form section `w-full` so the
|
|
264
|
+
width tracks the viewport and the clamp'd gaps grow/shrink with it. Note `justify-between` does
|
|
265
|
+
**not** cap the max gap at 50px on very wide screens — the `clamp` only *floors* at 2px; the max
|
|
266
|
+
applies until columns are pushed to the edges. (`EditShipmentPage.tsx`.) — a class used ONLY in `viewModel/FIELDS/*.json`
|
|
225
267
|
is silently inert.** The config-driven forms author Tailwind utility classes inside the field JSON
|
|
226
268
|
(e.g. `DUMMYUPDATESHIPMENTFIELDS.json`), but `tailwind.config.cjs` `content` globs only scan
|
|
227
269
|
`./src/**/*.{js,ts,jsx,tsx}` (+ `index.html` + toga-blox dist) — **not `.json`**. So a class used
|
|
@@ -417,6 +459,18 @@ not the base `_Model_Client_ItemFulfillment`. Tested with GroWrk; UPS support wa
|
|
|
417
459
|
for Compass and is not yet in prod.
|
|
418
460
|
|
|
419
461
|
## Change history
|
|
462
|
+
- 2026-07-15 — TRUE-79191: made the Edit Return Label **Addressee a searchable combobox** (native
|
|
463
|
+
`<input list>` + `<datalist>`, filters + allows custom text, prefills via `applyWarehouse`); added a
|
|
464
|
+
**backdrop-click discard guard** (guarded `BaseModal onClose` on `formState.isDirty`); restyled the
|
|
465
|
+
**shared `BaseInput` checkbox** to the Figma spec (16px, navy-300 border, `supply-blue-400` fill,
|
|
466
|
+
app-wide). Documented four durable gotchas: native `<datalist>`'s un-hideable arrow (hide via a
|
|
467
|
+
real global rule in `src/styles/index.scss`, not the compiled `index.css`) + `autoComplete="off"`
|
|
468
|
+
to stop autofill overlap; the `className` **trailing-space-before-`${...}`** footgun (dropped space
|
|
469
|
+
→ invalid concatenated class → silent no-op, killed the checkbox border); and `justify-between` +
|
|
470
|
+
`clamp()` **gaps frozen by a fixed-width card** (fix: `w-full max-w-[1820px]` so width tracks the
|
|
471
|
+
viewport). Remaining Figma polish (5-col address grid, Signature default object, declared-cost
|
|
472
|
+
2-decimal rehydrate, Clear All wiring, residential alignment, footer/divider spacing) was cosmetic
|
|
473
|
+
— no doc change. (mhammontree)
|
|
420
474
|
- 2026-07-15 — TRUE-79191: unified the **dropdown chevron glyph** across the compact selects — added a
|
|
421
475
|
`CompactDropdownIndicator` (FA `chevronDown`) to `BaseInput` and wired it into both react-select
|
|
422
476
|
`components` blocks **only when `compact` is true**, so the react-select caret matches the native
|
package/package.json
CHANGED