{"_id":"@cyco77/pptb-usersettings-utiliy","_rev":"5-1166001b7f85e69f8aa1645ceff21a25","name":"@cyco77/pptb-usersettings-utiliy","dist-tags":{"latest":"0.5.0"},"versions":{"0.1.0":{"name":"@cyco77/pptb-usersettings-utiliy","version":"0.1.0","author":{"name":"Lars Hildebrandt"},"license":"MIT","_id":"@cyco77/pptb-usersettings-utiliy@0.1.0","maintainers":[{"name":"cyco77","email":"lars.hildebrandt@tuleva.de"}],"dist":{"shasum":"740dc56c7a5496c7795a8ec45f60cb6602006dd6","tarball":"https://registry.npmjs.org/@cyco77/pptb-usersettings-utiliy/-/pptb-usersettings-utiliy-0.1.0.tgz","fileCount":8,"integrity":"sha512-wkGraca4qw7Dil4icgRoromk98uQg4Co9o0drkpgL7EYbgLtPuGdX6mBhWk4b4pS3aHK0sPeJvMfkToPaxX9Ig==","signatures":[{"sig":"MEQCIEsZ7TbBj/ezn3jPhcZlMduf5F3X+IYcPsJdgizdPYWCAiA9OtlDHdhL3TyUViVq4HXrezMPzAgGBo4WTthXRXydzA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":784229},"main":"index.html","engines":{"node":">=18.0.0"},"gitHead":"959b7dc4f08a1f308822b27f74ed844558edd8fe","scripts":{"dev":"vite","build":"tsc && vite build","watch":"vite build --watch","preview":"vite preview","finalize-package":"npm shrinkwrap"},"_npmUser":{"name":"cyco77","email":"lars.hildebrandt@tuleva.de"},"_npmVersion":"10.9.4","description":"Your tool to update user settings in Dataverse","directories":{},"displayName":"User Settings Utility","_nodeVersion":"22.21.1","dependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@fluentui/react-icons":"^2.0.314","@fluentui/react-components":"^9.72.7"},"_hasShrinkwrap":true,"devDependencies":{"vite":"^7.1.11","typescript":"^5.6.3","@pptb/types":"^1.0.1","@types/react":"^18.3.12","@types/react-dom":"^18.3.1","@vitejs/plugin-react":"^4.3.4"},"_npmOperationalInternal":{"tmp":"tmp/pptb-usersettings-utiliy_0.1.0_1766363445112_0.053911416921443855","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@cyco77/pptb-usersettings-utiliy","version":"0.2.0","author":{"name":"Lars Hildebrandt"},"license":"MIT","_id":"@cyco77/pptb-usersettings-utiliy@0.2.0","maintainers":[{"name":"cyco77","email":"lars.hildebrandt@tuleva.de"}],"dist":{"shasum":"b31270e70f3dccf3d426b93658158c921687cd57","tarball":"https://registry.npmjs.org/@cyco77/pptb-usersettings-utiliy/-/pptb-usersettings-utiliy-0.2.0.tgz","fileCount":8,"integrity":"sha512-UDqOXCabUv4Cu1pKr9Zkqq06gXdMG8+1nPCMFXhxTRzmP9m3X7KWIz00JBG8t8/z6xAbseGJ0fMMSLp+TtHpCw==","signatures":[{"sig":"MEUCIDmRYQ4XZcCTmlBvHnR62Xcs6sGx5ffSvHifSgr594ncAiEAtujCKULREJOqk+VqEPOBRsodXqrNB71zQDL/lkQL2fw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":784220},"main":"index.html","engines":{"node":">=18.0.0"},"gitHead":"d56d19c6fc4c1e6add25b8f6fb59d81907b4d137","scripts":{"dev":"vite","build":"tsc && vite build","watch":"vite build --watch","preview":"vite preview","finalize-package":"npm shrinkwrap"},"_npmUser":{"name":"cyco77","email":"lars.hildebrandt@tuleva.de"},"_npmVersion":"10.9.4","description":"Your tool to update user settings in Dataverse","directories":{},"displayName":"User Settings Utility","_nodeVersion":"22.21.1","dependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@fluentui/react-icons":"^2.0.314","@fluentui/react-components":"^9.72.7"},"_hasShrinkwrap":true,"devDependencies":{"vite":"^7.1.11","typescript":"^5.6.3","@pptb/types":"^1.0.1","@types/react":"^18.3.12","@types/react-dom":"^18.3.1","@vitejs/plugin-react":"^4.3.4"},"_npmOperationalInternal":{"tmp":"tmp/pptb-usersettings-utiliy_0.2.0_1766698784620_0.2832688932903855","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@cyco77/pptb-usersettings-utiliy","version":"0.3.0","author":{"name":"Lars Hildebrandt"},"license":"MIT","_id":"@cyco77/pptb-usersettings-utiliy@0.3.0","maintainers":[{"name":"cyco77","email":"lars.hildebrandt@tuleva.de"}],"dist":{"shasum":"b59fe65c81126126442600021e1aaa78aae6f17c","tarball":"https://registry.npmjs.org/@cyco77/pptb-usersettings-utiliy/-/pptb-usersettings-utiliy-0.3.0.tgz","fileCount":8,"integrity":"sha512-tIlAFKCF6DHDqvCfnK/OghezjbbjYL5xzqBvjko3CMR4PnJZKNin58jEhVgnuJboub17SoWZN7e5OLGR42LD2g==","signatures":[{"sig":"MEUCIQDUb3xTHGgIqUpMp6NVaH0Nd2ccsYBBGWjZe9V2+YM0TgIgEjCKEpwqQI0AUJEY2fB7as9vmg32omHg3UPSNDFq+nc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":784337},"main":"index.html","engines":{"node":">=18.0.0"},"gitHead":"5fb202c509bef0566951dc4d26fa8cb20f09148a","scripts":{"dev":"vite","build":"tsc && vite build","watch":"vite build --watch","preview":"vite preview","finalize-package":"npm shrinkwrap"},"_npmUser":{"name":"cyco77","email":"lars.hildebrandt@tuleva.de"},"_npmVersion":"10.9.4","description":"Your tool to update user settings in Dataverse","directories":{},"displayName":"User Settings Utility","_nodeVersion":"22.21.1","dependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@fluentui/react-icons":"^2.0.314","@fluentui/react-components":"^9.72.7"},"_hasShrinkwrap":true,"devDependencies":{"vite":"^7.1.11","typescript":"^5.6.3","@pptb/types":"^1.0.1","@types/react":"^18.3.12","@types/react-dom":"^18.3.1","@vitejs/plugin-react":"^4.3.4"},"_npmOperationalInternal":{"tmp":"tmp/pptb-usersettings-utiliy_0.3.0_1767611464252_0.6111855466783569","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@cyco77/pptb-usersettings-utiliy","version":"0.4.0","author":{"name":"Lars Hildebrandt"},"license":"MIT","_id":"@cyco77/pptb-usersettings-utiliy@0.4.0","maintainers":[{"name":"cyco77","email":"lars.hildebrandt@tuleva.de"}],"dist":{"shasum":"97c72bfc603f0e195f4611f4550377c15687e269","tarball":"https://registry.npmjs.org/@cyco77/pptb-usersettings-utiliy/-/pptb-usersettings-utiliy-0.4.0.tgz","fileCount":8,"integrity":"sha512-dsBDFWtuZMIurw60u3ZFD4mQ2pDt9S6uVJhcI6zcsQYtMOoqx8S/0/QLSWk0sKN6ihGFMD+c3EQnhrGjOkNdmA==","signatures":[{"sig":"MEQCIFmjxh1Ds1q/ZaXBONdeT/k5djoJhv4gC30nDEgKIWE1AiBfqfzCa4Jzz7gCKQtjlkozrPCTyxD8mPoJz0+h6LspSQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":784337},"main":"index.html","engines":{"node":">=18.0.0"},"gitHead":"0f69b1ec9a818ecc7f733b575f10d9aeffac0b4f","scripts":{"dev":"vite","build":"tsc && vite build","watch":"vite build --watch","preview":"vite preview","finalize-package":"npm shrinkwrap"},"_npmUser":{"name":"cyco77","email":"lars.hildebrandt@tuleva.de"},"_npmVersion":"10.9.4","description":"Your tool to update user settings in Dataverse","directories":{},"displayName":"User Settings Utility","_nodeVersion":"22.21.1","dependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@fluentui/react-icons":"^2.0.314","@fluentui/react-components":"^9.72.7"},"_hasShrinkwrap":true,"devDependencies":{"vite":"^7.1.11","typescript":"^5.6.3","@pptb/types":"^1.0.1","@types/react":"^18.3.12","@types/react-dom":"^18.3.1","@vitejs/plugin-react":"^4.3.4"},"_npmOperationalInternal":{"tmp":"tmp/pptb-usersettings-utiliy_0.4.0_1767627097362_0.33849132651311464","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@cyco77/pptb-usersettings-utiliy","version":"0.5.0","displayName":"User Settings Utility","description":"Your tool to update user settings in Dataverse","main":"index.html","author":{"name":"Lars Hildebrandt"},"license":"MIT","engines":{"node":">=18.0.0"},"scripts":{"build":"tsc && vite build","dev":"vite","watch":"vite build --watch","preview":"vite preview","finalize-package":"npm shrinkwrap"},"dependencies":{"@fluentui/react-components":"^9.72.7","@fluentui/react-icons":"^2.0.314","react":"^18.3.1","react-dom":"^18.3.1"},"devDependencies":{"@pptb/types":"^1.2.0","@types/react":"^18.3.12","@types/react-dom":"^18.3.1","@vitejs/plugin-react":"^4.3.4","typescript":"^5.6.3","vite":"^7.1.11"},"_id":"@cyco77/pptb-usersettings-utiliy@0.5.0","gitHead":"aecb380979a5a9deee959efebcc622a7484c2fb4","_nodeVersion":"22.21.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-0KHysjHlTWOfY+3MmaQFoMFv7sLugYtis9XeLu+ba0EBahTcwl22sk9znXqRFUEt8NtEGJiWMI8WwC0CWzUpkw==","shasum":"4e357a10e16aec376ceaa9cf824ff406a1c1a1f0","tarball":"https://registry.npmjs.org/@cyco77/pptb-usersettings-utiliy/-/pptb-usersettings-utiliy-0.5.0.tgz","fileCount":8,"unpackedSize":785703,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDvu+DyxYPDMwKrXHfr+WOSP9MmISC1CYFYLRZ27if0sAIgDdYk4SliuinhqtJx/pEhgv832gjRW762LdN5bzDH30M="}]},"_npmUser":{"name":"cyco77","email":"lars.hildebrandt@tuleva.de"},"directories":{},"maintainers":[{"name":"cyco77","email":"lars.hildebrandt@tuleva.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pptb-usersettings-utiliy_0.5.0_1773228958798_0.6946890922754902"},"_hasShrinkwrap":true}},"time":{"created":"2025-12-22T00:30:44.937Z","modified":"2026-03-11T11:35:59.083Z","0.1.0":"2025-12-22T00:30:45.381Z","0.2.0":"2025-12-25T21:39:44.791Z","0.3.0":"2026-01-05T11:11:04.444Z","0.4.0":"2026-01-05T15:31:37.558Z","0.5.0":"2026-03-11T11:35:58.974Z"},"author":{"name":"Lars Hildebrandt"},"license":"MIT","description":"Your tool to update user settings in Dataverse","maintainers":[{"name":"cyco77","email":"lars.hildebrandt@tuleva.de"}],"readme":"# User Settings Utility\n\n<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/cyco77/pptb-user-security-utility/HEAD/icon/user-team-security_small.png\" alt=\"User Settings Utility Logo\" width=\"314\" height=\"150\">\n</p>\n\n<p align=\"center\">\n  A Power Platform Toolbox (PPTB) plugin for viewing and updating Dynamics 365 / Dataverse user settings. This tool provides an intuitive interface to manage user settings across multiple users simultaneously.\n</p>\n\n## Screenshots\n\n### Dark Theme\n\n![User Settings Utility - Dark Theme](https://raw.githubusercontent.com/cyco77/pptb-user-security-utility/HEAD/screenshots/main_dark.png)\n\n## Features\n\n### Core Capabilities\n\n- 👥 **User Browser** - View all active system users in your Dataverse environment\n- ⚙️ **User Settings Management** - View and edit detailed user settings\n- 🔄 **Bulk Updates** - Update settings for multiple users at once\n- 🔍 **Advanced Filtering** - Filter users by name, email, or business unit\n- 📊 **Sortable Data Grid** - Sort users by any column with multi-select support\n- 💾 **Save Changes** - Track and save pending changes with visual feedback\n- 🎨 **Theme Support** - Automatic light/dark theme switching based on PPTB settings\n\n### Editable User Settings\n\nThe tool supports viewing and editing various user settings including:\n\n- **Localization**: UI Language, Help Language, Currency, Timezone, Format (locale)\n- **Navigation**: Default Homepage Area, Subarea, and Dashboard\n- **Display**: Paging Limit, Calendar Type, Default Calendar View, Week Numbers\n- **Regional Settings**: Date/Time formats, Number formats, Currency formats\n- **Email & Sync**: Email filtering, Sync intervals, Contact sync settings\n- **Advanced**: Various personalization and feature toggles\n\n### Technical Stack\n\n- ✅ React 18 with TypeScript\n- ✅ Fluent UI React Components for consistent Microsoft design\n- ✅ Vite for fast development and optimized builds\n- ✅ Power Platform Toolbox API integration\n- ✅ Dataverse API for querying and updating user settings\n\n## Structure\n\n```\npptb-user-settings-utility/\n├── src/\n│   ├── components/\n│   │   ├── Filter.tsx                 # Business unit and text filtering\n│   │   ├── Overview.tsx               # Main container component\n│   │   ├── SystemuserDetails.tsx      # User details and settings editor\n│   │   ├── SystemuserGrid.tsx         # Data grid for system users\n│   │   └── usersettings/              # User settings components\n│   │       ├── FieldInfoTooltip.tsx   # Tooltip for field info\n│   │       ├── FieldRenderers.tsx     # Field rendering utilities\n│   │       ├── SettingsSection.tsx    # Settings section component\n│   │       ├── UsersettingsTab.tsx    # Main settings tab\n│   │       └── ...                    # Additional utilities\n│   ├── hooks/\n│   │   └── useToolboxAPI.ts           # PPTB API hooks\n│   ├── mappers/\n│   │   ├── businessunitMapper.ts      # Business unit data mapping\n│   │   ├── formatMapper.ts            # Format/locale data mapping\n│   │   ├── languageMapper.ts          # Language data mapping\n│   │   ├── sitemapMapper.ts           # Sitemap data mapping\n│   │   ├── systemuserMapper.ts        # System user data mapping\n│   │   ├── timezoneMapper.ts          # Timezone data mapping\n│   │   └── usersettingsMapper.ts      # User settings data mapping\n│   ├── services/\n│   │   └── dataverseService.ts        # Dataverse API queries\n│   ├── types/\n│   │   ├── businessunit.ts            # Business unit type definitions\n│   │   ├── currency.ts                # Currency type definitions\n│   │   ├── dashboard.ts               # Dashboard type definitions\n│   │   ├── format.ts                  # Format type definitions\n│   │   ├── language.ts                # Language type definitions\n│   │   ├── pendingChanges.ts          # Pending changes type definitions\n│   │   ├── sitemap.ts                 # Sitemap type definitions\n│   │   ├── systemuser.ts              # System user type definitions\n│   │   ├── timezone.ts                # Timezone type definitions\n│   │   └── usersettings.ts            # User settings type definitions\n│   ├── App.tsx                        # Main application component\n│   ├── main.tsx                       # Entry point\n│   └── index.css                      # Global styling\n├── dist/                              # Build output\n├── icon/                              # Tool icons\n├── index.html\n├── package.json\n├── tsconfig.json\n└── vite.config.ts\n```\n\n## Installation\n\n### Prerequisites\n\n- Node.js >= 18.0.0\n- npm or yarn\n- Power Platform Toolbox installed\n\n### Setup\n\n1. Clone the repository:\n\n```bash\ngit clone <repository-url>\ncd pptb-user-settings-utility\n```\n\n2. Install dependencies:\n\n```bash\nnpm install\n```\n\n## Development\n\n### Development Server\n\nStart development server with HMR:\n\n```bash\nnpm run dev\n```\n\nThe tool will be available at \\`http://localhost:5173\\`\n\n### Watch Mode\n\nBuild the tool in watch mode for continuous updates:\n\n```bash\nnpm run watch\n```\n\n### Production Build\n\nBuild the optimized production version:\n\n```bash\nnpm run build\n```\n\nThe output will be in the \\`dist/\\` directory.\n\n### Preview Build\n\nPreview the production build locally:\n\n```bash\nnpm run preview\n```\n\n## Usage\n\n### In Power Platform Toolbox\n\n1. Build the tool:\n\n```bash\n   npm run build\n```\n\n2. Package the tool (creates npm-shrinkwrap.json):\n\n```bash\n   npm run finalize-package\n```\n\n3. Install in Power Platform Toolbox using the PPTB interface\n\n4. Connect to a Dataverse environment\n\n5. Launch the tool to view and manage user settings\n\n### User Interface\n\n#### Filter Section\n\n- **Business Unit Dropdown**: Filter users by their business unit\n- **Search Box**: Real-time search across user name, email, and business unit\n\n#### User Grid\n\n- Click column headers to sort\n- Use checkboxes to select one or multiple users\n- Columns: Full Name, Email, Business Unit, System User ID\n\n#### Settings Panel\n\n- View and edit settings for selected user(s)\n- When multiple users are selected:\n  - Fields with matching values show the common value\n  - Fields with different values show \"No change\" placeholder\n- Pending changes are tracked and displayed\n- Click \"Save\" to apply changes to all selected users\n\n## API Usage\n\nThe tool uses the Power Platform Toolbox and Dataverse APIs:\n\n### Connection Management\n\n```typescript\n// Get current connection\nconst connection = await window.toolboxAPI.getConnection();\n```\n\n### Data Queries\n\n```typescript\n// Query system users\nconst users = await window.dataverseAPI.queryData(\n  \"systemusers?$select=systemuserid,fullname,internalemailaddress\"\n);\n\n// Query user settings\nconst settings = await window.dataverseAPI.queryData(\n  \\`usersettingscollection?$filter=systemuserid eq '\\${userId}'\\`\n);\n```\n\n### Notifications\n\n```typescript\n// Show notification\nawait window.toolboxAPI.utils.showNotification({\n  title: \"Success\",\n  body: \"Settings updated successfully\",\n  type: \"success\",\n  duration: 3000,\n});\n```\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\n## Author\n\nLars Hildebrandt\n","readmeFilename":"README.md"}