* Add Translations route and guard it with feature flag. Empty TranslationsList main component to test route.
* Translation list component
* Add translations namespace to js-sdk
* Translations hook
* Avoid incorrectly throwing when updating and locale not included
* Translations bulk editor component v1
* Add batch method to translations namespace in js-sdk
* Protect translations edit route with feature flag
* Handle reference_id search param
* Replace entity_type entity_id for reference reference_id
* Manage translations from product detail page
* Dynamically resolve base hook for retrieving translations
* Fix navigation from outside settings/translations
* Navigation to bulk editor from product list
* Add Translations to various product module types
* Type useVariants hook
* Handle product module entities translations in bulk editor
* Fix categories issue in datagrid due to column clash
* Translations bulk navigation from remaining entities detail pages
* Add remaining bulk editor navigation for list components. Fix invalidation query for variants
* Expandable text cell v1
* Popover approach
* Add *supported_locales.locale to default fields in stores list endpoint
* Make popover more aligned to excell approach
* Correctly tie the focused cell anchor to popover
* Rework translations main component UI
* Fix link def export
* Swap axis for translations datagrid
* Add original column to translations data grid
* Remove is_default store locale from backend
* Remove ldefault locale from ui
* Type
* Add changeset
* Comments
* Remove unused import
* Add translations to admin product categories endpoint allowed fields
* Default locale removal
* Lazy loading with infinite scroll data grid
* Infinite list hook and implementation for products and variants
* Translation bulk editor lazy loaded datagrid
* Prevent scroll when forcing focus, to avoid scrollTop reset on infinite loading
* Confgiure placeholder data
* Cleanup logs and refactor
* Infinite query hooks for translatable entities
* Batch requests for translation batch endpoint
* Clean up
* Update icon
* Add query param validator in settings endpoint
* Settings endpoint param type
* JS sdk methods for translation settings and statistics
* Retrieve translatable fields and entities dynamically. Remove hardcoded information from tranlations list
* Resolve translation aggregate completion dynamically
* Format label
* Resolve bulk editor header label dynamically
* Include type and collection in translations config
* Avoid showing product option and option values in translatable entities list
* Translations
* Make translations bulk editor content columns wider
* Disable hiding Original column in translations bulk editor
* Adjust translations completion styles
* Fix translations config screen
* Locale selector switcher with conditional locale column rendering
* Batch one locale at a time
* Hooks save actions to footer buttons
* Reset dirty state on save
* Dynamic row heights for translations bulk editor. Replace expandable cell for text cell, with additional isMultiLine config
* Make columns take as much responsive width as possible and divide equally
* more padding to avoid unnecessary horizontal scrollbar
* Update statistics graphs
* Translations
* Statistics graphs translations
* Translation, text sizes and weight in stat graphs
* Conditionally show/hide column visibility dropdown in datagrid
* Allow to pass component to place in DataGrid header and use it in translations bulk editor
* Center text regardless of multiLine config
* Apply full height to datagrid cell regardles of multiSelect config
* Colors and fonts
* Handle key down for text area in text cell
* MultilineCell with special keydown handling
* Rework form schema to match new single locale edit flow
* Update created translations to include id, to avoid duplication issue on subsequent calls
* Handle space key for text cells
* Finish hooking up multiline cell with key and mouse events
* Disable remaining buttons when batch is ongoing
* Style updates
* Update style
* Refactor to make form updates and sync/comparison with server data more comprehensive and robust
* Update styles
* Bars and labels alignment
* Add languages tooltip
* Styles and translation
* Navigation update
* Disable edit translations button when no reference count
* Invert colors
---------
Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com>
Co-authored-by: Adrien de Peretti <adrien.deperetti@gmail.com>
CLOSES CORE-1209
This PR just adds the stuff necessary to support refund reasons in the dashboard. It adds the option in the settings tab and allows viewing, creating, editing and deleting refund reasons. I hate to open such a big PR but most of it is copy pasted from the return reasons. Major difference is only the fact that refund reasons don't have a `value` field
* fix: add direction attribute to components and adjust styles for RTL support
* fix(data-grid): comment it out
* Added useDocumentDirection hook
* refactor: Integrate useDocumentDirection hook
* refactor: Standardize direction prop usage across components
* resolve
* fix: resolve build errors
* fix : remove unused useDocument
* Apply RTL styles for some components
* Create smooth-gorillas-hide.md
* refactor: update some styles for RTL support
---------
Co-authored-by: William Bouchard <46496014+willbouch@users.noreply.github.com>
* chore(types, api): support shipping option type api endpoints
* core flows
* api
* typos
* compiler errors
* integration tests
* remove metadata
* changeset
* modify test
* upsert
* change remote query
* minor to patch
* description optional
* chore(dashboard, js-sdk): shipping option type management on admin dashboard
* description optional
* woops my bad
* my bad again
* create and edit
* prettier
* build code from label
* remove metadata route
* remove some translation text that is not used
* remove unsued files
* changeset
* adapt test
* fix test
* suggestion
---------
Co-authored-by: william bouchard <williambouchard@williams-MacBook-Pro.local>
**What**
- Reworks how admin extensions are loaded from plugins.
- Reworks how extensions are managed internally in the dashboard project.
**Why**
- Previously we loaded extensions from plugins the same way we do for extension found in a users application. This being scanning the source code for possible extensions in `.medusa/server/src/admin`, and including any extensions that were discovered in the final virtual modules.
- This was causing issues with how Vite optimizes dependencies, and would lead to CJS/ESM issues. Not sure of the exact cause of this, but the issue was pinpointed to Vite not being able to register correctly which dependencies to optimize when they were loaded through the virtual module from a plugin in `node_modules`.
**What changed**
- To circumvent the above issue we have changed to a different strategy for loading extensions from plugins. The changes are the following:
- We now build plugins slightly different, if a plugin has admin extensions we now build those to `.medusa/server/src/admin/index.mjs` and `.medusa/server/src/admin/index.js` for a ESM and CJS build.
- When determining how to load extensions from a source we follow these rules:
- If the source has a `medusa-plugin-options.json` or is the root application we determine that it is a `local` extension source, and load extensions as previously through a virtual module.
- If it has neither of the above, but has a `./admin` export in its package.json then we determine that it is a `package` extension, and we update the entry point for the dashboard to import the package and pass its extensions a long to the dashboard manager.
**Changes required by plugin authors**
- The change has no breaking changes, but requires plugin authors to update the `package.json` of their plugins to also include a `./admin` export. It should look like this:
```json
{
"name": "@medusajs/plugin",
"version": "0.0.1",
"description": "A starter for Medusa plugins.",
"author": "Medusa (https://medusajs.com)",
"license": "MIT",
"files": [
".medusa/server"
],
"exports": {
"./package.json": "./package.json",
"./workflows": "./.medusa/server/src/workflows/index.js",
"./.medusa/server/src/modules/*": "./.medusa/server/src/modules/*/index.js",
"./modules/*": "./.medusa/server/src/modules/*/index.js",
"./providers/*": "./.medusa/server/src/providers/*/index.js",
"./*": "./.medusa/server/src/*.js",
"./admin": {
"import": "./.medusa/server/src/admin/index.mjs",
"require": "./.medusa/server/src/admin/index.js",
"default": "./.medusa/server/src/admin/index.js"
}
},
}
```
**What**
- Adds Breadcrumb component to all routes that needs breadcrumbs.
- The Breadcrumb components use a combination of loader data and useQuery to ensure that the displayed value is kept up to date if the underlying data is changed via a mutation.
- Also fixes a couple of places where the breadcrumb was not setup correctly.
Resolves CMRC-688
**What**
- Changes all forms to only submit on Cmd/Ctrl + Enter instead of just Enter.
- Cleans up the position of submit/cancel buttons in many FocusModals that still had them in the header.
- Fixes responsiveness of multiple forms
- Removes the SplitView component, and replaces its usages with StackedDrawer/Modal to align the UX across the project.
Resolves CC-103, CC-535
**What**
- Renames /admin-next -> /admin
- Renames @medusajs/admin-sdk -> @medusajs/admin-bundler
- Creates a new package called @medusajs/admin-sdk that will hold all tooling relevant to creating admin extensions. This is currently `defineRouteConfig` and `defineWidgetConfig`, but will eventually also export methods for adding custom fields, register translation, etc.
- cc: @shahednasser we should update the examples in the docs so these functions are imported from `@medusajs/admin-sdk`. People will also need to install the package in their project, as it's no longer a transient dependency.
- cc: @olivermrbl we might want to publish a changelog when this is merged, as it is a breaking change, and will require people to import the `defineXConfig` from the new package instead of `@medusajs/admin-shared`.
- Updates CODEOWNERS so /admin packages does not require a review from the UI team.